为什么这里填写inc cx啊
本帖最后由 loop 于 2011-5-29 23:30 编辑补全程序,利用loop指令,实现在内存2000H段中查找第一个值为0的byte,找到后,将它的偏移地址存储在dx中。
assume cs:code
code segment
start:
mov ax,2000h
mov ds,ax
mov bx,0
s:
mov cl,
mov ch,0
inc cx 这里为什么填写inc cx
inc bx
loop s
ok:
dec bx
mov dx,bx
mov ax,4c00h
int 21h
code ends
end start
本帖最后由 陌路狂奔 于 2011-5-23 00:03 编辑
当前面索引到0时,CX是=0的而LOOP循环前,CX=CX-1,如果结果为0则退出循环执行下面的语句。CX不自增1的话,0-1会等于FFFF
我觉得换成JCXZ OK也是可行的 把数据段的数据依次按字节读出,并把值传给CL
读到值为0的数据,这时CX就为0,说明找到了
这时候应该停止循环,只有当CX为1时,这次循环才会停止,所以要INC CX
INC CL的效果是一样的
但楼上所说的JCXZ OK不对,因为把值给DX时,BX有减1的操作,所以,不能在那儿跳走
要把INC BX的操作走完后才能转向OK,否则最后储存的地址会比实际为0的地址少1
页:
[1]