本文主要是介绍汇编语言(第四版)第九章 检测点9.2 习题解答,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
补全程序,利用 jcxz 指令,实现在内存 2000H 段中查找第一个值为 0 的字节,找到后,将它的偏移地址存储在 dx 中。
assume cs:code
code segment
start:mov ax,2000hmov ds,axmov bx,0s:________________________jmp short sok:mov dx,bxmov ax,4c00hint 21h
code ends
end start
分析:考察对 jcxz 指令的使用
jcxz x 如果 cx = 0,转移到标号x处执行;如果cx不为零,则什么也不做。
基本思路就是从 2000:0000 位置处逐字节遍历,每次取出一个字节放入cx寄存器的低地址处cl,高地址ch不起作用故补0,用jcxz指令判断cx是否为0,若为0则执行 OK 代码段,将偏移地址bx存储到dx中,否则bx+1,检测下一个字节是否为0。
故程序为
assume cs:code
code segment
start:mov ax,2000hmov ds,axmov bx,0s:mov cl,[bx] ;取出一个字节,放在cx低地址处mov ch,0 ;cx高地址不起作用,补0jcxz ok ;判断该字节是否为0,成立则跳到ok处执行inc bx ;不成立则取下一个字节jmp short sok:mov dx,bxmov ax,4c00hint 21h
code ends
end start
实验结果如下:
可以看到在DS:000处的第一个就为0,故执行了一次循环就结束了
这篇关于汇编语言(第四版)第九章 检测点9.2 习题解答的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!