好文档 - 专业文书写作范文服务资料分享网站

汇编语言第六章答案

天下 分享 时间: 加入收藏 我要投稿 点赞

下面的程序段有错吗若有,请指出错误。 CRAY PROC PUSH AX ADD AX, BX RET

ENDP CRAY

答:程序有错。改正如下: CRAY PROC ADD AX, BX RET

CRAY ENDP ;CRAY是过程名,应放在ENDP的前面 9BH F7H 57H 80H

F0A0:00B0H

先PUSH,SP-2

再PUSH,SP-2

POP, SP+2

题堆栈及SP内容的变化过程

已知堆栈寄存器SS的内容是0F0A0H,堆栈指示器SP的内容是00B0H,先执行两条把8057H和0F79BH分别入栈的PUSH指令,然后执行一条POP指令。试画出示意图说明堆栈及SP内容的变化过程。

答:变化过程如右图所示:

分析下面的程序,画出堆栈最满时各单元的地址及内容。 ;******************************************** S_SEG SEGMENT AT 1000H ;定义堆栈段 DW 200 DUP () ;200*2=190H TOS LABEL WORD S_SEG ENDS

;******************************************** C_SEG SEGMENT ;定义代码段 ASSUME CS: C_SEG, SS: S_SEG START: MOV AX, S_SEG (FLAGS) (AX) T_ADDR 0000

(DS)

1000:0184 :0186 :0188 :018A :018C :018E SP:

0186

题堆栈最满时各单元的地址及内容

MOV SS, AX

MOV SP, OFFSET TOS PUSH DS MOV AX, 0 PUSH AX ┇

PUSH T_ADDR PUSH AX PUSHF ┇ POPF POP AX

POP T_ADDR RET

;-------------------------------------------------------------------------- C_SEG ENDS ;代码段结束

;****************************************** END START ;程序结束

答:堆栈最满时各单元的地址及内容如右图所示:

分析下面的程序,写出堆栈最满时各单元的地址及内容。 ;******************************************** STACK SEGMENT AT 500H ;定义堆栈段 DW 128 DUP () TOS LABEL WORD STACK ENDS

;******************************************** CODE SEGMENT ;定义代码段 MAIN PROC FAR ;主程序部分 ASSUME CS: CODE, SS: STACK START: MOV AX, STACK

MOV SS, AX

MOV SP, OFFSET TOS PUSH DS SUB AX, AX PUSH AX

;MAIN PART OF PROGRAM GOES HERE MOV AX, 4321H CALL HTOA RET

MAIN ENDP ;主程序部分结束

;-------------------------------------------------------------------- HTOA PROC NEAR ;HTOA子程序 CMP AX, 15 JLE B1 PUSH AX 0500:00EC :00EE :00F0 :00F2 :00F4 :00F6 :00F8 :00FA :00FC :00FE SP: 00EE

返回POP BP地址 0003H

返回POP BP地址 0002H

返回POP BP地址 0001H

主程序返回地址 0000 (DS)

题堆栈最满时各单元的地址及内容

PUSH BP

MOV BP, SP MOV BX, [BP+2] AND BX, 000FH MOV [BP+2], BX POP BP MOV CL, 4 SHR AX, CL CALL HTOA POP BP

B1: ADD AL, 30H CMP AL, 3AH JL PRINTIT ADD AL, 7H

PRINTIT: MOV DL, AL MOV AH, 2 INT 21H RET

HOTA ENDP ;HOTA子程序结束

;-------------------------------------------------------------------- CODE ENDS ;代码段结束

;****************************************** END START ;程序结束

答:堆栈最满时各单元的地址及内容如右上图所示:

下面是一个程序清单,请在下面的图中填入此程序执行过程中的堆栈变化。 ;************************* 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

答:程序执行过程中的堆栈变化如下图所示。

( 0016H ) ( 0018H ) ( 001AH ) ( 001CH ) ( 001EH ) ( 0020H ) SP: (DS)

( 0016H ) ( 0018H ) ( 001AH ) ( 001CH ) ( 001EH ) ( 0020H )

0000 (DS)

( 0016H ) ( 0018H ) ( 001AH ) ( 001CH ) ( 001EH ) ( 0020H )

汇编语言第六章答案

下面的程序段有错吗若有,请指出错误。CRAYPROCPUSHAXADDAX,BXRETENDPCRAY答:程序有错。改正如下:CRAYPROCADDAX,BXRETCRAYENDP;CRAY是过程名,应放在ENDP的前面9BHF7H57H80HF0A0:00B0H
推荐度:
点击下载文档文档为doc格式
5c69m6bocx7z7sh75m1a072ie1yhw200n39
领取福利

微信扫码领取福利

微信扫码分享