|

楼主 |
发表于 2011-12-23 22:03:19
|
显示全部楼层
小熊猫party 发表于 2011-12-23 22:00
请问你想了解什么问题我不太明白,没错你运行刚才那些是正确的。
第(2)题要求用9条指令完成“向内存 0:200-0:23f 依次传送数据 0-63(3EFH)”,答案给出如下:
assume cs:code
code segment
mov ax,0020h
mov ds,ax
mov bl,0
mov cx,40h
s: mov [bx],bl
inc bl
loop s
mov ax,4c00h
int 21h
code ends
end
为什么第三行指令中是mov bl,0,而不是mov bx,0?如果是前者的话,岂不是bx的高八位没有被定义为0?那么进入循环后mov [bx],bl中的bx岂不是有可能不为0,从而导致传送的数据不是从0:200(0200:0)开始保存?
比如:假设初始状态给bx的值为1111,经过mov bl,0指令后,bx变为1100,再执行s: mov [bx],bl指令,此时的意思应该为把bl中的值存到0200:1100单元的内存中去,而不是按题意说的存到0200:0000单元的内存中去!因此鄙人觉得第三条指令应为:mov bx,0。求大虾指点!!! |
|