汇编语言——指令系统小结

指令系统小结

一、数据传送

1. 数据传送

  • MOV
  1. 作用: 将一个字节或字的操作数从源地址传送到目的地址。
  2. 指令格式: MOV DST, SRC
  3. 技巧:
    (1)CS 、IP 只能做源操作数,不能被赋值。
    (2)段寄存器不能直接和立即数交互。
    (3)立即数只能赋值存储器和寄存器,不能被赋值。
    该指令不影响标志位
  • LEA
  1. 作用: 取偏移地址
  • LDS
  1. 作用: 取相邻双字地址,高字地址放在 DS,低字地址放在寄存器。
  • LES
  1. 作用: 取相邻双字地址,高字地址放在 ES,低字地址放在寄存器。
  • LAHF
  1. 作用: 将状态标志位的低字节放到 AH。
  • SAHF
  1. 作用: 将 AH 的数据加载到状态标志位的低字节。

2. 堆栈操作

  • PUSH
  1. 作用: 把一个的操作数从源地址压入堆栈。
  2. 指令格式: PUSH SRC
  3. 技巧:
    (1)只能进行操作,不能 字节 存储。
    (2)CS 只能压栈,不能弹栈。
    (3)立即数不能压栈、弹栈。
  • POP
  1. 作用: 把一个的操作数从栈中弹出到目的操作数。
  2. 指令格式: POP DST
  3. 技巧:
    (1)不能向 IP、CS 弹栈。
    (2)立即数不能弹栈。
  • PUSHF
  1. 作用: 把状态标志位压到栈中栈中。
  2. 指令格式: PUSHF
  • POPF
  1. 作用: 从栈中弹出状态标志位。
  2. 指令格式: POPF

3. 数据交换

  • XCHG
  1. 作用: 对字/字节的源操作数的内容与目的操作数的内容进行交换。
  2. 指令格式: XCHG OPR1, OPR2
  3. 技巧:
    (1)寄存器之间可以交换。
    (2)存储可以与寄存器交换,不能自身交换。
    (3)段寄存器、CS、IP、立即数之间不能交换。
    此命令不影响标志位
  • XLAT
  1. 作用: 完成一个字节的查表转换。
  2. 指令格式: XLAT OPR
  3. 技巧:
    (1)使用前需要在数据段中建立一个小于256 B 的表格,表的首地址放在 BX 中,偏移值放在 AL 中。
    (2)将数据段中偏移地址为 BX 与 AL 之和的存储单元内容送到 AL 中。

4. 输入输出

  • IN
  1. 作用: 从输入端口到 CPU 的数据传送。
  2. 指令格式: IN AX, PORT
  3. 技巧:
  • OUT
  1. 作用: 从 CPU 到输出端口的数据传送。
  2. 指令格式: OUT PORT, AX
  3. 技巧:
    (1)立即数不能直接输出,要先保存在寄存器中。

二、算术运算

1.加法

  • ADD
  1. 作用: 将源操作数与目的操作数相加,结果放在源操作数。
  2. 指令格式: ADD DST, SRC
  3. 技巧:
    (1)要求源操作数和目的操作数必须同时为带符号或无符号数。
    (2)影响标志位
  • ADC
  1. 作用: 将源操作数与目的操作数和 进位标志位 相加,结果放在源操作数。
  2. 指令格式: ADC DST, SRC
  3. 技巧:
    (1)影响标志位
  • INC
  1. 作用: 将指定操作数内容加 1。
  2. 指令格式: INC OPR
  3. 技巧:
    (1) 影响标志位

2. 减法 ; 比较

  • SUB
  1. 作用: 目的数减去源操作数,结果存放于目的操作数。
  2. 指令格式: SUB DST, SRC
  3. 技巧:
  • SBB
  1. 作用: 目的数减去源操作数再减去 借位 CF 的值,结果存放于目的操作数。
  2. 指令格式: SBB DST, SRC
  3. 技巧:
  • DEC
  1. 作用: 对制定操作数减 1。
  2. 指令格式: DEC OPR
  3. 技巧:
    (1)不影响进位标志
  • NEG
  1. 作用: 对指定操作数求补运算。
  2. 指令格式: NEG DST, SRC
  3. 技巧:
  • CMP
  1. 作用: 比较指令 ,目的数减去源操作数,结果不予保存,只根据结果的状态设置标志位。
  2. 指令格式: CMP DST, SRC
  3. 技巧:

3. 乘法

  • MUL
  1. 作用: 完成两个 符号数之间的乘法运算。
  2. 指令格式: MUL SRC
  3. 技巧:
    (1)要求被乘数放在 ALAX,进行字节或字运算。
    (2)SRC 只能通过 非立即数 的方式寻址。
    (3)字节运算时,目的操作数只能在 AL,结果在 AX 中。
    (4)字运算时,目的操作数只能在 AX,结果高位在 DX,低位在 AX
    (5)只影响 OFCF 标志位。
  • IMUL
  1. 作用: 完成两个 符号数之间的乘法运算。
  2. 指令格式: MUL SRC
  3. 技巧:
    (1)要求被乘数放在 ALAX,进行字节或字运算。
    (2)SRC 只能通过 非立即数 的方式寻址。
    (3)字节运算时,目的操作数只能在 AL,结果在 AX 中。
    (4)字运算时,目的操作数只能在 AX,结果高位在 DX,低位在 AX
    (5)只影响 OFCF 标志位。

4. 除法

  • DIV
  1. 作用: 符号除法指令。
  2. 指令格式: MUL SRC
  3. 技巧:
    (1)字节操作: 16位被除数放在 AX 中,8位除数位源操作数,结果在 AL,余数在 AH 中。
    (2)字操作: 32位被除数在 DXAX 中,16位除数为源操作数,结果的16位商在 AX 中,16位余数在 DX 中。
    (3)对所有的条件码位皆无影响
  • IDIV
  1. 作用: 符号除法指令。
  2. 指令格式: MUL SRC
  3. 技巧:
    (1)字节操作: 16位被除数放在 AX 中,8位除数位源操作数,结果在 AL,余数在 AH 中。
    (2)字操作: 32位被除数在 DXAX 中,16位除数为源操作数,结果的16位商在 AX 中,16位余数在 DX 中。
    (3)对所有的条件码位皆无影响

5. 扩展

  • CBW
  • CWD

6. 十进制调整

  • AAA
  • AAS
  • DAA
    • DAS
  • AAM
  • AAD

三 、位操作

1. 逻辑运算

  • AND
  1. 指令格式: AND DST , SRC
  • OR
  1. 指令格式: OR DST , SRC
  • NOT
  1. 指令格式: NOT OPR
  • XOR
  1. 指令格式: XOR DST , SRC
  • TEST
  1. 作用: 不保存结果,只改变对应标志位。
  2. 指令格式: TEST OPR1 , OPR2

2. 移位运算

** 当移位次数大于 1 时,需要存储在 CL **

  • SAL
  1. 作用: 算术左移。
  2. 指令格式: SAL OPR , CL
  • SAR
  1. 作用: 算术右移。
  2. 指令格式: SAR OPR , CL
  • SHL
  1. 作用: 逻辑左移。
  2. 指令格式: SHL OPR , CL
  • SHR
  1. 作用: 逻辑右移。
  2. 指令格式: SHR OPR , CL

3. 循环移位

  • ROL
  1. 作用: 循环左移。
  2. 指令格式: ROL OPR , CL
  • ROR
  1. 作用: 循环右移。
  2. 指令格式: ROR OPR , CL
  • RCL
  1. 作用: 带进位循环左移。
  2. 指令格式: RCL OPR , CL
  • RCR
  1. 作用: 带进位循环右移。
  2. 指令格式: RCR OPR , CL

四、串操作

五、程序控制

1. 调用

  • CALL
  1. 作用: 调用子程序。
  • RET
  1. 作用: 子程序结束。

2. 中断

3. 重复操作

  • JCXZ
  1. 作用: CX 的值为 0 转移。
  • LOOP
  1. 作用: CX 的值不为 0 是跳转。
  • LOOPZ
  1. 作用: CX 的值为 0 且 ZF = 1 时转移。
  • LOOPNZ
  1. 作用: CX 的值为 0 且 ZF = 0 时转移。

4. 跳转

  • JA / JNBE
  1. 作用: A > B。
  • JAE / JNB
  1. 作用: A >= B。
  • JB / JNAE
  1. 作用: A < B。
  • JBE / JNA
  1. 作用: A <= B。
  • JG / JNLE
  1. 作用: 符号指令,A > B。
  • JE / JZ
  1. 作用: 结果为 0 时转移(ZF = 1)。
  • JNE / JNZ
  1. 作用: 结果不为 0 时转移(ZF = 0)。
  • JGE / JNL
  1. 作用: 符号指令,A >= B。
  • JL / JNGE
  1. 作用: 符号指令,A < B。
  • JNC
  1. 作用: 没有 进借位。
  • JC
  1. 作用: 进借位。
  • JNS
  1. 作用: 结果不为负转移(SF = 0)。
  • JS
  1. 作用: 结果为负转移(SF = 1)。
  • JP / JPE
  1. 作用: 奇偶位为 1 时转移。
  • JNP / JPO
  1. 作用: 奇偶位不为 1 时转移。
  • JNO
  1. 作用: 结果无溢出时转移(OF = 0)。
  • JO
  1. 作用: 结果有溢出时转移(OF = 1)。

六、处理器控制

七、前缀操作

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值