鱼C论坛

 找回密码
 立即注册
查看: 2950|回复: 2

[学习笔记] 《零基础入门学习汇编语言》第五十六讲

[复制链接]
发表于 2017-10-13 23:01:24 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 shuiyu 于 2017-10-18 22:02 编辑

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

一、关于指令adc的的编程任务
(1)编程计算1EF000H+201000H,结果放在ax(高16位)和bx(低16位)中。
关于这问题我咋子前一讲中也给出了答案,只是步骤稍微有点多
看了这次教程我发现居然可以这么简单 就下面那四行代码:
mov ax,001EH                ;
mov bx,0F000H       
add bx,1000H                ;1EF000H的低16位与201000的低16位相加
abc ax,20                        ;使用adc指令,1EF000H的高16位与201000的高16位相加,同时再加上CF,即使发生进位也不用担心计算错误

(2)1EF0001000H+2010001EF0H,结果放在ax(高16位),bx(次高16位),cx(低16位)中。
折一题其实和上面的一样,只是多了一个寄存器而已,多加两条代码就可以实现了
mov ax,001EH
mov bx,0F00H
mov cx,1000H
add cx,1EF0H                ;低加低、高加高,先从低位开始计算,且在后面使用adc指令,防止发生进位导致计算错误
adc bx,1000H
adc ax,0020h

(3)
编写一个子程序,对两个128位数据进行相加。
名称:add128
功能:两个128位数据进行相加
参数:ds:si指向存储第一个数的内存空间,因数据为128位,所以需要8个字单元,由低地址单元到高地址单元依次存放 128位数据由低到高的各个字。运算结果存储在第一个数的存储空间中。 ds:di指向存储第二个数的内存空间。
代码请看图,具体解释我就不说了,小甲鱼的教程已经说得很清楚了
1.PNG
要记住重要的两点:
1.使用adc前记得要将CF归零(即:sub ax,ax)
2.使用adc命令过程中,add,sub等指令会对CF的值造成影响

二、sbb指令
(1)sbb是带错位减法指令,它利用了CF位上记录的借位值。
格式:sbb 操作对象1,操作对象2
功能:
操作对象1=操作对象1–操作对象2–CF
比如:sbb ax,bx
实现功能: (ax) = (ax) – (bx) – CF
(2)和adc可以说是一模一样,只是它是减法而已


三、cmp指令
(1)cmp 是比较指令,功能相当于减法指令,只是不保存结果。cmp 指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。
(2)通俗的来讲cmp指令,就是模拟执行减法命令,减法命令后会导致标志寄存器发生什么变化;而这个标志寄存器的变化会保存下来,但是其它的都不会发生变化,所以说是模拟咯
(3)同 add、sub 指令一样,CPU 在执行cmp指令的时候,也包含两种含义:进行无符号数运算和进行有符号数运算。所以利用cmp指令可以对无符号数进行比较,也可以对有符号数进行比较。


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

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

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2017-10-16 16:44:58 | 显示全部楼层
越努力,越幸运。

说的很不错,

机会都是给有准备的人的。

机会都是给了那些准备好了的人的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-16 19:08:53 | 显示全部楼层
兰陵月 发表于 2017-10-16 16:44
越努力,越幸运。

说的很不错,

嘿嘿,这是自己亲身体验才领悟到的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 08:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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