王爽<汇编语言>实验4(2)的题目能不能这样答?
本帖最后由 Push 于 2012-2-3 14:18 编辑(2) 编程,向内存0:200~0:23F依次传送数据0~63(3FH),程序中只能使用9条指令,9条指令中包括“mov ax,4c00h”和“int 21h”。
程序如下:
assume cs:code
code segment
mov ax,0020h
mov ds,ax
mov bx,0
mov cx,3f
s: add ,1
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
你这段代码的循环处肯定不会成功。
add ,0
add ,1
一直给ds:bx 20:0 处的数据加一,循环64次,偏移地址是不会改变的
我觉得没写传送顺序的话,可以这么写。
assume cs:code
code segment
mov ax,0020
mov ds,ax
mov bx,3f
mov cx,3f
s: subbx,1
mov ,cx
loop s
mov ax,4c00h
int 21h
code ends
end
写错了勿喷,我没测试的、 eons 发表于 2012-1-23 08:00 static/image/common/back.gif
我觉得没写传送顺序的话,可以这么写。
assume cs:code
code segment
1~63是按顺序的吧...你说的也对,不能用add他是每个位置依次传输1、2、3、4......的,就觉得9条指令好限制,怎么写都不够多写个inc bx
我就想试试能不能找个不同的方法 试试不就知道了,DEBUG一下 题目上已经说是依次了,所以说被放入数据的地址一定是递增的,所以BX=BX+1才可以。楼主这个BX,也就是偏移地址不会递增,相当于原位放数据,这样是没用的。 tangqy 发表于 2012-1-29 02:08 static/image/common/back.gif
题目上已经说是依次了,所以说被放入数据的地址一定是递增的,所以BX=BX+1才可以。楼主这个BX,也就是偏移地 ...
楼主其中不是有inc bx,1,怎么不是bx=bx+1;偏移地址不是递增吗?
{:10_256:}跟着大家学习学习 错的地方太多了,十万八千里啊……
自己调试吧
中间还有一条指令是根本不存在的(非法指令)
页:
[1]