IA-32定点算术指令

定点算术运算常用指令

–加 / 减运算(影响标志、不区分无/带符号)
ADD:加,包括addb、addw、addl等
SUB:减,包括subb、subw、subl等

–增1 /1运算(影响除CF以外的标志、不区分无/带符号)
INC:加,包括incb、incw、incl等
DEC:减,包括decb、decw、decl等

–取负运算(影响标志、若对0取负,则结果为0且CF清0,否则CF置1)
NEG:取负,包括negb、negw、negl等

–比较运算(做减法得到标志、不区分无/带符号)
CMP:比较,包括cmpb、cmpw、cmpl等

–乘 / 除运算(不影响标志、区分无/带符号)
MUL / IMUL:无符号乘 / 带符号乘
DIV/ IDIV:带无符号除 / 带符号除

1


定点运算指令具体执行

继续使用上一节的add的函数
2

  • 此处的lea作用与 add %edx, %eax相同
    此时EIP=80483e0
    执行前

  • eax即通用寄存器的0号寄存器
    edx为通用寄存器的2号寄存器
    IR=8d040289

  • 译码后,得知功能R[eax]<-R[edx]+R[eax]*1
    将了两寄存器送入ALU计算

  • 回忆:ALU有哪些部件如下图
    补码加/减器
    逻辑运算部件
    乘法器?无 除法器?无
    乘法/除法可用加减+移位实现,也可有独立乘法/除法器
    带符号乘和无符号乘是独立部件
    带符号除和无符号除是独立部件
    3

  • 补码加减器:
    4
    -ALU运算结束后,标志信息送到标志寄存器中,通过多路选择器,把加法器选择输出送回0号寄存器,0号寄存器为80000001
    执行后
    关于正反补的计算和溢出不再赘述

乘除法指令

  • 乘法指令:可给出一个、两个或三个操作数
    –若给出一个操作数SRC,则另一个源操作数隐含在AL/AX/EAX中,将SRC和累加器内容相乘,结果存放在AX(16位)或DX-AX(32位)或EDX-EAX(64位)中。DX-AX表示32位乘积的高、低16位分别在DX和AX中。
    n位× n位=2n位
    –若指令中给出两个操作数DST和SRC,则将DST和SRC相乘,结果在DST中。
    n位× n位=n位
    –若指令中给出三个操作数REG、SRC和IMM,则将SRC和立即数IMM相乘,结果在REG中。
    n位× n位=n位
  • 除法指令:只明显指出除数,用EDX-EAX中内容除以指定的除数
    –若为8位,则16位被除数在AX寄存器中,商送回AL,余数在AH
    –若为16位,则32位被除数在DX-AX寄存器中,商送回AX,余数在DX
    –若为32位,则被除数在EDX-EAX寄存器中,商送EAX,余数在EDX

参考:南大计算机系统基础(一)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IA-32条件跳转指令是用于根据特定条件进行跳转的指令,它们的操作码是以"J"为前缀的指令助记符,其中"J"代表"jump"(跳转)。下面是一些常见的IA-32条件跳转指令: - JA:如果无符号数大于,则跳转。 - JAE:如果无符号数大于或等于,则跳转。 - JB:如果无符号数小于,则跳转。 - JBE:如果无符号数小于或等于,则跳转。 - JC:如果进位,则跳转。 - JE:如果相等,则跳转。 - JG:如果大于,则跳转。 - JGE:如果大于或等于,则跳转。 - JL:如果小于,则跳转。 - JLE:如果小于或等于,则跳转。 - JNA:如果无符号数不大于,则跳转。 - JNAE:如果无符号数不大于或等于,则跳转。 - JNB:如果无符号数不小于,则跳转。 - JNBE:如果无符号数不小于或等于,则跳转。 - JNC:如果不进位,则跳转。 - JNE:如果不相等,则跳转。 - JNG:如果不大于,则跳转。 - JNGE:如果不大于或等于,则跳转。 - JNL:如果不小于,则跳转。 - JNLE:如果不小于或等于,则跳转。 - JNO:如果不溢出,则跳转。 - JNP:如果不偶校验,则跳转。 - JNS:如果不带符号,则跳转。 - JNZ:如果非零,则跳转。 - JO:如果溢出,则跳转。 - JP:如果偶校验,则跳转。 - JPE:如果偶校验,则跳转。 - JPO:如果奇校验,则跳转。 - JS:如果带符号,则跳转。 - JZ:如果为零,则跳转。 这些指令可用于实现条件分支和循环结构。条件跳转指令依赖于标志寄存器的值来确定跳转是否发生。在执行条件跳转指令之前,必须设置标志寄存器以反映需要的条件。如果条件不满足,则指令将被跳过,程序将继续执行下一条指令

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值