最基础的指令
mov
跳转指令
无符号
JA ;大于跳转
JAE ;无符号大于等于则跳转
JB ;无符号小于则跳转
JNB ;无符号不小于则跳转
JBE ;无符号小于等于则跳转
JG ;有符号大于则跳转
JL ;有符号小于则跳转
JC ;CF进位则跳转(无符号为进位)
JO ;OF溢出则跳转(有符号为溢出)
有符号
运算指令
无符号
ADD ;+
;是否进位看CF
SUB ;-
;是否借位看CF
MUL ;×
;MOV AL,04H
;MOV BL,03H
;MUL BL;
;(AX:00 0C)
;(相当于把MUL后面的去乘AL,结果放在AX里)
;(AL与8位相乘,结果存在AX;AX与16位相乘,结果存在DX高和AX低)
;运算前乘积高一半为0则OF和CF为0,否则为1
DIV ;÷
;方法同上
;DIV后面是被除数,除数默认在
;除数是8位,被除数必须是16,被除数保存在AX中:AH保存高8位,AL保存低8位
;(接上)计算结果的商保存在AL中,余数保存在AH中。溢出的话CF会置1
;除数是16位,被除数必须是32,被除数保存在AX和DX中:DX保存高16位,AX保存低16位
;(接上)计算结果的商保存在AX中,余数保存在DX中。
;除法指令对所有条件码都没有定义
INC ;+1,但是不考虑标志位
DEC ;-1
有符号
ADC ;+
;是否溢出看OF,=1溢出
SBB ;-
;是否溢出看OF,=1溢出
IMUL ;×
;运算前如果乘积高一半是低一半的符号扩展,则CF和OF为0,否则为1
IDIV ;÷
移位指令
;移出的那位都移到CF
;只有为CNT=1时,OF才有效,最高有效位辩护=1,否则为0
;后面接着的只能是1或者CL,8086以后才可以有非1的立即数
SHL ;逻辑左移,补0;无符号数除以2(CNT=1)
SHR ;逻辑右移,补0;无符号数乘以2(CNT=1)
SAL ;算术左移,补0;有符号数除以2(CNT=1)
SAR ;算术右移,补符号位(最高位是啥就还是啥);有符号数乘以2(CNT=1)
ROL ;循环左移,自己内部循环移
ROR ;循环右移,自己内部循环移
RCL ;带进位循环左移,自己内部+CF循环移,最低位补CF
RCR ;带进位循环右移,自己内部+CF循环移,最高位补CF
其他指令
CBW ;字节转换为字. (把AL中字节的符号扩展到AH中去)
;MOV AH,01
;CBW
;此时AX:0001H
;MOV AH,-12
;CBW
;AX:FFF4H
XCHG ;交换寄存器之间的数值或者寄存器和内存之间的数值
;
CLC ;CF置0
STC ;CF置1
NEG ;求补码
;只有0时运算后CF才为0
TEST ;两个操作数做与(AND)运算,但是不保存结果只根据改变标志位。
;一般测试特定位数是否置1,使用JZ进行判断
clc ;复位进位标志位 CF<-0
stc ;置位进位标志位 CF<-1
cmc ;求反进位标志位 CF<-~CF
cld ;复位方向标志位 DF<-0 串操作指令中使用
std ;置位方向标志位 DF<-1
cli ;复位中断标志位 IF<-0 用于控制可屏蔽中断的允许和静止
sti ;置位中断标志位 IF<-1
NOP ;空操作,但是占用一个字节存储
————————————————
原文链接:https://blog.csdn.net/qq_44418229/article/details/124510113
非指令
中断
MOV AH 02H
输出DL里的ASCII码
MOV AH,0AH
输入字符串到DX为首地址的内存中
0a中断用法是DS:DX设置接收缓冲区的首地址,在(DS:DX)字节单元中保存缓冲区长度,输入结束后,在(DS:DX+1)字节单元中保存实际输入字符数,回车符不包含在内,输入字符串从DS:DX+2开始。你用100 dup(?) 开辟空间时很有可能(DS:DX)中为0,这样缓冲区长度为0,也就等不到你输入就退出了。
所以 STR DB 12 DUP(0)(或STR DB 12 DUP(?))
LEA DX ,STR
MOV AH,0AH
INT 21H是不行的
数据段应该改成STR DB 12 DUP('$'),'$'
或者补充缓冲区string db 100
db 0
db 100 dup(?)
(待验证(我的猜测):总结一下就是DS:DX的第一个字符不能是0?)
标志位
;FLAGS标志寄存器
;条件码标志
CF 无符号数 进位=1;CY
无进位=0;NC
OF 有符号数 溢出=1;OV
无溢出=0;NV
ZF 结果为0 =1;ZR
不为0 =0;NC
SF 结果为负 =1;NG
结果为正 =0;PL
AF 运算的第三位产生进位 =1;AC
否则 =0;NC
PF 结果1的个数为偶数 =1;PE
为奇数 =0;PO
DEBUG里标志寄存器状态位英文全称https://www.dandelioncloud.cn/article/details/1560786211306708994
一些参考
https://blog.csdn.net/weixin_53798995/article/details/124136560
https://blog.51cto.com/u_15887260/5876766
https://blog.csdn.net/poptar/article/details/111686050