1. 程式人生 > >組合語言題目練習_1

組合語言題目練習_1

一、單項選擇題

1.設BX=2000H,SI=3000H,指令MOV AX,[BX+SI+8]的源操作有效地址為(  )。

源運算元的定址方式為基址加變址定址方式,2000+3000+8=5008H

2.設DS=1000H,ES=2000H,BX=3000H,指令ADD  AL,[BX]的源運算元的物理地址為(   )。

源運算元的定址方式為暫存器間接定址方式,源運算元即為[BX],在約定中,BX的約定段為DS,BP約定段為SS,因此[BX]實為DS:[BX],即實體地址為1000H*10H+3000H=13000H

3.設DS=2000H,ES=3000H,SI=200H,指令MOV  ES:[SI],AL的目的運算元

的實體地址為(    )。

目的運算元的定址方式為暫存器間接定址方式,3000H*10H+200H=30200H

4.用來作為暫存器間接定址的暫存器有(     )個。

4個,分別是BP、BX、SI、DI

5.指令MOV  [BX+SI],AL中的目的運算元使用(     )段暫存器。

約定資料段詳細如下:堆疊段SS:BP ,資料段DS:BX、SI、DI,因此[BX+SI]使用DS段暫存器

6.指令MOV  BX,[BP+5]中的源運算元使用(   SS

 )段暫存器。

7.段內間接定址只改變(   IP  )中的內容。

8.段間間接定址只改變(CS和IP)中的內容。

9.下列指令不改變PSW的指令是()

A.MOV   AX,BX        B.AND   AL,0FH

C.SHR    BX,CL        D.ADD   AL,BL

PSW狀態暫存器

10.

下述指令中不影響CF的指令是(   )。

A.SHL   AL,1            B.INC   CX

C.ADD   [BX],AL       D.SUB   AX,BX

INC影響A、O、P、S、Z,不影響C標誌,SUB和ADD對六個都有影響,SHL將目的運算元順序左移1位或CL暫存器中指定的位數。左移一位時,運算元的最高位移入進位標誌位CF,最低位補零。

11.兩個整數補碼9CH和7AH相加運算後,會產生(   )。

                   1001 1100H

                + 0111 1010H

               ————————              兩個加數最高位不同,則不溢位,且產生了進位

                 1 0001 0110H          

12.指令JMP  WORD  PTR [BX]屬於(   )定址。
A.段內直接   B.段內間接    C.段間直接   D.段間間接

13指令MOV  AX,[BX+SI+8]的源運算元屬於(   )定址。

A.直接       B.暫存器相對  C.基址變址   D. 相對基址變址

14.指令(   )不改變CF的內容。

A.DEC  AL              B.ADD  AX,CX

C.SUB  [BX],CL     D.SBB   AL,DL

DEC影響A、O、P、S、Z,不影響C標誌,ADD、SUB、SBB對6個狀態標誌位產生影響

15.十進位制數字74所對應的壓縮型BCD碼的形式是74H。

16.十進位制數字85所對應的非壓縮型BCD碼的形式是(  0805H  )。

17.設AL=67H,執行“CMP   AL,76H”後,AL=(    )

CMP的功能是目標運算元減去源運算元,目標運算元不變,依據減法的情況設定6個狀態標誌位。

18.設AL=65H,BL=29H,執行下列指令後,AL=(   94H )。
        ADD  AL,BL
        DAA//調整指令

19.壓棧操作是(     )位數的操作。

A.8           B.16         C.32         D.任意

20.執行IMUL指令時,如果乘積的高位部分不是低位部分的符號擴充套件,則( D  )。

A.OF=0、CF=0   B.OF=0、CF=1   C.OF=1、CF=0   D.OF=1、CF=1  

出現溢位和進位

21.設AX=3762H,CL=5,執行“SHR  AX,CL”後,AX=(   B )。
A.0376H      B.01BBH      C.01BB      D.0376

原來為0011011101100010B,移位後為0000 0001 1101 1101 B
22.若要在BUF緩衝區中尋找與AL中不相等的資料,應使用( )SCASB串操作指令。
A.REPNE       B.REP        C.REPE    D.REPNZ
23.如果“JNC  L”指令的操作碼放在0040H,轉移後在0020H處取下一條指令的操作碼,那麼該條指令的位移量是(  A )。
A.20H        B.1EH        C.0DEH      D.0E0H

有待討論?
24.如果“JA  P”指令的操作碼放在0050H, 該指令的位移量為34H,執行完此條指令轉 移到取下一條指令的偏移地址為(C)
A.0082H      B.0084H      C.0086H      D.0088H


25.若DS=1000H,BX=2000H,(12000H)=56H,(12001H)=78H,AX=1000H,執行“ADD AX,[BX]”指令後,AX=(    )。

7856+1000H=8856H
26.設AX、BX暫存器中存放的是有符號的二進位制資料,若執行“CMP  AX,BX”指令後,(   D )L表示大於則轉L。
A.JZ         B.JA       C.JGE      D.JG

JG大於則轉移,JGE大於等於則轉移,JL小於則轉移,JLE小於等於則轉移
27.執行“DIV  BX”指令後,(  C   )暫存器中存放商。
A.AL        B.AH       C.AX      D.DX

字除法,商送入AX,餘數送入DX中。
28.執行“( A  )AX,BX”指令不改變AX暫存器中的內容。
A.CMP       B.ADD     C.XOR     D.OR
29.若AX=1000H,執行“NEG  AX”指令後,AX=(  C )。
A.1000H      B.0E000H   C.0F000H   D.1001H 

     AX=0001 0000 0000 0000B NEG求補後 11110000000000000B=0F00H


二、多項選擇題
 1.在下列定址方式中,用來訪問記憶體的定址方式有(   )。
       A.暫存器定址     B.暫存器間接定址     C.暫存器相對定址     D.直接定址
儲存器運算元定址也稱為記憶體運算元定址

 2.用來作為暫存器間接定址的暫存器有(   )。
       A.AX           B.BX           C.BP          D. CX

還有SI和DI
 3.在下列指令中,源運算元使用DS段暫存器進行暫存器相對定址的有(   )。
       A.MOV  AX,[DI+4]            B.MOV   AX,ES:[SI+8]
       C.MOV   AX,[BP+4]            D.MOV  AX,[BX+4]
SS:BP,DS:BX、SI、DI

 4.在下列指令中,源運算元的定址方式是錯誤的有(   )。
A.MOV   AX,[DI+BX]  暫存器間接定址       B.MOV   AX,[SI+DI]
C.MOV   AX,[BP+BX]                     D.MOV  AX,[DX]
 5.在下列指令中,屬於段內轉移指令的有( ABD  )。
A.JMP         SHORT  A                  B.JMP         [BX]

C.JMP         DWORD  PTR [BX]     D.JMP         NEAR  PTR [BX+SI]

轉移和呼叫指令

根據轉移功能的不同,可分為無條件轉移指令、條件轉移指令、子程式呼叫與返回指令和軟體中斷與中斷返回指令。

根據轉移範圍的不同,可分為段內轉移和段間轉移。段內轉移在執行時僅修改IP(EIP)的值,CS的值保持不變,段間轉移同時修改CS的值和IP(EIP)的值。在轉移呼叫指令中,條件轉移指令只能實現段內轉移,無條件轉移指令、子程式呼叫與返回指令可以實現段內轉移和段間轉移,軟體中斷指令和返回指令只能實現段間轉移。

按照指令運算元中轉移地址給出方式的不同,可分為直接轉移和間接轉移。直接轉移時轉移呼叫指令的運算元是轉移到的目標指令地址,這個目標地址使用目標指令的標號即符號地址方式。如果目標地址已被存放在暫存器或記憶體單元中並將其作為轉移呼叫指令的運算元時即為間接轉移。

1.無條件段內直接轉移

JMP 標號/JMP SHORT 標號

2.無條件段內間接轉移

JMP 暫存器運算元/JMP 記憶體運算元

3.無條件段間直接轉移

JMP FAR PTR 標號/JMP 標號

4.無條件段間間接轉移

JMP 記憶體運算元

5.條件轉移指令

                     根據狀態標誌位進行轉移

                     根據兩個無符號數的相對大小:JA JNA JC JNC JNBE JBE JB/JNAE JNB/JAE

                     根據兩個符號數的相對大小:JG JGE JL JLE JNLE JNL JNGE JNG

                     迴圈控制轉移

6.子程式段內直接呼叫指令

CALL 同一程式碼段的過程名(子程式名)

7.子程式段內間接呼叫指令

CALL 同一程式碼段的暫存器運算元/CALL 同一程式碼段的記憶體運算元

8.子程式段間直接呼叫指令

CALL 不同程式碼段的過程名(子程式名)

9.子程式段間間接呼叫指令

CALL 不同程式碼段的暫存器運算元/CALL 不同程式碼段的記憶體運算元

10.子程式段內無引數返回指令

RET    注:子程式和主程式同處於一個程式碼段

11.子程式段間無引數返回指令

RET    注:子程式和程式碼段處於不同的程式碼段

12.子程式段內有引數返回指令

RET N(N為偶數) 子程式和主程式同處於一個程式碼段,從堆疊的棧頂彈出2個位元組到IP,SP=SP+2,CS內容不變,之後堆疊指標再次進行運算SP=SP+N從當前棧頂向堆疊高地址方向再調整N個位元組

13.子程式段間有引數返回指令

RET N(N為偶數) 子程式和主程式分別位於不同的程式碼段,從堆疊的棧頂彈出2個位元組到IP,再彈出兩個位元組到CS,SP=SP+4,CS內容不變,之後堆疊指標再次進行運算SP=SP+N從當前棧頂向堆疊高地址方向再調整N個位元組

14.軟體中斷與中斷返回指令

 6.在下列指令中,錯誤的指令有(  ABCD)。
A.SUB         5,AL                          B.ADD        AL,BX
   C.INC         [BX]                            D.SHR         AX,6

    C可改作 INC BX。移位指令的運算元需要是暫存器運算元或記憶體運算元。
7.執行“CMP  AX,8003H”指令後,當AX中的無符號數高於8003H時,下列指令中有效的轉移指令有(  AB )。
A.JNB  L        B.JA  L           C.JG   L           D.JNL   L

JA JB JNB無符號,JG JL有符號
8.可與串操作指令“CMPSW”指令配合使用的重複字首有(   BCD)。
A.REP                B.REPZ              C.REPNZ            D.REPE

10.在下列的指令中,錯誤的指令有( ABCD  )。
A.PUSH       AL                 B.MOV AL,BX
C.PUSH       1000H            D.CALL       AX
11.可以用下列指令代替“LOOP  L”指令的有( AC  )。
A.DEC         CX                B.DEC         CX

     JNZ          L                      JNC          L

C.DEC         CX                D.DEC        CX
          CMP         CX,0                JE            L
          JE            L
三.填空題
1.在一條指令中,立即數只能作       運算元。
2.8086/8088 CPU形成的記憶體實體地址有   20     位。8086主存地址線為20根。
3.指令“MOV  AX,[BX+SI]”的源運算元在記憶體的   DS    段。
4.指令“MOV  BX,[BP+DI]”的源運算元在記憶體的   SS    段。
5.指令“MOV  AX,ES:[SI]”的源運算元在記憶體的   ES    段。
6.入棧指令使用的是  SS    段。
7.指令“ADD  [BX+SI],AL”的目的運算元是  基址變址    定址方式。
8.指令“SUB   BX,A[SI]”的源運算元是 暫存器相對 定址方式。
9.指令“JMP  DWORD  PTR [BX]”屬於  段間間接      定址方式。
10.可作為暫存器間接定址的暫存器有      4       個。
11.堆疊是從   高     地址向   低地址   方向生長的。其操作遵循   LIFO     的操作原則。
12.在進行彈棧操作時應該先將彈出的資料送  目標地址      ,然後  SP+2         。
13.在進行多精度加法運算時,一般使用    ADC    指令。
14.通用的資料傳送指令不影響   PSW   
15.“INC  AL” 指令不影響標誌位的  CF    位。
16.若AL=11H,執行“NEG  AL” 後,AL=   0EFH  
17.JMP指令的執行   不影響  PSW暫存器中的各位。
18.兩個無符號數進行比較時,可以根據   CF   標誌位來判斷大小。在編寫程式時可使用    JA  指令來實現。
19.若執行“DIV  BX”,其被除數的高16位必須放在  DX   ,低16位必須放在   AX  
20.DAA指令只對   AL  暫存器中的內容進行調整。
21.若AL=84H,在執行CBW後,AL=   0FF84H 
22.十進位制數1234的壓縮型BCD碼為  1234H    
23.執行 AND  AL,0FH
             JNZ   L
指令,是檢測AL中的     低4  位,當它為非零則轉移。
24.若移位指令的移位位數大於1時,其移位位數必須放在    CL  中。
25.如果AL=85H,CL=4,執行“SAR  AL,CL”時,AL=  0F8H   ,CF=   0  
26.在串操作指令中,SI指向      串,DI指向    目標   串。
27.如果要查詢某串中與AL暫存器中有相同的字元(數),則在SCASB指令前應配合使用    REPNE(REPNZ)  重複字首。
28.轉移指令“JNZ  L ”的轉移範圍(十進位制)是     -128~127 。該指令的第二個位元組為位移量,用    補碼  形式表示。
29.段內呼叫指令改變   IP   中的內容。
30.段間呼叫指令改變    IP和CS  中的內容。
四.判斷題(判斷下列指令是否正確,如果是錯誤的,請指出錯誤的原因)
1.ADD      AL,BX 錯,兩運算元型別不一致
2.MOV      [BX],SI 對
3.SUB      [BX],[SI] 錯,兩運算元不能同時為記憶體運算元
4.CMP      5,AL 錯,立即數不能做目標運算元
5.MOV   CX,AX 對
6.LEA       BL,A 錯,型別不一致
7.SHR       AL,6 錯,移位次數大於1時應存放在CL中
8.MOV      AL,[DI+SI] 錯,DI和SI不能放在一種定址方式中
9.MOV      BL,200H 錯,200H超出了一個字的範圍,導致兩運算元型別不一致
10.MOV      AX,DATA 對
11.INC       [BX] 錯,位元組還是字操作存在二義性
12.CMP      [BX],A        ;A為變數 錯,兩運算元不可同為記憶體中的數13.MOV      AX,‘+’ 對
14.MOV      AX, [BP+BX] 錯,BP和BX不可同時使用在定址方式中
15.ADD      AX,[CX] 錯,CX不能作為暫存器間接定址
16.OUT      400,AL 錯,400超出8位,型別不一致
17.JNC      P 對
18.MOV      BX,OFFSET A 對
19.LEA       DI,A[SI] 對
20.CMP      AX,5 對
五.改錯題(按下列指令中的原意改正下列指令)
1.DEC      [SI]         DEC  BTYE PTR [SI]
2.CMP      AL,BX                ;無符號數比較. MOV AH,0  CMP AX,BX
3.MOV     [DX],AL.        MOV SI,DX  MOV [SI],DX
4.MOV     AL,300H.        MOV  AX,300H
5.MOV     [BX],[DI]           ;位元組操作 MOV AL,[DI] MOV [BX],AL
6.ADD     AL,[CX+SI].     ADD AL,CX ADD AL,[SI]
7.ADD     AL,BX                ;有符號數相加 ADD AX,BX
8.PUSH    AL            PUSH AX
9.CMP      [BX],5                ;位元組比較 CMP BYTE PTR [BX],5
10.MOV     DS,1234H MOV AX,1234H MOV DS,AX
六.簡答題
1.設BX=1000H,SI=2000H,位移量D=3000H,請指出下列各種定址方式的有效地址是什麼?
  (1)使用D的直接定址

              3000H
  (2)使用BX暫存器的間接定址

             1000H
  (3)使用BX暫存器的相對定址

             4000H
  (4)基址變址定址

              3000H
  (5)相對基址變址定址

             6000H

2.請指出下列各條指令的源運算元的定址方式是什麼?
  (1)MOV    AX,BUF 直接定址
  (2)CMP             AL,5 立即定址
  (3)ADD     [BX+5],AX 暫存器定址
  (4)SUB             AX,[BX+SI] 基址加變址定址
  (5)ADC     AH,A[SI]暫存器相對
  (6)MOV    BX,[SI]暫存器間接
  (7)AND     CX,B[BP+SI]相對基址變址
  (8)JMP             WORD  PTR  [BX]段內間接定址
  (9)JMP             P 段內直接定址
  (10)JMP    FAR  PTR  P 段間直接

3.設 DS=2000H, BX=0100H, SI=0002H, (20100H)=12H, (20101H)=34H,(20102H)= 56H, (20103H)= 78H, (21200H)= 2AH, (21201H)= 4CH,(21202H)=B7H,(21203H)=65H,試說明下列各條指令執行完後AX暫存器中的內容是多少?
  (1)MOV    AX,1200H    

             1200H
  (2)MOV    AX,BX 

             0100H
  (3)MOV    AX,[1200H] 

             4C2AH
  (4)MOV    AX,[BX] 

             3412H
  (5)MOV    AX,[BX+1100H] 

             4C2AH
  (6)MOV    AX,[BX+SI] 

             7856H
  (7)MOV    AX,[BX+SI+1100H] 

65B7H

4.按下列各小題的要求寫出相應的一條組合語言指令。
  (1)把BX暫存器和DX暫存器的內容相加,結果存入DX暫存器中

                          ADD DX,BX
  (2)以BX和SI暫存器作基址變址定址方式,把該單元中的一個字傳送到AX。

                          MOV AX,[BX+SI]
  (3)以SI和位移量20H作暫存器相對定址,將該單元中的內容與CX暫存器中的內

容相加,結果存入CX暫存器中。

                              ADD CX,[SI+20H]
  (4)清除AX暫存器的內容,同時清除CF標誌位

                               XOR AX,AX
  (5)將字單元NUM與0B6H進行比較
      CMP WORD PTR NUM,0B6H
5.按下列各小題的要求使用相應的幾條指令完成其操作。
  (1)將偏移量為200H的儲存單元中的數與300H相加,結果存入AX暫存器中

                                    MOV      AX,[200H]

                        ADD    AX,300H
  (2)比較AX暫存器中與BX暫存器中的16位有符號數,當AX中的內容大於BX中的內容時轉移到L。

                                            CMP       AX,BX 

                                           JG         L
  (3)將BUF1和BUF2中的16位資料交換

                              MOV       AX,BUF1 

                              XCHG     AX,BUF2 

                              MOV      BUF1,AX 


  (4)測試BUF字緩衝區中第15位,如果為1則轉移到P

                              TEST     WORD PTR BUF,8000H 

                             JNZ       P

 

  (5)將BUFI和BUF2的字相加,結果送S緩衝區
                      MOV      AX,BUF1 

        ADD      AX,BUF2

        MOV    S,AX


6.設BX=8234H,請說明下列兩條指令的區別,執行下列各指令後BX中的內容是什麼?
             SHR  BX,1 
             SAR  BX,1
       SHR是邏輯右移指令,移位後空出的位補0,而SAR是算術右移指令,最高位保持不變,其他位右移一位。SHR BX,1執行後BX=411AH,執行SAR BX,1後  BX=0C11AH。 
7.分別說明下列每組指令中的兩條指令的區別。
  (1) MOV   BX,BUF                     LEA  BX,BUF

             MOV   BX,BUF中的BUF是直接定址,它是將BUF單元中的內容傳送給BX。而LEA BX,BUF是將BUF的偏移地址送BX。 
  (2) OR    BL,0FH                     AND  BL,0FH

             OR是或指令,AND是與指令
  (3) JMP   SHORT  L                  JMP  L

             第一句是短位移,8位,第二句是16位
  (4) MOV  AX,BX                        MOV  AX,[BX]

             MOV  AX,BX的源運算元是BX中的內容,即暫存器定址。而MOV AX,[BX]中的源運算元是BX所指向的記憶體單元中的內容,即暫存器間接定址。
  (5) MOV  AX,[BX+DI]                 MOV  AX,[BP+DI]
             MOV  AX,[BX+DI]使用的是DS段,而MOV  AX,[BP+DI]使用的是SS段。
8.說明下列各指令的源運算元和目的運算元的儲存地方。
  (1)MOV     [2000H],AX

             源運算元在AX暫存器中,結果存放在記憶體的2000H單元。

  (2)ADD     AX,[BX+5]

             源運算元在記憶體,結果存放在AX中。
  (3)LEA       SI,BUF

             源運算元在指令中,即BUF的偏移地址,結果存放在SI中。
  (4)DAA

             源運算元和結果都在AL中。

  (5)MUL      BL
             源運算元在BL中,結果存放在AX中。
9.指出下列無條件轉移指令的轉移目標地址是什麼?存放在何處?
  (1)JMP      BX

             BX中的內容做目標地址的偏移地址。
  (2)JMP      WORD PTR [BX]

             BX所指字單元中的內容作目標地址的偏移地址。
  (3)JMP      DWORD PTR [BX]

             BX所指字單元中的內容作目標地址的偏移地址,下一字單元中的內容作段地址。
  (4)JMP      P

             P的地址
  (5)JMP      SHORT  R
             R的地址
10.說明MOVSB和CMPSB各能使用哪些重複字首?
             MOVSB只能使用REP重複字首,CMPSB能使用REPZ,REPNE,REPE和REPNZ重複字首。
七.程式分析題

1.現有程式段如下:
MOV     AX,1234H
MOV     BX,60H
ADD     AX,BX

  請回答:(1)該程式段完成的功能是什麼?

                兩數1234H和60H相加,結果存放在AX中。
       (2)程式段執行完後AX=    1294H       

2.現有程式段如下:

MOV     AX,0603H
MOV     BL,8
AAD

DIV        BL

  請回答:(1)該程式段完成的功能是什麼?

              實現兩個未壓縮BCD碼的除法

       (2)程式段執行完後AX=    0707H      


3.設AX=0D023H,BX=9FD0H,試分析執行完如下程式段後程序轉向何處?

ADD     AX,BX

JNO      L1

JNC      L2

SUB      AX,BX

JNC      L3

JNO      L4

JMP      L5

     1101 0000 0010 0011

   +1001 1111 1101 0000

———————————————

    10110 1111 1111 0011

溢位,O為1,最高位進位C為1,

      1101 0000 0010 0011

    -1001 1111 1101 0000

———————————————

     0011 0000 0101 0011

溢位O為1,最高位借位C為1

則最後無條件轉移L5


4.程式段如下:

MOV     AX,X

MOV     DX,X+2

ADD     AX,Y

ADC      DX,Y+2

ADD      AX,36

ADC      DX,0

SUB      AX,Z

SBB       DX,Z+2

MOV     W,AX

MOV     W+2,DX
  請回答:(1)該程式段完成的功能是什麼?

算X+Y+36-Z

      (2)該程式的運算元是何型別?字

      (3)結果存放在何處?W


5.設A為位元組變數,變數中的內容分別為64H、52H;B為位元組變數,變數中的內容分別為12H、46H,現有程式段如下:

MOV     AL,A

SUB      AL,B

DAS

MOV     C,AL

MOV     AL,A+1

SBB       AL,B+1

DAS

MOV     C+1,AL


  請回答:(1)該程式段完成的功能是什麼?

實現兩個壓縮型BCD碼的減法,即A-B,結果送C。

 

 2)最後結果是什麼?

             0652H
6.現有程式段如下:

MOV     BL,AL

MOV     CL,4

SHR      BL,CL

MOV     A,BL

AND     AL,0FH

MOV     B,AL


  請回答:(1)該程式段完成的功能是什麼?

             將AL中的八位數分高低4位分別存放在A和B中

 

       (2)如果AL的初值為56H,則A=      05H,B=    06H    


7.現有程式段如下:

MOV     AL,8

MOV     BL,7

MUL      BL

AAM  

ADD     AX,3030H

XCHG  AH,AL

MOV   BUF,AX


  請回答:(1)該程式段完成的功能是什麼?

將兩數相乘的結果轉換成ASCII碼存放在BUF中。

 

      (2)BUF兩個單元中的值分別為     35H,36H  


8.現有程式段如下:

MOV     AX,M

MOV   DX,N

SHR      DX,1

RCR      AX,1


  請回答:(1)該程式段完成的功能是什麼?

                          將M:N中的32位右移一位。

      (2)若M=1234H,N=5678H,程式執行後DX=    091AH   ,AX=   2B3CH     。


9.現有程式段如下:

XOR     AX,AX

MOV     AX,6342H

MOV     CX,0404H

ROL      AH,CL

XCHG  CH,CL

ROR      AL,CL


  請回答:(1)該程式段執行後AX=       3624H 

      (2)CF=      0   


10.現有程式段如下:

          MOV     AX,1

          MOV     BX,2

          MOV     CX,4

          MOV     DX,3

L: INC      AX

          ADD     BX,AX

          SHR      DX,1

          LOOPNZ  L


  請回答:(1)該程式段的迴圈次數是多少? 2

      (2)該程式段執行完後AX=    3 ,BX=    7   ,CX= 4     ,DX=   0   


11.現有程式段如下:

          MOV     CX,16

          MOV     BX,0

          MOV     DX,1

L: MOV     AX,9AB8H

         AND     AX,DX

         JZ        N

         INC       BX

N: SHL       DX,1

         LOOP    L

         MOV  M,BX

  請回答:(1)該程式段完成的功能是什麼?

                          統計9AB8H中為1的位數

      (2)該程式段執行完後(M)=      8   


12.現有程式段如下:

        CLD 

        MOV     SI,OFFSET  BUF1

        MOV     DI,OFFSET  BUF2

        MOV     CX,100

        REP       MOVSB


  請回答:該程式段完成的功能是什麼?將BUF1中100個位元組的資料傳送到BUF2中。

       


13. 現有程式段如下:

        CLD

        LEA       DI,BUF

        MOV     AL,20H

        MOV     CX,100

        REPNZ  SCASB


  請回答 :(1)該程式段完成的功能是什麼?查詢BUF中為空格(20H)字元。

 

(2)若ZF=1,表示BUF中      值為20H資料

      (3)若BUF的首地址為0,ZF=0,執行完該程式段後DI=     100H    。


14.現有程式段如下:

MOV     AL,0

MOV     BL,1

MOV     CX,10

L:  ADD      AL,BL

INC       BL

LOOP    L


  請回答:(1)該程式段完成的功能是什麼?

實現1+2+3+……+10

 

      (2)該程式執行完後,AL=      37H    。


15.現有程式段如下:

MOV     AX,M

CMP      AX,N

JA          L

MOV     AX,M+2

CMP      AX,N+2

JAZ       L

MOV     FLG,BYTE  PTR 0

JMP      P

L:  MOV     FLG  BYTE  PTR 1

    P:  …


  請回答:(1)該程式段完成的功能是什麼?

兩個32位的無符號數M和N比較,大小等於則1→FLG,否則0→FLG。

      (2)若M=1234H,N=5678H,則FLG=     0   


16.現有程式段如下:

MOV     CX,100

LEA       BX,BUF 

MOV     DX,0

L1:MOV     AL,<, /FONT>[BX]

CMP      AL,10

JL               L2

INC       DX

L2:INC      BX

LOOP    L1


  請回答:(1)該程式段完成的功能是什麼?

                         統計有符號數BUF緩衝區中大於等於10的位元組個數,其個數放DX。

      (2)如果將JL改為JG,該程式段完成的功能又是什麼?

                         統計有符號數BUF緩衝區中小於等於10的位元組個數,其個數放DX。
17.設TAB中存放的資料為30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,現有程式段如下:

LEA       BX,TAB

MOV     AL,X           ;X為數字0~9

XLAT


  請回答:(1)該程式段完成的功能是什麼?

                            將X的數字轉換成ASCII碼。

      (2)若X中的內容為4,則AL=   34H     。


18.現有程式段如下:

          LEA       SI,BUF1

          LEA       DI,BUF2

          MOV     CX,100

L: MOV     AL,[SI+100]

          MOV     [DI],AL

          INC      DI

          DEC     SI

          LOOP    L


  請回答:該程式段完成的功能是什麼?

        將BUF1中100個位元組倒序傳送到BUF2中。
19.現有程式段如下:

          MOV     AX,BUF 

          CMP      AX,0

          JNS       L

          MOV     BX,BUF+2

          NEG      BX

          MOV     BUF+2,BX

          NOT     AX

          ADC      AX,0

          MOV     BUF,AX

L:  …  


  請回答:該程式段完成的功能是什麼?

         將BUF緩衝區中的32位資料取絕對值存放在BUF中。
20.現有程式段如下:

MOV     AL,X

          AND     AL,0FH

          JZ        L

          MOV     BYTE  PTR  FLG,1

          JMP      M

L: MOV     BYTE  PTR  FLG,0