王爽 汇编 检测点9.2 补全编程,利用jcxz指令,实现在内存中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中
一、如题:
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.正常结束程序
海阔凭鱼跃,天高任鸟飞,成功没有捷径,唯有努力前行!