文档介绍:数据传送指令
算术指令
逻辑指令
串处理指令
控制转移指令
处理机控制与杂项操作指令
2. 8086 的指令系统
1
重点关注:
指令的汇编格式
指令的基本功能
指令支持的寻址方式
指令的执行对标志位的影响
指令的特殊要求
2
数据传送指令:
通用数据传送指令
MOV、PUSH、POP、XCHG
累加器专用传送指令
IN、OUT、XLAT
地址传送指令
LEA、LDS、LES
标志寄存器传送指令
LAHF、SAHF、PUSHF、POPF
类型转换指令
CBW、CWD
3
传送指令: MOV DST , SRC
执行操作: ( DST ) ( SRC )
注意:
* DST 不能是 CS
* DST、SRC 不能同时为段寄存器 MOV DS, ES
* 立即数不能直接送段寄存器 MOV DS, 2000H
* DST 不能是立即数
* DST、SRC 不能同时为存储器寻址
通用数据传送指令
4
进栈指令: PUSH SRC
执行操作: ( SP ) ( SP ) – 2
( ( SP ) + 1 , ( SP ) ) ( SRC )
出栈指令: POP DST
执行操作: ( DST ) ( ( SP ) + 1 , ( SP ) )
( SP ) ( SP ) + 2
堆栈:‘先进后出’的存储区,存在于堆栈段,任何时候SP都指向栈顶。
注意:
* 堆栈操作必须以字为单位
* 不影响标志位
* 不能用立即寻址方式 PUSH 1234H
* DST 不能是 CS POP CS
5
例:假设( AX ) = 2107 H , 执行 PUSH AX
* *
* *
* *
* *
(SP)
PUSH AX 执行前
(SP)
* *
* *
* *
* *
07H
21H
低地址
高地址
PUSH AX 执行后
进栈方向
6
(SP)
* *
* *
* *
* *
07H
21H
POP BX 执行前
(SP)
* *
* *
* *
* *
07H
21H
低地址
高地址
POP BX 执行后
( BX ) = 2107H
例: POP BX
出栈方向
7
例: PUSH DS
SUB AX , AX
PUSH AX
……
……
RET
例: PUSH AX
PUSH BX
PUSH CX
……;其间用到AX、BX、CX
POP CX
POP BX
POP AX
8
交换指令: XCHG OPR1 , OPR2
执行操作: ( OPR1 ) ( OPR2 )
注意:
* 不影响标志位
* 不允许使用段寄存器
例:XCHG BX , [ BP + SI ]
XCHG AL , BH
9
累加器专用传送指令(只限使用 AX 或 AL )
输入指令( I / O CPU )
长格式: IN AL , PORT (字节)
IN AX , PORT (字)
执行操作:( AL ) ( PORT ) (字节)
( AX ) ( PORT + 1 , PORT ) (字)
短格式: IN AL , DX (字节)
IN AX , DX (字)
执行操作:( AL ) ( ( DX ) ) (字节)
( AX ) ( ( DX ) + 1 , ( DX ) ) (字)
10