补全编程,利用jcxz指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。
assume cs:code
code segment
start: mov ax,2000h
mov ds,ax
mov bx,0
s: mov ch,0
mov cl,[bx]
jcxz ok
inc bx
jmp short s
ok: mov dx,bx
mov ax ,4c00h
int 21h
code ends
end start
解:
(1)因为题目要求查找的是字节,故我们要使用字节类的寄存器,而又因为我们是要用jcxz指令完成跳转的;jcxz指令的跳转是看CX的值得,所以我们用ch、cl
(2)把每个内存单元依次赋值给CX
(3)如果CX=0时,jcxz跳转到标号OK处,不等于零的话就继续执行下面的指令。
(4)使[bx]自加1,这样才能循环赋值,因为下面有一个jmp s,就和循环似的。
assume cs:code
code segment
start: mov ax,2000h
mov ds,ax
mov bx,0
s: mov ch,0
mov cl,[bx]
jcxz ok
inc bx
jmp short s
ok: mov dx,bx
mov ax ,4c00h
int 21h
code ends
end start
解:
(1)因为题目要求查找的是字节,故我们要使用字节类的寄存器,而又因为我们是要用jcxz指令完成跳转的;jcxz指令的跳转是看CX的值得,所以我们用ch、cl
![](http://bbs.fishc.com/static/image/smiley/lovely/20080925104600138.gif)
(2)把每个内存单元依次赋值给CX
(3)如果CX=0时,jcxz跳转到标号OK处,不等于零的话就继续执行下面的指令。
(4)使[bx]自加1,这样才能循环赋值,因为下面有一个jmp s,就和循环似的。