《汇编语言程序设计》课后习题6.5参考答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6.5 下面是一个程序清单,请在下面的图中填入此程序执行过程中的堆栈变化。

;*************************
0000 STACKSG SEGMENT
0000 20 [. DW 32 DUP (?)
? ? ? ?
]
0040 STACKSG ENDS
;*************************
0000 CODESG SEGMENT PARA ‘CODE ’
;--------------------------------------
0000 BEGIN PROC FAR
ASSUME CS: CODESG , SS: STACKSG
0000 1E PUSH DS
0001 2B C0 SUB AX, AX
0003 50 PUSH AX
0004 E8 0008 R CALL B10
;--------------------------------------
0007 CB RET
0008 BEGIN ENDP
;--------------------------------------
0008 B10 PROC
0008 E8 000C R CALL C10
;--------------------------------------
000B C3 RET
000C B10 ENDP
;--------------------------------------
000C C10 PROC
;--------------------------------------
000C C3 RET
000D C10 ENDP
;--------------------------------------
000D CODESG ENDS
;*************************
END BEGIN
答:程序执行过程中的堆栈变化如下图所示。

注意:(上图中画图偏移地址是按字排,考试应该按字节排)
1) 先填写最下面的偏移地址,即0020H (如试卷中一般可根据LIST 表中的代码行“TOP LABEL WORD ”之前的地址得到),这个存储单元空着,不放任何数据或地址;
然后偏移地址从下往上以“字”为间隔排序分别为:001EH,001CH,001AH,0018H,0016H. ( 0016H ) ( 0018H ) ( 001AH ) ( 001CH ) ( 001EH ) ( 0020H ) SP : (DS) ( 0016H ) ( 0018H ) ( 001AH ) ( 001CH ) ( 001EH ) ( 0020H ) 0000 (DS) ( 0016H ) ( 0018H ) ( 001AH ) ( 001CH ) ( 001EH ) ( 0020H ) 0007 0000 (DS) 0020H 001EH 001CH 001AH ( 0016H ) ( 0018H ) ( 001AH ) ( 001CH ) ( 001EH ) ( 0020H ) 000B 0007 0000 (DS) ( 0016H ) ( 0018H ) ( 001AH ) ( 001CH ) ( 001EH ) ( 0020H ) SP : 000B 0007 0000 (DS) ( 0016H ) ( 0018H ) ( 001AH ) ( 001CH ) ( 001EH ) ( 0020H ) 000B 0007 0000 (DS) ( 0016H ) ( 0018H ) ( 001AH ) ( 001CH ) ( 001EH ) ( 0020H )
000B
0007
0000
(DS) 0018H 001AH 001CH 0020H ( 0016H ) ( 0018H ) ( 001AH ) ( 001CH ) ( 001EH ) ( 0020H ) BEGIN PUSH DS PUSH AX CALL B10
偏移地址 堆栈
(见上面8个图中第一行的第一个图)
2)考试时,一般只需要填写一个图,即堆栈满时的情况,如第2行的第一个图。

堆栈满时,堆栈顶端元素对应的偏移地址为0018H,必须与SP中的内容一致,均为0018H。

3)本题中堆栈中的字单元存放的“(DS)”,在考试时,一般用PSP的段地址来代替数据段的段地址“(DS)”,如去年的真题,PSP段地址为1234H,应将“(DS)”换为“1234H”。

相关文档
最新文档