汇编与接口-第五章笔记

乘法

有符号 IMUL
无符号 MUL

8位乘法

  1. 被乘数总在AL
  2. 不允许使用立即数乘法,除非是带符号的立即数乘法
  3. 得到的乘积放在AX

16位乘法

区别:

AX为被乘数。

DX-AX为结果。DX为高16位

特殊立即数16位乘法

IMUL CX,DX,12H(目的寄存器, 被乘数, 立即数(8或16))


除法

有符号 IDIV
无符号 DIV

8位除法

  1. 被除数AX
  2. 商 AL, 余数 AH

16位除法

  1. 被除数DX-AX
  2. 商 AX, 余数 DX

BCD码

DAA指令 加法

跟随再ADD或者ADC指令之后,把运算结果调整为BCD结果。
每次只对AL寄存器进行访问,所以加法必须每次只做8位

DAS指令 减发

跟随在减法指令后,其他与DAA指令一样

ASCII码

AAA指令 加法 后

在加法之后进行调整为ASCII结果
例如:31H和39H相加之后。(相当于1 + 9 = 10)得到3030H

AAD指令 除法 前

再除法前修改AX的(如702H变成10进制的702),然后进行除法

AAM指令 乘法 后

AAS指令 减法 后


基本逻辑运算指令

AND, OR, XOR, NOT

TEST指令

执行AND指令
但是不改变目的操作数,只改变标志寄存器的状态

通常后面跟着JZ或者JNZ指令 

BT

BT AX, 4 对目标操作位测试,放入标志位
BTC 取反目标操作位
BTR 复位操作位
BTS 置位目标操作位

NOT NEG

NOT 取反
NEG 取补码

移位指令和循环指令

SHL, SAL, SHR, SAR

双精度移位指令:SHLD左移,SHRD右移

SHLD AX, BX, 12 //AX右移12位,bX右移12位放入AX的左12位中

循环右移:

RCL, ROL, RCR, ROR

位扫描指令

BSF 向前扫描
BSR 向后位扫描
遇到首先值为1的位,把该位的位置放入目的操作数中。零标志位置1
如果没有遇到为1的位,零标志位为0

串比较指令

SCAS 或 CMPS
DI寻址

SCAS

比较AL,AX,EAX与字节存储区的内容,

CMPS

posted @ 2014-11-24 23:11  Nyle  阅读(315)  评论(0编辑  收藏  举报