匯編——模擬試卷二


1. 指令MOV AX,COUNT[SI],它源操作數的尋址方式是(B)。

A. 直接尋址     B. 寄存器相對尋址    C. 寄存器間接尋址     D. 基址變址尋址

2. 下列4 條指令中,錯誤的指令是( )。

A. SHR AX,1      B. MOV AX,ES: [DX]

C. SUB CX,AX   D. ADD BX,[SP+DI]

1 [DX]不能用來內存單元的尋址
View Code

3. 在IBM PC 微機中,如果某一內存單元的物理地址是7E7F6H,那么它的邏輯地址是(B):DDF6H。

A. 70B0H     B. 70A0H    C. 70C0H     D. 7E76H

4.MOV AL,12H

 ADD AL,OFFH

上述兩條指令執行后,CF 和OF 的值是(A)。

A. CF=1 OF=0 B. CF=1 OF=1

C. CF=0 OF=1 D. CF=0 OF=0

1 12H+0FFH
2 產生進位 ==> CF=1
3 沒有產生溢出 ==> OF=0
View Code

5. 使用LINK 連接命令,執行后可生成文件的擴展名為(B)。

A. COM   B. EXE   C. OBJ   D. LST

6. 累加器AL 中的內容為81H,CMP AL,執行54H 指令后,累加器AL 中的內容為(C)。

A. 23H   B. 00H  C. 81H   D. D5H

1 雖然我沒看懂這道題要表達的意思,但CMP是判斷指令,只會修改flag寄存器的內容,別的寄存器(AL...)不會修改的
View Code

7. 在串操作指令前使用重復前綴指令REPE,終止串的重復操作條件是(C)。

A. CX=0 且ZF=0     B. CX=0 且ZF=1    C. CX=0 或ZF=0     D. CX=0 或ZF=1

8. 執行下列指令后,正確的結果是(B)。

MOV AL,100

MOV BL,-1

A. AL=100H,BL=01H    B. AL=64H,BL=0FFH    C. AL=64H,BL=81H     D. AL=100H,BL=0FFH

1 100 ==> 64H
2 
3 -1 ==> FFH
View Code

9. 在循環程序中使用LOOP 指令作為循環結束的判斷,其計數值一般應放的寄存器是(B)。

A. DX   B. CX  C. BP   D. IP

10. 在匯編語言程序設計中,偽指令OFFSET 的含義是回送變量或標號的(B)。

A. 段地址值   B. 偏移地址值  C. 物理地址值   D. 操作數

11. 指令指針寄存器IP 用於存放代碼段中的偏移地址,在程序執行過程中,它始終指向(B)。

A. 上一條指令的首地址     B. 下一條指令的首地址

C. 正在執行指令的首地址      D. 需計算有效地址后才能確定的地址

12. 下面的數據傳送指令中,錯誤的操作是(D)。

A. MOV SS:[BX+DI],1000H

B. MOV DX,1000H

C. MOV WORD PTR[BX],1000H

D. MOV DS,2000H

1 無法直接給段寄存器賦值
View Code

13. 為了使執行串操作指令時地址按減量方式處理,應使用的指令是(A)。

A. STD     B. STI    C. CLD     D. CLI

14. 執行下列指令序列后,正確的結果是(B)。

MOV AL,78H  ; AL=78H

MOV BL,58H  ; BL=58H

ADD AL,BL    ; AL=AL+BL=D0H

DAA

A. AL=36H CF=1 AF=1     B. AL=36H CF=1 AF=0

C. AL=36 CF=1 AF=0       D. AL=C6H CF=1 AF=1

 1 DAA指令:
 2 if (al的低4位 > 9 || af=1){
 3     al += 6
 4     af = 1
 5 }if(al高4位 > 9 || cf=1){
 6     al += 60
 7     cf = 1
 8 }else{
 9     af = 0
10     cf = 0
11 }
12 
13 
14 AF為輔助進位標志,表示運算中第3位是否向第4位有進位或借位
View Code

15. 對寄存器AX 的內容乘以4 的正確指令序列是(B)。

A. SHR AX,1      B. SHL AX,1

    SHR AX,1        SHL AX,1

C. ROL AX,1        D. RCR AX,1

    ROL AX,1        RCR AX,1

16. 在下列指令的表示中,不正確的是(C)。

A. MOV AL, [BX+SI]       B. JMP SHORT DON1

C. DEC [BX]             D. MUL CL

17. 若AX=3500H,CX=56B8H,當執行AND AX,CX 指令后,AX 的值是(A)。

A. 1400H   B. 77F8H   C. 0000H   D. 0FFFFH

1 AX = 0001 0100 0000 0000
2 CX = 0101 0110 1011 1000
3 
4 AND AX,CX
5 
6 AX = 0001 0100 0000 0000 ==> 1400H
View Code

18. 下面對偽指令語句的說明,正確的是(A)。

A. 由匯編程序在匯編過程中執行的指令是偽指令

B. 當匯編結束后,目標程序中仍保留有偽指令

C. 偽指令是程序運行階段完成其功能

D. 匯編程序將偽指令翻譯成機器碼

1 偽指令在編譯的時候並不生成代碼
View Code

19. 用MOV 指令將十進制數64 以組合型BCD 碼格式送入AX,正確使用的指令是( )。

A. MOV AX,0604     B. MOV AX,0064H      C. MOV AL,0604H     D. MOV AL,0064

1 64d的組合BCD碼是 0110 0100b =64h
2 用指令 MOV AX, 64h
View Code

20. 執行XLAT 指令時,要將表的首地址和偏移地址分別存放的寄存器是( )。

A. BX、AL     B. AL、BX    C. AX、BL     D. BL、AX

1 xlat指令:操作是以DS:[BX+AL]為地址,提取存儲器中的一個字節再送入AL。
View Code

二、填空題(每空1 分,共5 分)

名詞解釋:請將1~3 小題的敘述與下面的詞語聯系起來,括號內填入對應的A,B,C。

1. 以后進先出方式工作的存儲空間是(B)。

2. 告訴計算機要執行的操作(一般還要指出操作的地址),在程序運行時執行的是(C)。

3. 保存邏輯段起始地址的寄存器,IBM PC 機有四個:CS、DS、SS、ES 是(A)。

詞語:A. 段寄存器   B. 堆棧   C. 指令

4. 假設(SS)=2250H,(SP)=0140H,如果在堆棧中存入5 個數據,則堆棧的物理地址為  22636H   

1 往棧里添加數據,是先將sp=sp-2,然后在將數據送入棧中
2 
3 22500+0140-A=22636H
View Code

5. 指令MOV AX,VAR[BX]屬於    寄存器相對    尋址。

 1 [BX,SI,DI,BP]
 2 
 3 [BX+SI]...
 4 
 5 idea[BX]...
 6 
 7 [BX][BP]....
 8 
 9 [BX].idea...
10 
11 [BX].idea[SI]
View Code

三、簡答題(每題2 分,共6 分)

1. 下列語句在存儲器中分別為變量數據區分配多少個字節單元?

(1)VAR1 DD 10        ==> 雙字 4bytes

(2)VAR2 DW 4 DUP(?),2   ==> 10bytes

2. 在指令系統中,段內、段間返回均為RET 指令。試回答:

(1)執行段內返回RET 指令時,執行的操作是 。   ==> 將ip從棧中pop出來,然后返回

(2)執行段間返回RET 指令時,執行的操作是 。   ==> 將ip,cs依次從棧頂取出

3. 已知指令ARRAY DB 2 DUP(1 DUP(3)),則:

指令 MOV AX,Length ARRAY,執行后,AX=   2  

指令 MOV AX,SIZE ARRAY,執行后AX=   2  

四、程序分析題(每小題5 分,共35 分)

1. MOV AX,00FFH    ; ax=00ffh=0 0 1111 1111

AND AX,0FFFH      ; 0 1111 1111 1111  ax=00ffh

OR AX,0F0FH      ; ax=0fffh

XOR AX,00FFH         ; 0f00h

問:上述程序段執行后,AL 的內容是什么?    (AL)=00H

2.  DATA1 DB 500 DUP(?)  ; 0~499

  DATA2 DB 100 DUP(?)  ; 500~599

MOV CX,100          ; cx=100

MOV BX,400          ; bx=400

MOV SI,0             ; si=0

MOV DI,0             ; di=0

   LOP: MOV AL,DATA1 [BX][SI]  ; al=?

    MOV DATA2 [DI],AL

    INC SI

    INC DI

    LOOP LOP

問:上述程序段執行后完成的功能是什么?  將DATA1的后100個數據,復制到DATA2中

3. MOV AX,0012H

MOV BX,0034H

MOV CL,8

ROL AX,CL

OR AX,BX

問:上述程序段執行后,AX 寄存器的內容是什么?    1234H

4. 已知(AX)=0A5C6H,(CX)=0F03H,CF=1

RCL AX,CL

AND AH,CH

RCR AX,CL

問:上述三條指令執行完后,(AX)= A1C6H,CF=1 。

 

5.  SUB AL,AH  ***

  DAS

若指令執行前,(AL)=86,(AH)=07;則指令執行后,(AL)=79H ,CF=0 ,AF= 1。

1 因為已經是十進制的格式了,所以不用執行DAS指令
2 
3 79 ==> 0111 1001 ==>79H
View Code

6.  ORG 0050H

DA1 DW 56H,78H  ; 50~53

DA2 EQU $ -DA1     ; 常量,不占儲存空間

DA3 DB?      ; 54

LEA BX,DA3

MOV CX,DA2

MOV AX,DA2 SHR 1

問:(AX)= 0002h,(BX)=0054h ,(CX)= 0004h

7.  MOV AL,11H

     XOR AL,3

問: (1)上述程序段執行后完成什么功能?    取反AL 寄存器的第0 位和第1 位。

(2)程序段執行后AL 寄存器的內容是什么?    (AL)=12H

五、程序填空題(每小題6 分,共12 分)

1. 設已定義數據區如下:

DATA SEGMENT

DAX DB XXH

DAY DB

DATA ENDS

下列程序段完成功能:判斷變量DAX 的值是否大於等於0。若大於等於0,則將DAY 單元置為0FFH;否則,將DAY 單元的值置為00H。請在空白處填上適當的指令(每一空白處只填一條指令)。

 1 MOV AL,DAX
 2 
 3 CMP AL,0
 4 
 5 __jnb GRE__
 6 
 7 MOV AL,0
 8 
 9 __jmp LEE__
10 
11 GRE: MOV AL,OFFH
12 
13 LEE: MOV DAY,AL

2. 為使DA2 子單元的值為50H,等號語句NUM 的空白處應填多少?

ORG 34H

NUM=  0Ch        

DA1 DW 10H$+20H30H$+40H  ; 34~41

DA2 DW offset DA1+NUM+10H

六、編程題(共22 分)

1. 試編寫程序段:要求鍵盤輸入的小寫字母用大寫字母顯示出來(5 分)。

 1  START:MOV AH,01h
 2         INT 21H        ; 中斷調用,接受鍵盤輸入,存放到al中
 3         
 4         CMP AL,'a'
 5         JB STOP
 6         CMP AL,'z'
 7         JA STOP
 8         
 9         SUB AL,20H        ; -20 ==> 大寫
10         MOV DL,AL        ; 將結果放到dl寄存器中
11         
12         MOV AH,02h        ; 輸出dl寄存器的內容
13         INT 21H
14         
15         JMP START
16         
17  STOP: RET

2. 假設數據區定義如下:

DATA SEGMENT

  ARRAY DB THIS IS MASM PROGRAM’,‘$

DATA ENDS

編寫程序段,將以ARRAY 為首地址的字符串顯示輸出(5 分)。

1 MOV AX,DATA
2 MOV DS,AX
3 4 MOV DX,OFFSET ARRAY(或LEA ARRAY)
5 MOV AH,09H        ; DOS調用中的09號功能,就是在屏幕上顯示字符串
6 INT 21H

3. 假設在以ARRAY 為首地址的存儲區中存放10 個帶符號的字節數。試編制程序,統計出其中不大於10 的元素的個數(12 分)。

 1 ASSUME CS:CODE,DS:DATA
 2 
 3 DATA SEGMENT
 4     ARRAY DB XX,XX…XX ;存放10 個帶符號的數。
 5     NUM DB ?
 6 DATA ENDS
 7 
 8 CODE SEGMENT
 9 
10  START:MOV AX,DATA
11         MOV DS,AX
12         
13         LEA SI,ARRAY    ; mov si,offset array
14         XOR AL,AL        ; mov al,0
15         MOV CX,10
16  LOP1: MOV AL,[SI]
17         CMP AL,10
18         JGE LOP2        ; jnb lop2 大於等於跳轉到lop2
19         
20         INC BL            ; 否則將bl+1
21         
22  LOP2: INC SI
23         LOOP LOP1
24         MOV NUM,BL
25         
26         MOV AH,4CH
27         INT 21H
28         
29 CODE ENDS
30 END START

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM