組合語言題目練習_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.
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中不相等的資料,應使用( C )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