汇编与接口-第五章笔记
乘法
有符号 IMUL
无符号 MUL
8位乘法
- 被乘数总在AL中
- 不允许使用立即数乘法,除非是带符号的立即数乘法
- 得到的乘积放在AX中
16位乘法
区别:
AX为被乘数。
DX-AX为结果。DX为高16位
特殊立即数16位乘法
IMUL CX,DX,12H(目的寄存器, 被乘数, 立即数(8或16))
除法
有符号 IDIV
无符号 DIV
8位除法
- 被除数AX
- 商 AL, 余数 AH
16位除法
- 被除数DX-AX
- 商 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与字节存储区的内容,