3.汇编指令:【算术运算类指令】:加减乘除 和 CMP

本文介绍了计算机体系结构中的算术运算指令,包括加法、减法、乘法和除法等基本运算指令及其应用场景,同时涵盖了比较指令cmp的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算术运算指令

在这里插入图片描述

1. 加法指令

在这里插入图片描述

【1】ADD 目标操作数 dest , 源操作数 src
将两个数相加的结果赋值给目标操作数 OPRD1。
注意:由于 ADD 指令是不考虑低位向高位的进位的,因此,ADD指令多用于两个8位二进制数的相加

【2】ADC dest , src
ADC考虑了低位向高位的进位,它执行的操作是:OPRD1 + OPRD2 + CF,并且将结果赋值给目标操作数OPRD1。但是特别注意:使用 ADC 之前记得将 CF 的状态清零(CLC指令)

ADC指令常常用于多字节数的相加

【3】INC OPRD
INC 指令类似于我们 C++ 里面的自增操作,它执行的是 OPRD + 1,并将结果赋给 OPRD。

注意:INC 指令是单操作数指令,它的操作数不能是段寄存器!!,常常用于修改地址指针




2. 减法指令

在这里插入图片描述

【1】SUB dest , src
这个 SUB 指令对应于 ADD 指令,也是不考虑低位向高位的借位的。因此它也只适用于两个字节数的减法

【2】考虑借位的SBB

【3】DEC OPRD
对应于 INC ,这里完成的是 OPRD 的自减操作。同样,操作数不能是段寄存器!

【4】NEG OPRD
这里 NEG 执行的是用 0 去减操作数:0 - OPRD,结果再赋给OPRD。NEG 指令常常用于求补码
一般,NEG指令执行后会使CF=1,除非OPRD=0,这样 CF 就是0




3. 乘法指令

有分别针对无符号数和有符号数的运算指令,之前是靠我们自己的

乘法指令中,结果的长度是操作数长度的2倍。也就是说如果是两个单字节数相乘,结果就是16位的;如果是两个16位数相乘,结果就是 32 位的。

【1】无符号数指令MUL:MUL OPRD
注意:OPRD不能是立即数
在这里插入图片描述

【2】有符号数指令IMUL OPRD
关于对操作数的一些要求和 MUL 一样。IMUL 的执行过程是:

将两个操作数取补码;
做乘法运算
将乘积取补码




4. 除法指令

要求被除数一定是除数的双倍字长
在这里插入图片描述

【1】 DIV(无符号数除法)

【2】IDIV(有符号数除法)




比较指令:cmp

CMP OPRD1, OPRD2
这个CMP指令执行的是 :OPRD1 - OPRD2。但是大家注意:仅仅是减而已,CMP 将会把结果丢弃
OPRD1-OPRD2 减完了结果不要,只是为了影响标志位,两个操作数不影响。

CMP 最大的作用是用于比较两个操作数的大小,但是比大小也分为 无符号数的比较有符号数的比较

在这里插入图片描述




练习题

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你说的白是什么白_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值