首页 Al提示指令 32位微处理器指令系统的加减算术运算指令

32位微处理器指令系统的加减算术运算指令

标题:32位微处理器指令系统之加减算术运算指令

算术运算指令分为二进制算术运算指令和BCD码算术运算调整指令。

添加说明

1.ADD指令指令格式:ADD OPD、OPS

函数:(OPD)+(OPS)OPD

受影响的标志有:AF、OF、PF、SF、ZF、CF

ADD指令有以下5种具体格式:(与MOV相同)

添加寄存器,寄存器

;示例ADD AX,BX 和ADD EAX,EBX

添加寄存器,内存

;示例ADD AX,[ESI] 和ADD EAX,[ESI]

添加内存、寄存器

;示例ADD[ESI],BX 和ADD[ESI],EBX

添加寄存器,imm

;示例ADD AX, 2 和ADD EAX, 22334455H

添加内存,imm

;示例ADD BYTE PTR [DI], 3 和ADD WORD

;PTR[ESI],1104H

例子:

加法指令用于将1位数值数据0至9及其对应的1位字符数据\’0\’至\’9\’转换。

查看ASCII表可知,字符数据‘0’到‘9’的ASCII码为30H到39H,1位数值数据与其对应的字符数据相差30H。 (0的asc码是48)

假设AL中存储的是1位数值数据(0~9),指令ADD AL,30H即可实现这种转换。

莫瓦阿尔,1

添加AL,30H; CF=0, SF=0, OF=0, ZF=0, PF=0

2.ADC指令(带进位的加法指令)指令格式:ADC OPD、OPS

函数:(OPD)+(OPS)+CFOPD

受影响的标志有:AF、OF、PF、SF、ZF、CF

ADC指令还有5种特定格式,即将ADD指令的5种特定格式中的ADD替换为ADC。

3.INC命令(加1命令)命令格式:INC OPD

函数:(OPD)+1OPD

受影响的标志有:AF、OF、PF、SF、ZF

INC指令有以下两种具体格式:

INCreg

;示例INC AL、INC AX 和INC EAX

INC内存

;示例INC BYTE PTR [SI] 和INC

;字节PTR [ESI]

减法指令

1.SUB指令指令格式:SUB OPD、OPS

功能:(OPD)-(OPS)OPD

受影响的标志有:AF、OF、PF、SF、ZF、CF

SUB指令也有5种具体格式:

2.SBB指令(带借位的减法指令)指令格式:SBB OPD、OPS

功能:(OPD)-(OPS)-CFOPD

受影响的标志有:AF、OF、PF、SF、ZF、CF

SBB指令还有5种特定格式,即将SUB指令的5种特定格式中的SUB替换为SBB。

例子:

使用SUB 和SBB 指令对两个64 位二进制数进行减法。假设被减数的高、低32位分别存放在EAX和EBX中,被减数的高、低32位分别存放在ECX和EDX中。假设(EAX)=99998888H,(EBX)=11112222H,(ECX)=22223333H,(EDX)=88881111H,减法结果存储在(EAX)和(EBX)中。主要流程如下:

SUB EBX、EDX; (EBX)(EBX)-(EDX),结果为

;CF=1, (EBX)=88891111H

SBB EAX、ECX; (EAX)(EAX)-(ECX)-CF,结

;若CF=0,则(EAX)=77775554H

3.DEC指令(减1指令)指令格式:DEC OPD

功能:(OPD)-1OPD

受影响的标志有:AF、OF、PF、SF、ZF

DEC指令有以下两种具体格式:

DEC 注册;示例DEC EAX

DEC 内存;示例DEC BYTE PTR [ESI]

4.CMP指令(比较指令)指令格式:CMP OPD、OPS

功能:(OPD)-(OPS)

受影响的标志有:AF、OF、PF、SF、ZF、CF

热门文章