当前位置: 代码迷 >> 汇编语言 >> 学习loop,遇到关于一个sub的有关问题,本人初学者,求高手
  详细解决方案

学习loop,遇到关于一个sub的有关问题,本人初学者,求高手

热度:1706   发布时间:2013-02-26 00:00:00.0
学习loop,遇到关于一个sub的问题,本人菜鸟,求高手
目的是将0000:0200-0000:023f依次填上0-63的六十四个数
源代码如下:
assume cs:code

code segment
mov ax,0000H
mov ds,ax

mov bx,0240H
mov cx,64
s: mov [bx],cx
sub bx,1
loop s
mov ax,4c00H
int 21H
code ends
end
做出来实现的是仅仅将循环的最后一位赋值了,其余都被清零了,费解,费解啊,求高手



------解决方案--------------------------------------------------------
探讨
引用:

sub bx,1 ;这里有问题额,bx 16位,那样存高位都是0

还是不明白诶,bx这里只是一个偏移地址,sub不会是将ds:bx中的值给赋值了吧

------解决方案--------------------------------------------------------
探讨

引用:

sub bx,1 ;这里有问题额,bx 16位,那样存高位都是0

还是不明白诶,bx这里只是一个偏移地址,sub不会是将ds:bx中的值给赋值了吧

------解决方案--------------------------------------------------------
你应该进行字节操作,但mov [bx],cx是字操作,而cx的高字节为0,会覆盖之前所传的值。
这样改:
mov [bx], cl
在masm中编译运行,结果正确。
  相关解决方案