8086指令系统中,各类指令总结

8086指令系统

  • 前言
    • 一、数据传送指令:
    • 二、算术运算指令:
    • 三、逻辑运算和移位指令:
    • 四、字符串指令:
    • 五、控制转移指令:
    • 六、处理器控制指令:


  • 前言

8086的指令有6大类,分别是:数据传送指令、算术运算指令、逻辑运算和移位指令、控制转移指令和处理器控制指令。接下来,分为六个模块为大家总结。

  • 一、数据传送指令:

指令名 要点
MOV 理解为移动move就好;若要在存储单元之间或段寄存器之间移动,则要通过通用寄存器作为媒介。
PUSH 每次PUSH之前,注意SP的值,要先修改SP   (SP <-- SP–2)
POP 每执行一次POP,SP <-- SP+2
XCHG 读为X,change就记住啦。就是交换值。
XLAT 意思是“转换表”,这个要结合例题比较好理解, 强烈建议看书,或者百度。
IN input指令:即连接端口时使用的指令。 注意:当端口地址为两位16进制数,可以直接input。但是当地址为四位16进制数,要先将端口号送入DX寄存器,再IN。
OUT 即将AX/AL中的数据写到端口去。
LEA Load effective address,从名字看出,就是取地址的偏移量
LDS 这个有一点复杂。即将源操作数对应的双字节,低字节送到目标操作数,高字节放到DS。
LAHF 即Load AH from Flags,把标志位都放到AH去。
SAHF 这个和LAHF是反过来的,把AH的值写道标志位去。
POPF 就是pop到flags去。
  • 二、算术运算指令:

类别 要点
加法 ADD、ADC(会加上CF)、INC(increase)、DAA(加法的十进制调整,自动的)
减法 SUB、SBB(会减去CF)、DEC(decrease)、NEG(取负)、DAS(加法的十进制调整,自动的)
乘法 MUL(只对无符号数)、IMUL(处理带符号数)     注意:这里默认是源操作数和累加器AL/AX相乘
除法 DIV(只对无符号数)、IDIV(对有符号数)相除以后,8位商在AL,余数在AH;16位商在AX,余数在DX
  • 三、逻辑运算和移位指令:

类别 内容
逻辑运算 NOT(取反)、AND(与)、OR(或)、XOR(异或)
算术移位 SHL/SAL:即shift left、 ShR:shift right;注意SAR是算术右移,即符号位不变
循环移位 ROL/ROR:就是循环的移位,但不包含CF。RCL/RCR则包含了CF。
  • 四、字符串指令:

指令 要点
CMPS 即比较compare,源串减去目的串,结果反应在符号位上,不影响原来的值。
SCAS 即扫描scan,用来搜索数据。执行前,必须先存在AL/AX中。和CMPS的区别,应该就是会自动指向下一个待搜索的字符串。
LODS 把数据放到AL或AX,同时修改SI,指向下一个元素
STOS 把AL或AX的数据放到目标串,同时修改DI,指向下一个元素。
  • 五、控制转移指令:

类别 要点
普通 JMP(就是jump到某个位置)、CALL(即调用子程序)、RET(过程返回)
条件转移 8086指令系统中,各类指令总结_第1张图片
循环控制 LOOP(每执行一次CX-1)、LOOPNE/LOOPNZ(当结果为0,CX=0时,才跳出)
  • 六、处理器控制指令:

对象 要点
CF CLC(置0);CMC(取反);STC(置1)
DF CLD(置0);STD(置1)
IF CLI(置0);STI(置1)

你可能感兴趣的:(8086指令系统中,各类指令总结)