汇编语言(四)——8086/8088的指令系统

本文详细介绍了8086/8088处理器的指令系统,包括数据传送指令、算术指令、逻辑指令、串处理指令和处理机控制与杂项操作指令。重点讲解了各种指令的格式、操作数类型、执行速度以及具体操作,如MOV、PUSH、POP、XCHG、XLAT等,并提供了相关操作的注意事项和示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.3 80x86的指令系统

指令格式: 操作码 操作数
ADD AL,10H
操作码:指明CPU要执行什么样的操作,有以下几种

数据传送、算术运算、逻辑运算、串操作、控制转移、处理机控制

操作数:指明参与操作的数据或数据所在的地方,操作数有以下三种来源。

  • 立即数操作数:操作数在指令中。 MOV AL,9
  • 寄存器操作数:操作数在寄存器中。 MOV AL,BL
  • 存储器操作数或内存操作数:操作数在内存单元中。 MOV AL,[2000H]

操作数类型

  • 指令中有寄存器操作数,有寄存器操作数决定类型。
  • 指令操作数中无寄存器,则由内存操作数的类型决定。
  • 指令中无类型的依据,需对存储器操作数加类型说明。

执行速度

由快到慢:寄存器操作数 -》 立即数操作数 -》 存储器操作数

3.3.1 数据传送指令
  • 通用数据传送指令:MOV、PUSH、POP、XCHG、XLAT
  • 地址传送指令:LEA、LDS、LES
  • 标志寄存器传送指令:LAHF、SAHF、PUSHF、POPF
  • 类型转换指令:CBW、CWD

通用数据传送指令

  • 传送指令: MOV DST,SRC
    执行操作:(DST)《- (SRC)
    注意:1.两个操作数的类型要相同;2.DST、SRC不可同时为段寄存器;3.立即数不能直接送段寄存器;4.DST不能是立即数和CS;5.DST、SRC不能同时为存储器寻址;6.指令指针IP,不能作为MOV指令的操作数;7.不影响标志位。

  • 进栈指令: PUSH SRC
    执行操作:(SP)<- (SP)-2 ((SP)+1,(SP))<-(SRC)

  • 出栈指令:POP DST
    执行操作:(DST)《-((SP)+1,(SP)) (SP)《- (SP)+ 2
    堆栈:‘后进先出’的存储区,段地址存放在SS中,SP在任何时候都指向栈顶,进出栈后自动修改SP。
    注意:1.该操作以字为单位;2.该堆栈是栈顶在高位(即底下),栈底在低位(即上面),这点和C语言差别很大。

  • 所有寄存器进栈指令:PUSHA
    功能:16位通用寄存器依次进栈,次序为AX、CX、DX、BX,指令执行前的SP、BP、SI、DI。执行后(SP)-16 —> (SP),SP仍指向栈顶。

  • 所有寄存器出栈指令:POPA
    功能:16位通用寄存器依次出栈,次序为DI、SI、BP、SP,指令执行前的B

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值