《匯編語言 廖建明主編 第六章習(xí)題答案》由會員分享,可在線閱讀,更多相關(guān)《匯編語言 廖建明主編 第六章習(xí)題答案(5頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第六章習(xí)題答案
6.1 C
6.2 D
6.3 D
6.4 C
6.5 B
6.6 錯。在L0: MOV AL,0語句后面加上RET語句
6.7
段內(nèi)調(diào)用:保存IP內(nèi)容入棧;更新IP內(nèi)容
段間調(diào)用:保存CS,IP內(nèi)容入棧;更新CS,IP內(nèi)容
6.8
段內(nèi)返回:從棧中彈出一個字的內(nèi)容送入IP寄存器;SP=(SP)+n(如果帶有操作數(shù)n)
段間返回:從棧中彈出兩個字的內(nèi)容分別送入IP,CS;SP=(SP)+n(如果帶有操作數(shù)n)
6.9
從棧中彈出兩個字的內(nèi)容分別送入IP,CS;SP=(SP)+4
6.10
在需要和主程序共享寄存器的時候需要保護(hù)寄存器
6.
2、11
寄存器傳遞參數(shù);堆棧傳遞參數(shù);地址表傳遞參數(shù)
6.12
相同點:都進(jìn)行一次程序跳轉(zhuǎn)
不同點:CALL會保存原地址IP入棧,而JMP不會
6.13
錯誤:子程序是FAR類型的,CALL時用的是NEAR
6.14
BX;(BX);SHIFT
6.15
圖略
6.16
DATA SEGMENT
N DB 5
DATA ENDS
STACK SEGMENT
DW 20H DUP(0)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
BEGIN:
MOV AX,DATA
MOV DS,AX
3、
MOV AL,N
CALL FACT;調(diào)用階乘子程序計算5!
MOV RESULT,DX
DEC N
MOV AL,N
CALL FACT;調(diào)用階乘子程序計算4!
ADD RESULT,DX
DEC N
MOV AL,N
CALL FACT;調(diào)用階乘子程序計算3!
ADD RESULT,DX
MOV AH,4CH
INT 21H
FACT PROC NEAR;階乘子程序
MOV DX,1
CMP AL,0
JZ DONE
PUSH AX
DEC AL
CALL FACT
POP AX
MUL DL
MOV DX,AX
DONE:
RET
4、
FACT ENDP
CODE ENDS
END BEGIN
6.17
略
6.18
(1)寄存器傳值
MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET NUM
MOV CX,COUNT
MOV DX,0
CALL F
MOV AH,4CH
INT 21H
F PROC
LOP:
MOV DI,OFFSET NUM20
ADD DI,DX
INC DX
XOR BL,BL
MOV AX,[SI]
LOP20:
CMP AX,20
JC SUB5
SUB AX,20
INT BL
JMP LOP2
5、0
SUB5:
MOV [DI],BL
XOR BL,BL
LOP5:
CMP AX,5
JC SUB2
SUB AX,5
INT BL
JMP LOP5
SUB2:
ADD DI,COUNT; DI=DI+2*COUNT
MOV [DI],BL
XOR BL,BL
LOP2:
CMP AX,2
JC SUB1
SUB AX,2
INT BL
JMP LOP2
SUB1:
ADD DI,COUNT SHL 1;DI=DI+2*COUNT
MOV [DI],BL
XOR BL,BL
LOP1:
CMP
6、 AX,1
JC DONE
SUB AX,1
INT BL
JMP LOP1
DONE:
ADD DI,COUNT
ADD DI,COUNT
ADD DI,COUNT;DI=DI+3*COUNT
MOV [DI],BL
ADD SI,2
LOOP LOP
RET
F ENDP
EODE ENDS
(2)堆棧傳值
BEGIN:
MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET NUM
MOV DI OFFSET NUM20
MOV CX,COUNT
PUSH SI
PUSH D
7、I
PUSH CX
CALL F
MOV AH,4CH
INT 21H
F PROC
PUSH AX
PUSH BX
PUSH CX
PUSH SI
PUSH DI
MOV BP,SP
MOV CX,12[BP]
MOV DI,14[BP]
MOV SI,16[BP]
LOP:
XOR BL,BL
MOV AX,[SI]
LOP20:
CMP AX,20
JC SUB5
SUB AX,20
INC BL
JMP LOP20
SUB5:
MOV [DI],BL
XOR BL,BL
LOP5
8、:
CMP AX,5
JC SUB2
SUB AX,5
INC BL
JMP LOP5
SUB2:
MOV [DI+COUNT],BL
XOR BL,BL
LOP2:
CMP AX,2
JC SUB1
SUB AX,2
INC BL
JMP LOP2
SUB1:
MOV [DI+COUNT+COUNT],BL
XOR BL,BL
LOP1:
CMP AX,1
JC DONE
SUB AX,1
INC BL
JMP LOP1
DONE:
MOV [DI+COUNT+COUNT+COUNT],BL
ADD SI,2
INT DI
LOOP LOP
RET
F ENDP
CODE ENDS
END BEGIN