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