1.加法指令
(1)add 目的操作数,源操作数
目的操作数=目的操作数+源操作数
(2)adc 带进位的加法指令
目的操作数=目的操作数+源操作数+cf
例:
mov ah,0
mov al,92h
add al,86h ;92h+86h=18h=al,cf=1
adc ah,0 ;(ah)+0+cf=0+0+1=ah
(3)inc加1指令
Inc 操作数 //操作数加1,结果送操作数
操作数可以是任意一个8位或16位的通用寄存器或存储单元,不能是立即数
指令中操作数当做无符号数时,主要用于计数器计数或修改指针地址的值
例:
Inc di ;(di)=di+1
2.减法指令
(1)sub
Sub 目的操作数,源操作数
目的操作数=目的操作数-源操作数
(2)sbb
Sbb 目的操作数,源操作数
目的操作数=目的操作数-源操作数-cf
(3)dec
Dec di ;(di)=di-1
(4)neg 求补指令
Neg 操作数 //0-操作数的结果回送操作数
Mov di,05h
Neg di ;di=0-(di)=0-05h
(5)cmp
Cmp 目的操作数,源操作数
执行时目的操作数与源操作数相减,只根据结果设置标志位,操作数保持原值不变
3.类型拓展指令
为了解决操作数长度匹配,有时需要把数据类型进行拓展
CBW:字节拓展成字
CWD:字拓展成双字
例:
Mov al,32h
Cbw ;执行指令后,ax=0032h
Cwd ;执行指令后,dx=0000h,ax=0032h
4.乘法指令
Mul ;无符号数乘法
Imul ;有符号数乘法
目的操作数必须是累加器,不必在指令中写出
例:
Mov al,05h
Mov bl,06h
Mul bl ;执行结果ax=001eh
5.除法指令
Div 无符号数除法 ;商和余数都是无符号数
SRC(源操作数)为字节时,AL=AX/SRC的商,AH=AX/SRC的余数
SRC为字时:AX=(DX,AX)/SRC的商,DX=(DX,AX)/SRC的余数
Idiv 有符号数除法
目的操作数必须是累加器ax和dx,不必写出