教学提示 全面而准确地理解每条指令 功能和应用,是编写汇编 言程序的关键 逐个展指令
教学提示 全面而准确地理解每条指令 的功能和应用,是编写汇编 语言程序的关键
3.2.2算术运算类指令 四则运算是计算机经常进行的一种操作。算术 运算指令实现二进制(和十进制)数据的四则 运算 ■请注意算术运算类指令对标志的影响 掌握:ADD/ADC/INC、SUB/SBB/DEC/NEG/CMP n熟悉: MUL/IMUL、DIV/ID 理解:CBW/CWD、 DAA/DAS、AAA AAS/AAM/AAD
3.2.2 算术运算类指令 ◼ 四则运算是计算机经常进行的一种操作。算术 运算指令实现二进制(和十进制)数据的四则 运算 ◼ 请注意算术运算类指令对标志的影响 ◼ 掌握:ADD/ADC/INC、SUB/SBB/DEC/ NEG/CMP ◼ 熟悉:MUL/IMUL、DIV/IDIV ◼ 理解:CBW/CWD、DAA/DAS、 AAA/ AAS/AAM/AAD
ADD 1、加法指令ADD ADD指令将源与目的操作数相加,结果送到目 的操作数 ADD指令按状态标志的定义相应设置 例题2.18 ADD reg, imm/reg/mem reg ei ADD mem, imm/reg memt-mem-Fimm/r
1、加法指令ADD ◼ ADD指令将源与目的操作数相加,结果送到目 的操作数 ◼ ADD指令按状态标志的定义相应设置 ADD ADD reg,imm/reg/mem ;reg←reg+imm/reg/mem ADD mem,imm/reg ;mem←mem+imm/reg 例题2.18
ADC 带进位加法指令ADC ■ADC指令将源与目的操作数相加,再加上进位CF标 志,结果送到目的操作数 ■ADC指令按状态标志的定义相应设置 ■ADC指令主要与ADD配合,实现多精度加法运算 例题3.19 ADC reg, imm/reg/mem ADC mem, imm/reg ;mem←mem+imm/reg=e
带进位加法指令ADC ◼ ADC指令将源与目的操作数相加,再加上进位CF标 志,结果送到目的操作数 ◼ ADC指令按状态标志的定义相应设置 ◼ ADC指令主要与ADD配合,实现多精度加法运算 ADC ADC reg,imm/reg/mem ;reg←reg+imm/reg/mem+CF ADC mem,imm/reg ;mem←mem+imm/reg+CF 例题3.19
增量指令 INC (ncrement (iNG ■IⅠNC指令对操作数加1(增量) ■INC指令不影响进位CF标志,按定义设置 其他状态标志 INC reg/mem reg/ memsreg/mes inc bx inc byte ptr bx
增量指令INC(increment) ◼ INC指令对操作数加1(增量) ◼ INC指令不影响进位CF标志,按定义设置 其他状态标志 INC INC reg/mem ;reg/mem←reg/mem+1 inc bx inc byte ptr [bx]
SUB 2、减法指令SUB( subtract) ■SUB指令将目的操作数减去源操作数,结果送 到目的操作数 ■SUB指令按照定义相应设置状态标志 SUB reg, imm/reg/mem 例题3.20 reg ei SUB mem, imm/reg meme-mem-immfret
2、减法指令SUB(subtract) ◼ SUB指令将目的操作数减去源操作数,结果送 到目的操作数 ◼ SUB指令按照定义相应设置状态标志 SUB SUB reg,imm/reg/mem ;reg←reg-imm/reg/mem SUB mem,imm/reg ;mem←mem-imm/reg 例题3.20
SBB 带借位减法指令SBB SBB指令将目的操作数减去源操作数,再减去借位 CF(进位),结果送到目的操作数。 ■SBB指令按照定义相应设置状态标志 ■SBB指令主要与SUB配合,实现多精度减法运算 例题3.21 SBB reg, imm/reg/mem SBB mem, imm/reg mem+-mem-immyreg-CF
带借位减法指令SBB ◼ SBB指令将目的操作数减去源操作数,再减去借位 CF(进位),结果送到目的操作数。 ◼ SBB指令按照定义相应设置状态标志 ◼ SBB指令主要与SUB配合,实现多精度减法运算 SBB SBB reg,imm/reg/mem ;reg←reg-imm/reg/mem-CF SBB mem,imm/reg ;mem←mem-imm/reg-CF 例题3.21
减量指令DEC( decrement) lEo ■DEC指令对操作数减1(减量) ■DEC指令不影响进位CF标志,按定义设 置其他状态标志 DEC reg/mem reg/memreg/mee |NC指令和DEc指令都是单操作数指令 主要用于对计数器和地址指针的调整
减量指令DEC(decrement) ◼ DEC指令对操作数减1(减量) ◼ DEC指令不影响进位CF标志,按定义设 置其他状态标志 DEC DEC reg/mem ;reg/mem←reg/mem-1 dec cx dec word ptr [si] INC指令和DEC指令都是单操作数指令 主要用于对计数器和地址指针的调整
NEG 3、求补指令NEG( negative ■NEG指令对操作数执行求补运算:用零减去操 作数,然后结果返回操作数 ■求补运算也可以表达成:将操作数按位取反后 加1 NEG指令对标志的影响与用零作减法的SUB指 样 NEG reg/mem 例题2.22 reg/meme0-reg/mem
3、求补指令NEG(negative) ◼ NEG指令对操作数执行求补运算:用零减去操 作数,然后结果返回操作数 ◼ 求补运算也可以表达成:将操作数按位取反后 加1 ◼ NEG指令对标志的影响与用零作减法的SUB指 令一样 NEG NEG reg/mem ;reg/mem←0-reg/mem 例题2.22
CMP 4、比较指令CMP( compare ■CMP指令将目的操作数减去源操作数,按照定 义相应设置状态标志 CMP指令执行的功能与SUB指令,但结果不回 送目的操作数 例题3.23 CMP reg, imm/reg/mem CMP mem, imm/reg g mem- 1mm/reg
4、比较指令CMP(compare) ◼ CMP指令将目的操作数减去源操作数,按照定 义相应设置状态标志 ◼ CMP指令执行的功能与SUB指令,但结果不回 送目的操作数 CMP reg,imm/reg/mem ;reg-imm/reg/mem CMP mem,imm/reg ;mem-imm/reg 例题3.23 CMP