汇编语言(第四版)第九章 检测点9.2 习题解答

补全程序,利用 jcxz 指令,实现在内存 2000H 段中查找第一个值为 0 的字节,找到后,将它的偏移地址存储在 dx 中。

assume cs:code
code segment
start:mov ax,2000h
      mov ds,ax
      mov bx,0
    s:______
      ______
      ______
      ______
      jmp short s
   ok:mov dx,bx
      mov ax,4c00h
      int 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,2000h
      mov ds,ax
      mov bx,0
    s:mov cl,[bx]    ;取出一个字节,放在cx低地址处
      mov ch,0       ;cx高地址不起作用,补0
      jcxz ok        ;判断该字节是否为0,成立则跳到ok处执行
      inc bx         ;不成立则取下一个字节
      jmp short s
   ok:mov dx,bx
      mov ax,4c00h
      int 21h
code ends
end start

实验结果如下:

汇编语言(第四版)第九章 检测点9.2 习题解答_第1张图片

汇编语言(第四版)第九章 检测点9.2 习题解答_第2张图片

可以看到在DS:000处的第一个就为0,故执行了一次循环就结束了

你可能感兴趣的:(汇编语言,汇编语言)