shuiyu 发表于 2017-8-14 11:14:42

《零基础入门学习汇编语言》第四十五讲(含检测点9.2及9.3)

本帖最后由 shuiyu 于 2017-8-14 12:06 编辑

越努力,越幸运。欢迎大家来看我的笔记{:10_297:} 小白刚学,不对的请各位大佬指正,谢谢{:10_254:}

一、jcxz指令
(1)jcxz指令为有条件转移指令,所有的有条件转移指令都是短转移,在对应的机器码中包含转移的位移,而不是目的地址。对IP的修改范围都为-128~127。指令格式:jcxz 标号

(2)当(cx)=0时,(IP)=(IP)+8位位移)
8位位移=“标号”处的地址-jcxz指令后的第一个字节的地址;
8位位移的范围为-128~127,用补码表示;
8位位移由编译程序在编译时算出。

(3)当(cx)!=0时,什么也不做(程序向下执行)。

二、loop指令
(1)在前面的学习中我们都有用过了,和上面的jcxz指令可以说是相反{:5_91:}

(2)loop指令为循环指令,所有的循环指令都是短转移,在对应的机器码中包含转移的位移,而不是目的地址。对IP的修改范围都为-128~127。
指令格式:loop 标号

(3)如果(cx)≠0,(IP)=(IP)+8位位移。
8位位移=“标号”处的地址-loop指令后的第一个字节的地址;
8位位移的范围为-128~127,用补码表示;
8位位移由编译程序在编译时算出。

(4)当(cx)=0,什么也不做(程序向下执行)



检测点9.2

补全编程,利用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,
        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{:5_95:}
(2)把每个内存单元依次赋值给CX
(3)如果CX=0时,jcxz跳转到标号OK处,不等于零的话就继续执行下面的指令。
(4)使自加1,这样才能循环赋值,因为下面有一个jmp s,就和循环似的。

检测点9.3

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

assume cs:code
code segment
start:mov ax,2000h
      mov ds,ax
      mov bx,0
s:        mov cl,
        mov ch,0
        inc cx
        inc bx
        loop s

ok:dec bx
      mov dx,bx
      mov ax,4c00h
      int 21h

code ends
end start

解:因为执行loop s时,首先要将(cx)减1。所以要先让CX加一。



谢谢小甲鱼带来的视频教程,感谢!! {:10_303:}

本节结束,多谢览阅!
越努力,越幸运。谢谢大家来看我的笔记{:10_297:} 小白刚学,不对的请各位大佬指教,谢谢{:10_254:}

微末非末 发表于 2017-11-19 12:20:28

求助,9.3中 那个OK标号是干嘛用的

shuiyu 发表于 2017-11-19 14:30:19

微末非末 发表于 2017-11-19 12:20
求助,9.3中 那个OK标号是干嘛用的

没用{:10_250:}它放个标号OK在那,应该是让我们更好分清LOOP循环到此结束吧(个人脑补{:10_312:}),反正有它没它对程序都没影响

infinity20 发表于 2019-6-21 00:14:03

本帖最后由 infinity20 于 2019-6-21 00:22 编辑

shuiyu 发表于 2017-11-19 14:30
没用它放个标号OK在那,应该是让我们更好分清LOOP循环到此结束吧(个人脑补),反正 ...

OK为什么没用呢

黑豆哥哥 发表于 2020-6-17 20:20:56

妈的我被这个OK搞死了,看了半天看不懂,这个OK不是蛊惑人心吗

lzaiz24 发表于 2023-12-19 20:46:00

学习汇编
页: [1]
查看完整版本: 《零基础入门学习汇编语言》第四十五讲(含检测点9.2及9.3)