首页 > 技术文章 > 王爽 汇编 检测点9.2 补全编程,利用jcxz指令,实现在内存中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中

TonyJia 2020-03-28 10:47 原文

一、如题:

 1 assume cs:code 
 2 
 3 code segment
 4 start:  mov ax,2000h
 5         mov ds,ax
 6         mov bx,0
 7 s: 8  9 10         inc bx
11         jmp short s
12 ok:     mov dx,bx
13         
14         mov ax,4c00h
15         int 21h
16 code ends
17 end start

二、代码实现 

 1 assume cs:code 
 2 
 3 code segment
 4 start:  mov ax,2000h
 5         mov ds,ax
 6         mov bx,0
 7 s:      mov cl,[bx]    ;将偏移地址为bx单元中的数据赋值给cx寄存器低位
 8         mov ch,0      ;每次将cx寄存器高位清0
 9         jcxz ok        ;如果cx为0,则跳转到标号ok的地方
10         inc bx
11         jmp short s
12 ok:     mov dx,bx
13         
14         mov ax,4c00h
15         int 21h
16 code ends
17 end start

 三、上机调试

1.假定内存单元2000:0 f的数据如下图

 2.开始调试代码并查看各个寄存器的数据

 3.执行第一条指令AX=2000

 4.执行第二条指令DS=2000

 5.执行第三条指令BX=0

 6.执行第四条指令CL=11

 7.执行第五条指令CH=0

8.执行第六条指令,判断cx是否为0,不为0继续执行下面的一条指令(inc bx)

 9,继续

 10.继续跳回到标号s,继续判断下一个内存单元中的数据是否为0,略过……直接来张找到为0的截图

 11.正常结束程序

 

推荐阅读