華南師范大學(xué)
計算機學(xué)院2004/2005學(xué)年(下)學(xué)期期末試卷
《匯編語言程序設(shè)計》試卷(A卷)
專業(yè)____________年級04級本班級_______姓名________學(xué)號_______
題號 | 一 | 二 | 三 | 四 | 五 | 六 | 總分 |
得分 |
(要求:前四題直接寫在試卷上)
一、填空題:(每小題2分,共10分)
1.數(shù)-27的補碼表示是__11100101____(8位),擴展到16位為__1111111111100101_。
2. 一個字5678H存到地址[1234H]單元中,則56H存放在1235H單元,78H存放在1234H單元。
3. 堆棧的棧頂由 堆棧指針 寄存器指出,非棧頂字由基址指針 寄存器指出。
4.編程用的操作數(shù)有 立即數(shù) 、寄存器操作數(shù) 、內(nèi)存操作數(shù) 。
5.中斷向量是 中斷子程序的入口 ,中斷向量表是計算機中斷服務(wù)程序中的一個向量表,它紀(jì)錄著全部的中斷向量
二、改錯題(每小題2分,共20分)
(在不改變原題意的前提下,在試卷上畫出每小題的錯誤之處,并在右邊予以改正。)
1. MOV CX,SEG DATA
MOV ES,CX
MOV DS,ESMOV DS,CX
2. B DW 100
MOV AL,BMOV AX,B
3. MOV DI,30H
MOV[DI],16H MOVWORD PTR [DI],16H
4. MOV AX,BX,
INAX,BX INAX,DX
5. ADDSI,BX ADDAL,BL
DAA
6. MOV DX,30
SUB [DX],CX SUB WORD PTR[DX],CX
7. PUSHALPUSH AX
8. MOVBX,16
MOVAL,256MOV AX,256
9. INCAX,1 INCAX
10. ADD 80H,AL ADDAL,80H
IN80H,ALIN AL,80H
三、閱讀程序(根據(jù)題目要求寫出結(jié)果每小題6分,共30分)
(可以給指令另加注釋,也可以不加。)
1. 下面程序的功能是什么?
MOV AX,X
CMP AX,Y
JGE LAB
XCHG AX,Y
LAB:MOV X,AX

選擇X,Y中的較大值存入X中
2.執(zhí)行下列指令后AX、BX寄存器的內(nèi)容?
MOV SI,10H
MOV AX,1234H
MOV [SI+12H],AX
LEA BX,[SI]
MOV [SI+14H],BX
LES BX,DWORD PTR [SI+12H]
AX為1234H,BX為22H
3.下面程序的功能是什么?
MOV CH,4
LAB:MOV CL,4
ROL BX,CL
MOV DL,BL
AND DL,0FH
ADD DL,30H
CMP DL,3AH
JL PRINT
ADD DL,7
PRINT:MOV AH,02
INT 21H
DEC CH
JNZ LAB
顯示輸出BX寄存器里的內(nèi)容
4.下面程序的功能是什么?
STRING DB 100 DUP(?)
MOV AX,SEGSTRING
MOV DS,AX
LEA SI,STRING
MOV CX,100
LAB: MOV AL,[SI]
CMP AL,’a’
JB LAB1
CMPAL,’z’
JA LAB1
SUBAL,32
MOV[SI],A
LAB1: INC SI
LOOPLAB
將STRING里的小寫字母’a’-‘z’轉(zhuǎn)成相應(yīng)的大寫字母’A’-‘Z’
5.下面程序的功能是什么?
MOV AX,SEG STRING
MOV DS,AX
LEA DX,STRING
MOV AH,0AH
INT 21H
XOR BX,BX
MOV CX,BX
MOV CL,STRING[1]
LEA SI,STRING[2]
MOV AL,’A’
LAB:CMP AL,[SI]
JNZ LAB1
INC BX
LAB1:INC SI
LOOP LAB
用BX記錄輸入緩沖區(qū)中有多少個字符‘A’
四、問答題(共10分)
1.簡述上機運行匯編語言程序的過程。(6分)
答:首先打開未來匯編,新建一個空的匯編文件,后綴為.asm,然后輸入?yún)R編程序代碼,保存,再編譯成機器指令,然后連接成可執(zhí)行文件,即exe文件,最后再運行。
2. 簡述程序中指令和偽指令的區(qū)別。(4分)
能被計算機識別并執(zhí)行的二進(jìn)制代碼,它規(guī)定了計算機能完成的某一操作。
偽指令是對匯編起某種控制作用的特殊命令,其格式與通常的操作指令一樣,并可加在匯編程序的任何地方,但它們并不產(chǎn)生機器指令。
五、程序設(shè)計題(每小題15分,共30分)
1.編制完整程序?qū)崿F(xiàn)下列算式:W=X+Y+36-Z。設(shè)X、Y、Z、W均為雙字長數(shù)據(jù),各自的低十六位數(shù)和高十六位數(shù)分別存放在X、X+2、Y、Y+2、Z、Z+2的存儲單元中,結(jié)果的低十六位字和高十六位字分別存放在W和W+2兩個單元中。
DATA SEGMENT
X DD …
Y DD …
Z DD …
W DD …
DATA ENDS
CODE SEGMENT
ASSUMECS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AX,X
ADD AX,Y
MOV BX,X+2
ADC BX,Y+2
ADD AX,36
ADC BX,0
SUB AX,Z
SBB BX,Z+2
MOV W,AX
MOV W+2,BX
CODE ENDS
END START
2.編制程序段實現(xiàn):將AX寄存器中的16位二進(jìn)制數(shù)分成四組,每組4位,然后把這4組數(shù)分別放在AL、BL、CL、和DL中。
MOV BH,AL
MOV CH,AH
MOV AL,AH
AND AL,0F0H
MOV BL,AH
AND BL,0FH
MOV CL,BH
AND CL,0F0H
MOV DL,BH
AND DL,0FH
六、附加題(10分,不計入總分,僅作參考)
在附加數(shù)據(jù)段中有一首址為ADDR的沒有排序的字?jǐn)?shù)組,數(shù)據(jù)的第一個字為數(shù)組長度,第二個字開始存放數(shù)組各元素,在KEY單元存放一個要刪除的字?jǐn)?shù)據(jù)。要求編寫一完整程序,在數(shù)組中查找該數(shù),如果找到該數(shù)(可能有多個),將其從數(shù)組中刪除,并修改數(shù)組的長度。
愛華網(wǎng)

