汇编语言堆栈的问题

下面是某程序的汇编列表文件,请将程序执行过程中堆栈最满时的状况填入下表。假设程序执行时PSP段地址为1234H。
地址位移量 机器码 汇编语言指令
0000 STACKSG SEGMENT STACK
0000 20 [????] DW 32 DUP(?)
0040 TOP LABEL WORD
0040 STACKSG ENDS
0000 CODESG SEGMENT
ASSUME CS:CODESG,SS:STACKSG
0000 BEGIN PROC FAR
0000 B8 ---- R MOV AX,STACKSG
0003 8E D0 MOV SS,AX
0005 BC 0040 R MOV SP,OFFSET TOP
0008 1E PUSH DS
0009 33 C0 XOR AX,AX
000B 50 PUSH AX
000C E8 0010 R CALL B10
000F CB RET
0010 BEGIN ENDP
0010 B10 PROC NEAR
0010 E8 0014 R CALL C10
0013 C3 RET
0014 B10 ENDP
0014 C10 PROC NEAR
0014 C3 RET
0015 C10 ENDP
0015 CODESG ENDS
END BEGIN

位移 栈内容
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )

SP

不明白这些题怎么做啊
位移和栈内容下面有个表格的,可是这里复制不出来,是2列的表格 然后填表格里面的内容 各位高手教教小弟啊,感激不尽

题目给的是一.LST文件,先还原为PSTACK.ASM

STACKSG SEGMENT STACK
DW 32 DUP(?)
TOP LABEL WORD
STACKSG ENDS
CODESG SEGMENT
ASSUME CS:CODESG,SS:STACKSG
BEGIN PROC FAR
MOV AX,STACKSG
MOV SS,AX
MOV SP,OFFSET TOP
PUSH DS
XOR AX,AX
PUSH AX
CALL B10
RET
BEGIN ENDP
B10: PROC NEAR
CALL C10
RET
ENDP
C10: PROC NEAR
RET
ENDP
CODESG ENDS
END BEGIN

用MASM和LINK汇编链接得PSTACK.EXE

再运行CMD进到命令提示符下:

输入DEBUG PSTACK.EXE(回车),依次键入:
-d:0 显示如下:
13DC:0000 CD 20 FF 9F ... ...
先记下PSP段地址为13DCH;再输入
-r 显示:
... ...
DS=13DC ES=13DC SS=13EC CS=13F0 IP=0 ...
再输入
-t=0
-t
...
输入n个t后,到IP=40时,SP=0038H,堆栈最满.
此时执行
-dss:0,显示:
... ...
13EC:0030 00 00 14 00 F0 13 F0 0D-13 00 0F 00 00 00 DC 13
由于每台电脑执行程序时,浮动地址不一,题目给定
PSP=1234H,与本机PSP段地址为13DCH相差后,依次填入下表:

位移 栈内容 [十六进制]
(0032) (0014) ;IP 入栈
(0034) (1248) ;CS 入栈
(0036) (0584)
(0038) (0013) ;IP 入栈
(003A) (000F)
(003C) (0000);push ax 时入栈的数据
(003E) (1234);push ds 时入栈的段址
SP=0038H
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-01-02
表格是什么呀?怎么就只有括号呀?开始是1234H在执行0005 BC 0040 R MOV SP,OFFSET TOP 后SP就变成了0040 TOP LABEL WORD 的地址看这两个地址哪个大吧不知道你程序0040 TOP LABEL WORD 地址是不是0040H
相似回答