通用数据传送指令 传送指令: MOV DST,SRC 执行操作:(DST)←(SRC) 注意: DST、SRC不能同时为段寄存器 MOV DS,ES 立即数不能直接送段寄存器 MOV DS,2000H DST不能是立即数和CS DST、SRC不能同时为存储器寻址 MOV AX,DSEG 不影响标志位 MOV DS.AX
26 传送指令: MOV DST, SRC 执行操作: (DST) (SRC) 注意: * DST、SRC 不能同时为段寄存器 MOV DS, ES * 立即数不能直接送段寄存器 MOV DS, 2000H * DST 不能是立即数和CS * DST、SRC 不能同时为存储器寻址 * 不影响标志位 • 通用数据传送指令 MOV AX, DSEG MOV DS, AX
进栈指令: PUSH SRC 执行操作: SP)((SP)-2 ((SP)+1,(SP))←(SRC 出栈指令 POP DST 执行操作: (DST)←((SP)+1,(SP)) (SP)←(SP)+2 堆栈:“先进后出′的存储区,段地址存放在中 SP在任何时候都指向栈顶,进出栈后自动修改SP。 注意: 堆栈操作必须以字为单位。 不影响标志位 不能用立即寻址方式PUSH1234H DST不能是CS POP CS
27 进栈指令: PUSH SRC 执行操作: (SP) (SP) – 2 ( (SP)+1, (SP) ) (SRC) 出栈指令: POP DST 执行操作: (DST) ( (SP)+1, (SP) ) (SP) (SP) + 2 堆栈: ‘先进后出’的存储区,段地址存放在SS中, SP在任何时候都指向栈顶,进出栈后自动修改SP。 注意: * 堆栈操作必须以字为单位。 * 不影响标志位 * 不能用立即寻址方式 PUSH 1234H * DST不能是CS POP CS
例:假设(AX)=2107H,执行 PUSH AX 低地址 (SP) 07H 21H (SP) 水 进栈方向 * *高地址 PUSH AX执行前 PUSH AX执行后
28 例:假设 (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
29 (SP)→ * * * * * * * * 07H 21H POP BX 执行前 (SP)→ * * * * * * * * 07H 21H 低地址 高地址 POP BX 执行后 (BX) = 2107H 例: POP BX 出栈方向
例: PUSH DS SUB AXAX PUSH AX RET 例: PUSH AX PUSH BX PUSH CX 其间用到AX、BX、CX POP CX;后进先出 POP BX POP AX
30 例: PUSH DS SUB AX, AX PUSH AX …… …… RET 例: PUSH AX PUSH BX PUSH CX …… ;其间用到AX、BX、CX POP CX ; 后进先出 POP BX POP AX