主题:关于堆栈
每次用 push AX,SP-2
pop AX SP+2
或是push [0200],pop [0200]
MOV AX,0709
PUSH AX
JMP 100
(用DEBUG)
AX=0709 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=137B ES=137B SS=137B CS=137B IP=0103 NV UP EI PL NZ NA PO NC
137B:0103 50 PUSH AX
-t
AX=0709 BX=0000 CX=0000 DX=0000 SP=FFEC BP=0000 SI=0000 DI=0000
DS=137B ES=137B SS=137B CS=137B IP=0104 NV UP EI PL NZ NA PO NC
137B:0104 EBFA JMP 0100
-d FFEC
137B:FFE0 09 07 00 00 ....
137B:FFF0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
SP=FFEC,注意到09 07没有
FFEC -> 09
FFED -> 07
AL=09,AH=07
AX=0709 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=137B ES=137B SS=137B CS=137B IP=0100 NV UP EI PL NZ NA PO NC
137B:0100 FF360002 PUSH [0200] DS:0200=0201
-t
AX=0709 BX=0000 CX=0000 DX=0000 SP=FFEC BP=0000 SI=0000 DI=0000
DS=137B ES=137B SS=137B CS=137B IP=0104 NV UP EI PL NZ NA PO NC
137B:0104 EBFA JMP 0100
-d FFEC
137B:FFE0 01 02 00 00 ....
137B:FFF0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
-d 200
137B:0200 01 02 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
137B:0210 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
137B:0220 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
137B:0230 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
137B:0240 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
137B:0250 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
137B:0260 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
137B:0270 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
我的意思是说,push进栈不改变数据在内存中的存储次序(Littel Endian方式)
pop AX SP+2
或是push [0200],pop [0200]
MOV AX,0709
PUSH AX
JMP 100
(用DEBUG)
AX=0709 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=137B ES=137B SS=137B CS=137B IP=0103 NV UP EI PL NZ NA PO NC
137B:0103 50 PUSH AX
-t
AX=0709 BX=0000 CX=0000 DX=0000 SP=FFEC BP=0000 SI=0000 DI=0000
DS=137B ES=137B SS=137B CS=137B IP=0104 NV UP EI PL NZ NA PO NC
137B:0104 EBFA JMP 0100
-d FFEC
137B:FFE0 09 07 00 00 ....
137B:FFF0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
SP=FFEC,注意到09 07没有
FFEC -> 09
FFED -> 07
AL=09,AH=07
AX=0709 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=137B ES=137B SS=137B CS=137B IP=0100 NV UP EI PL NZ NA PO NC
137B:0100 FF360002 PUSH [0200] DS:0200=0201
-t
AX=0709 BX=0000 CX=0000 DX=0000 SP=FFEC BP=0000 SI=0000 DI=0000
DS=137B ES=137B SS=137B CS=137B IP=0104 NV UP EI PL NZ NA PO NC
137B:0104 EBFA JMP 0100
-d FFEC
137B:FFE0 01 02 00 00 ....
137B:FFF0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
-d 200
137B:0200 01 02 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
137B:0210 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
137B:0220 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
137B:0230 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
137B:0240 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
137B:0250 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
137B:0260 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
137B:0270 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
我的意思是说,push进栈不改变数据在内存中的存储次序(Littel Endian方式)