鱼C论坛

 找回密码
 立即注册
查看: 4968|回复: 5

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

[复制链接]
发表于 2017-8-14 11:14:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

一、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指令可以说是相反

(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,[bx]
        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
(2)把每个内存单元依次赋值给CX
(3)如果CX=0时,jcxz跳转到标号OK处,不等于零的话就继续执行下面的指令。
(4)使[bx]自加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,[bx]
        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加一。



谢谢小甲鱼带来的视频教程,感谢!!

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

评分

参与人数 2荣誉 +3 鱼币 +8 收起 理由
小甲鱼 + 5
不二如是 + 3 + 3 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-19 12:20:28 | 显示全部楼层
求助,9.3中 那个OK标号是干嘛用的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-19 14:30:19 | 显示全部楼层
微末非末 发表于 2017-11-19 12:20
求助,9.3中 那个OK标号是干嘛用的

没用它放个标号OK在那,应该是让我们更好分清LOOP循环到此结束吧(个人脑补),反正有它没它对程序都没影响
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-21 00:14:03 | 显示全部楼层
本帖最后由 infinity20 于 2019-6-21 00:22 编辑
shuiyu 发表于 2017-11-19 14:30
没用它放个标号OK在那,应该是让我们更好分清LOOP循环到此结束吧(个人脑补),反正 ...


OK为什么没用呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-17 20:20:56 | 显示全部楼层
妈的我被这个OK搞死了,看了半天看不懂,这个OK不是蛊惑人心吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-19 20:46:00 | 显示全部楼层
学习汇编
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 09:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表