例:假设(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 ) ) (字)