c++习题定义堆栈类

 我来答
DoramiHe
2018-04-09 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25332 获赞数:59543
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部
题目给的是一.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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式