第3章?8086/8088 指令系統(tǒng)和尋址方式?習題答案(部分)
1.1 總結(jié)計算機中十進制、二進制、八進制及十六進制數(shù)的書寫形式。123D、0AFH、
77Q、1001110B 分別表示什么計數(shù)制的數(shù)?
答案:123D、0AFH、77Q、1001110B 分別表示十進制、十六進制、八進制、二進制。
1.2 ?字長為8 位、16 位二進制數(shù)的原碼、補碼表示的最大數(shù)和最小數(shù)分別是什么?
答案:8 位原碼表示的最大數(shù):(27-1)、8 位補碼表示的最大數(shù):(27-1)、8 位原碼表示的最小數(shù):-(27-1)、8 位補碼表示的最小數(shù)-27。
16 位原碼表示的最大數(shù):(215-1)、16 位補碼表示的最大數(shù):(215-1)、16 位原碼表示的最小數(shù):-(215-1)、16 位補碼表示的最小數(shù)-215。
1.3 把下列十進制數(shù)分別轉(zhuǎn)換為二進制數(shù)和十六進制數(shù)。
(1)125 (2)255 (3)72 (4)5090
答案:(1) 125 二進制數(shù):0111 1101B;十六進制數(shù):7DH。
(2)255 二進制數(shù):1111 1111B;十六進制數(shù):0FFH。
(3)72 二進制數(shù):0100 1000B;十六進制數(shù):48H。
(4)5090 二進制數(shù):0001 0011 1110 0010B;十六進制數(shù):13E2H。
1.4 把下列無符號二進制數(shù)分別轉(zhuǎn)換為十進制數(shù)和十六進制數(shù)。
(1)1111 0000 (2)1000 0000 (3)1111 1111 (4)0101 0101
答案:(1)1111 0000 十進制數(shù):240D;十六進制數(shù):0F0H。
(2)1000 0000 十進制數(shù):128D;十六進制數(shù):80H。
(3)1111 1111 十進制數(shù):255D;十六進制數(shù):0FFH。
(4)0101 0101 十進制數(shù):85D;十六進制數(shù):55H。
1.5 把下列無符號十六進制數(shù)分別轉(zhuǎn)換為十進制數(shù)和二進制數(shù)。
(1)FF (2)ABCD (3)123 (4)FFFF
答案:(1)FF 十進制數(shù):255D;二進制數(shù);1111 1111B。
(2)ABCD 十進制數(shù):43981D;二進制數(shù);1010 1011 1100 1101B。
(3)123 十進制數(shù):291D;二進制數(shù);0001 0010 0011B。
(4)FFFF 十進制數(shù):65535D;二進制數(shù);1111 1111 1111 1111B。
1.6 分別用8 位二進制數(shù)和16 位二進制數(shù)寫出下列十進制數(shù)的原碼和補碼。
(1)16 (2)-16 (3)+0 (4)-0 (5)127 (6)-128 (7)121 (8)-9
答案:
(1)16 8 位二進制數(shù)原碼:0001 0000 補碼:0001 0000;16 位二進制數(shù)原碼:0000 0000
0001 0000 補碼: 0000 0000 0001 0000。
(2)-16 8 位二進制數(shù)原碼:1001 0000 補碼:1111 0000;16 位二進制數(shù)原碼:1000 0000
0001 0000 補碼:1111 1111 1111 0000。
(3)+0 8 位二進制數(shù)原碼:0000 0000 補碼:0000 0000;16 位二進制數(shù)原碼:0000 0000
0000 0000 補碼:0000 0000 0000 0000。
(4)-0 8 位二進制數(shù)原碼:1000 0000 補碼:0000 0000;16 位二進制數(shù)原碼:1000 0000
0000 0000 補碼: 0000 0000 0000 0000。
(5)127 8 位二進制數(shù)原碼:0111 1111 補碼: 0111 1111;16 位二進制數(shù)原碼:0000 0000
0111 1111 補碼: 0000 0000 0111 1111。
(6)-128 8 位二進制數(shù)原碼:無?補碼: 1000 0000 ;16 位二進制數(shù)原碼:1000 0000
1000 0000 補碼:1111 1111 1000 0000。
(7)121 8 位二進制數(shù)原碼:0111 1001 補碼: 0111 1001;16 位二進制數(shù)原碼:0000 0000
0111 1001 補碼: 0000 0000 0111 1001。
(8)-9 8 位二進制數(shù)原碼:1000 1001 補碼:1111 0111;16 位二進制數(shù)原碼:1000 0000
1000 1001 補碼:1111 1111 1111 0111。
1.7 試實現(xiàn)下列轉(zhuǎn)換。
(1)[X]原=10111110B,求[X]補?(2)[X]補=11110011B,求[-X]補
(3)[X]補=10111110B,求[X]原?(4)[X]補=10111110B,求[X]反
答案:(1) 1100 0010 (2) 0000 1101 (3) 1100 0010 (4) 1011 1101
1.8 假設兩個二進制數(shù)A=01101010,B=10001100,試比較它們的大小。
(1)A、B 兩數(shù)均為帶符號的補碼數(shù)?(2)A、B 兩數(shù)均為無符號數(shù)
答案:(1)A、B 兩數(shù)均為帶符號的補碼數(shù):A>B
(2)A、B 兩數(shù)均為無符號數(shù):A<B
1.9 下列各數(shù)均為十進制數(shù),請用8 位二進制數(shù)補碼計算下列各題,用十六進制數(shù)表示
其運算結(jié)果,并判斷是否溢出,驗證教材中所給的判斷依據(jù)。
(1)90+71 (2)90-71 (3)-90-71 (4)-90+71 (5)-90-(-71)
答案:(1)90+71=161>127 溢出
[90]補+[71]補=0101 1010+0100 0111=1010 0001=0A1H=[-91]補
(2)90-71=19<127 無溢出
[90]補+[-71]補=0101 1010+1011 1001=0001 0011=13H=[19]補
(3)-90-71=-161<-128 溢出
[-90]補+[-71]補=1010 0110+1011 1001=0101 1111=5FH=[95]補
(4)-90+71=-19>-128 無溢出
[-90]補+[71]補=1010 0110+0100 0111=1110 1101=0EDH=[-19]補
(5)-90-(-71)=-19>-128 無溢出
[-90]補+[71]補=1010 0110+0100 0111=1110 1101=0EDH=[-19]補
3.10 完成下列8 位二進制數(shù)的邏輯運算。
(1)11001100∧10101010 (2)11001100∨10101010
(3)11001100⊕10101010 (4)10101100∧10101100
(5)10101100⊕10101100 (6)10101100∨10101100
(7)10101100
答案:(1)11001100∧10101010=1000 1000 (2)11001100∨10101010=1110 1110
(3)11001100⊕10101010=0110 0110 (4)10101100∧10101100=1010 1100
(5)10101100⊕10101100=0000 0000 (6)10101100∨10101100=1010 1100
(7)10101100=0101 0011
1.11 以下均為2 位十六進制數(shù),試說明當把它們分別看作無符號數(shù)或字符的ASCII 碼
值,它們所表示的十進制數(shù)和字符是什么?
(1)30H (2)39H (3)42H (4)62H (5)20H (6)7H
答案:(1)30H 所表示的十進制數(shù)是:48D;字符是:0。
(2)39H 所表示的十進制數(shù)是:57D;字符是:9。
(3)42H 所表示的十進制數(shù)是:66D;字符是:B。
(4)62H 所表示的十進制數(shù)是:98D;字符是:b。
(5)20H 所表示的十進制數(shù)是:32D;字符是:sp 空格。
(6)7H 所表示的十進制數(shù)是:7D;字符是:BEL 報警。
1.12 把以下十進制數(shù)分別以壓縮BCD 碼、非壓縮BCD 碼、ASCII 碼串表示。
(1)2 (2)78
答案:(1)2 壓縮BCD 碼:0010、非壓縮BCD 碼:0000 0010、ASCII 碼:011 0010
(2)78 壓縮BCD 碼:0111 1000、非壓縮BCD 碼:0000 0111 0000 1000、ASCII 碼:0110111
011100
1.13 設浮點數(shù)格式如下圖所示:
階碼、尾數(shù)均以補碼表示,基數(shù)為2,求:+25.6 和-361.25 的規(guī)格化浮點數(shù)。
答案:1) +25.6D=11001.1001100110B=0.110011001100110×25
+5=0101B,補碼:0101,尾數(shù):[ 0.110011001100110]補=0.110011001100110
規(guī)格化浮點數(shù):0 0000101 0 110011001100110
2) -361.25D=-101101001.01B=29×(-0.101101001010000)
+9=1001,補碼:1001,尾數(shù):[ -0.101101001010000]補=1.010010110110000
規(guī)格化浮點數(shù):0 0001001 1 010010110110000
1.14 設某計算機用12 位表示一個浮點數(shù),該浮點數(shù)從高位到低位依次為:階符1 位、
階碼3 位(原碼表示)、數(shù)符1 位、尾數(shù)7 位(補碼表示),則0 100 1 0110011 的真值是多少?
答案:-9.625
?3.1 8086 匯編語言指令的尋址方式有哪幾類?哪種尋址方式的指令執(zhí)行速度最快?
解:尋址方式分為:立即數(shù)尋址方式、寄存器操作數(shù)尋址方式和存儲器操作數(shù)尋址方式。
其中,寄存器操作數(shù)尋址方式的指令執(zhí)行速度最快。
3.2?在直接尋址方式中,一般只指出操作數(shù)的偏移地址,那么,段地址如何確定?如果要用
某個段寄存器指出段地址,指令中應該如何表示?
解:默認的數(shù)據(jù)訪問,操作數(shù)在DS 段;堆棧操作在SS 段;串操作源操作數(shù)(SI)在DS
段,目的操作數(shù)(DI)在ES 段;用BP 作為指針在SS 段。如果要顯式地指定段地址,則在操作
數(shù)中規(guī)定段寄存器。例如:
MOV AX,?ES:(BX+10H)
3.3 ?8086 系統(tǒng)中,設DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H,
BP=0100H,VAR 的偏移量為0600H,請指出下列指令的目標操作數(shù)的尋址方式,若目
標操作數(shù)為存儲器操作數(shù),計算它們的物理地址。
(1)MOV BX,12 ;目標操作數(shù)為寄存器尋址
(2)MOV [BX],12 ;目標操作數(shù)為寄存器間址?PA=10300H
(3)MOV ES:[SI],AX ;目標操作數(shù)為寄存器間址?PA=20200H
(4)MOV VAR,8 ;目標操作數(shù)為存儲器直接尋址?PA=10600H
(5)MOV [BX][SI],AX ;目標操作數(shù)為基址加變址尋址?PA=10500H
(6)MOV 6[BP][SI],AL ;目標操作數(shù)為相對的基址加變址尋址?PA=12306H
(7)MOV [1000H],DX ;目標操作數(shù)為存儲器直接尋址?PA=11000H
(8)MOV 6[BX],CX ;目標操作數(shù)為寄存器相對尋址?PA=10306H
(9)MOV VAR+5,AX ;目標操作數(shù)為存儲器直接尋址?PA=10605H
3.4下面這些指令中哪些是正確的?那些是錯誤的?如果是錯誤的,請說明原因。
(1)XCHG CS,AX ;錯,CS 不能參與交換
(2)MOV [BX],[1000] ;錯,存儲器之不能交換
(3)XCHG BX,IP ;錯,IP 不能參與交換
(4)PUSH CS ;錯,CS 不能為PUSH 的操作數(shù)
(5)POP CS ;錯,不能將數(shù)據(jù)彈到CS 中
(6)IN BX,DX ;輸入/輸出只能通過AL/AX
(7)MOV BYTE[BX],1000 ;1000 大于255,不能裝入字節(jié)單元
(8)MOV CS,[1000] ;CS 不能作為目標寄存器
(9)MOV BX,OFFSET VAR[SI] ;OFFSET 只能取變量的偏移地址
(10)MOV AX,[SI][DI] ;SI、DI 不能成為基址加變址
(11)MOV COUNT[BX][SI],ES:AX ;AX 是寄存器,不能加段前綴
3.5?試述以下指令的區(qū)別:
⑴?MOV AX,3000H 與?MOV AX,[3000H]
答案:⑴?MOV AX,3000H 指令源操作數(shù)的尋址方式為立即尋址方式,指令執(zhí)行結(jié)果為:
(AX)=3000H。?而MOV AX,[3000H]指令源操作數(shù)的尋址方式為直接尋址方式,指令執(zhí)行結(jié)
果為:DS:3000H)_AX。
⑵?MOV AX,MEM 與?MOV AX,OFFSET MEM
答案:⑵?MOV AX,MEM 指令源操作數(shù)的尋址方式為直接尋址方式,指令執(zhí)行結(jié)果為:
DS:MEM)_AX。?而MOV AX,OFFSET MEM 指令的執(zhí)行結(jié)果是把MEM 的偏移量送AX。
⑶?MOV AX,MEM 與?LEA AX,MEM
答案:⑶?MOV AX,MEM 指令的執(zhí)行結(jié)果是LDS:MEM)_AX。?而LEA AX,MEM
的執(zhí)行結(jié)果是把MEM 的偏移量送AX。
(4) JMP SHORT L1 與?JMP NEAR PTR L1
答案:JMP SHORT L1 為段內(nèi)無條件短程轉(zhuǎn)移,跳轉(zhuǎn)的范圍不得超過帶符號的8 位二進
制數(shù)表示的字節(jié)范圍;JMP NEAR PTR L1 為段內(nèi)無條件近程轉(zhuǎn)移,跳轉(zhuǎn)的范圍不得超過帶
符號的16 位二進制數(shù)表示的字節(jié)范圍。
(5) CMP DX,CX 與?SUB DX ,CX
答案:CMP DX,CX 是比較,也是利用減法比較,但是dx 中的值不變,標志寄存器改
變。SUB DX ,CX 是做減法運算,dx 中為減后的值,標志寄存器改變
(6)MOV [BP][SI],CL 與?MOV DS:[ BP][SI],CL
答案:BP 默認的段基址是SS,物理地址PA=SS+BP+SI;第二個重定義為DS 段基址,
物理地址PA=DS+BP+SI
3.6?設DS=2100H,SS=5200H,BX=1400H,BP=6200H,說明下面兩條指令所進行的
具體操作:
MOV BYTE PTR [BP], 20H
MOV WORD PTR [BX], 20H
解:前一條指令是把立即數(shù)20H,傳送至堆棧段(BP 的默認段)偏移量由BP 規(guī)定的字節(jié)單
元,地址為:52000H+6200H=58200H
第二條指令是把立即數(shù)20H,傳送至數(shù)據(jù)段(BX 的默認段)偏移量由BX 規(guī)定的字單元,地
址為:21000H+1400H = 22400H。
3.7?設當前?SS=2010H,SP=FE00H,BX=3457H,計算當前棧頂?shù)牡刂窞槎嗌??當?zhí)
行?PUSH BX 指令后,棧頂?shù)刂泛蜅m?/span>2 個字節(jié)的內(nèi)容分別是什么?
答案:當前棧頂?shù)牡刂?/span>=2FF00H
當執(zhí)行PUSH BX 指令后,棧頂?shù)刂?/span>=2FEFEH
(2FEFEH)=57H
(2FEFFH)=34H
3.8?設DX=78C5H,CL=5,CF=1,確定下列各條指令執(zhí)行后,DX 和CF 中的值。
(1)?SHR DX,1 ;DX=3C62H CF=1
(2)?SAR DX,CL ;DX=03C6H CF=0
(3)?SHL DX,CL ;DX=18A0H CF=1
(4)?ROR DX,CL ;DX=2BC6H CF=0
(5)?RCL DX,CL ;DX=18B7H CF=1
(6)?RCR DH,1 ;DX=BCC5H CF=0
3.9?設AX=0A69H,VALUE 字變量中存放的內(nèi)容為1927H,寫出下列各條指令執(zhí)行
后寄存器和CF、ZF、OF、SF、PF 的值。
AX CF ZF OF SF PF
(1)XOR AX,VALUE ;?134EH 0 0 0 0 1
(2)AND AX,VALUE ;?0821H 0 0 0 0 1
(3)SUB AX,VALUE ;?F142H 1 0 0 1 1
(4)CMP AX,VALUE ;?0A69H 1 0 0 1 1
(5)NOT AX ;?F596H X X X X X
(6)TEST AX,VALUE ;?0A69H 0 0 0 0 1
3.10?設AX 和BX 中是符號數(shù),CX 和DX 是無符號數(shù),請分別為下列各項確定CMP
和條件轉(zhuǎn)移指令。
CX 值超過DX 轉(zhuǎn)移。
AX 未超過BX 轉(zhuǎn)移。
DX 為0 轉(zhuǎn)移。
CX 值等于小于DX 轉(zhuǎn)移。
答案:
(1)?CMP CX,DX
JA NEXT
(2)?CMP AX,BX
JLE NEXT
(3)?CMP DX,0
JZ NEXT
(4)?CMP CX,DX
JBE NEXT
3.11?閱讀分析下列指令序列:
ADD AX,BX
JNO L1
JNC L2
SUB AX,BX
JNC L3
JNO L4
JMP L5
若AX 和BX 的初值分別為以下5 種情況,則執(zhí)行該指令序列后,程序?qū)⒎謩e轉(zhuǎn)向何處
(L1~L5 中的一個)。
AX=13C6H,?BX=80DCH
AX=0B568H,BX=54B7H
AX=42C8H,?BX=608DH
AX=0D023H,BX=9FD0H
AX=9FD0H,?BX=0D023H
答案:(1)轉(zhuǎn)L1:不溢出,轉(zhuǎn)移到L1 處;
(2)轉(zhuǎn)L1:不溢出,轉(zhuǎn)移到L1 處;
(3)轉(zhuǎn)L2:溢出,不轉(zhuǎn)移到L1 處,進位CF=0,轉(zhuǎn)移到L2 處;
(4)轉(zhuǎn)L3:溢出,不轉(zhuǎn)移到L1 處,進位CF=1,不轉(zhuǎn)移到L2 處,減法借位CF=0,轉(zhuǎn)移
到L3 處;
(5)轉(zhuǎn)L5:溢出,不轉(zhuǎn)移到L1 處,進位CF=1,不轉(zhuǎn)移到L2 處,減法借位CF=1,不轉(zhuǎn)
移到L3 處,不溢出OF=0,轉(zhuǎn)移到L4 處;
3.12?用普通運算指令執(zhí)行BCD 碼運算時,為什么要進行十進制調(diào)整?具體地講,在進行
BCD 碼的加、減、乘、除運算時,程序段的什么位置必須加上十進制調(diào)整指令?
解:因為8086 指令把操作數(shù)作為二進制數(shù)進行二進制運算,要得到正確的BCD 結(jié)果,需
要進行調(diào)整。在加、減、乘法指令之后加上BCD 調(diào)整指令,而在除法指令之前先用BCD 調(diào)
整指令再用除法指令。
3.13?在編寫乘除法程序時,為什么常用移位指令來代替乘除法指令?編寫一段程序,實
現(xiàn)將BX 中的數(shù)除以10,結(jié)果仍然放在BX 中。
解:用移位指令時,左移l 位相當于將操作數(shù)乘2,右移1 位相當于將操作數(shù)除2。用
移位指令實現(xiàn)一些簡單的乘除法程序,比用乘法指令和除法指令進行乘、除運算要快得多。
用除法指令實現(xiàn):
MOV CL 0AH
MOV AX,BX
IDIV CL
MOV BX,AX
3.14?串操作指令使用時特別要注意和SI,DI 這兩個寄存器及方向標志DF 密切相關(guān)。請
具體就指令MOVSB/MOVSW、CMPSB/CMPSW、SCASB/SCASW、LODSB/LODSW、
STOSB/STOSW 列表說明和SI、DI 及DF 的關(guān)系。
解答:
SI DI DF
MOVSB/MOVSW 指出源地
址
指出目的地
址
不帶?REP 重復前綴時,DF=0,每傳送一次,SI、
DI 加1 或加2,DF=1,SI、DI 則減1 或減2
CMPSB/CMPSW
存放源字
符串首地
址
存放目的字
符串首地址
DF=0,每次比較后,SI、DI 加1 或加2,CX 減
1,DF=1,SI、DI 減1 或減2,CX 減1
SCASB/SCASW 無?指出字符串
首址偏移量?無
LODSB/LODSW 作為地址
指針
存放處理結(jié)
果
DF=1 時,地址作增量修改,DF=0 時,地址作減
量修改
STOSB/STOSW 無?存放目的地
址?無
3.15?用串操作指令設計實現(xiàn)以下功能的程序段:首先將100H 個數(shù)從2170H 處搬到
1000H 處,然后,從中檢索相等于VAL 中字符的單元,并將此單元值換成空格符。
解答:
START:MOV AX, DS
MOV ES, AX
MOV SI, 2170H
MOV DI, 1000H
MOV CX, 100H
CLD
REP MOVSB
ANOTHER:MOV DI, 1000H
MOV AL, VAL
MOV CX, 100H
CLD
AGE: SCASB
JZ FIN
DEC CX
JNZ AGE
JMP OVER
FIN: MOV BYTE PTR[DI-1],20H
CMP CX,0
JNZ AGE
OVER: RET
3.16 ?求雙字長數(shù)DX∶AX 的相反數(shù)。
答:
NEG DX
NEG AX
SBB DX,0
3.17?試對數(shù)據(jù)段偏移地址為101H 單元中的單字節(jié)數(shù)求補后存入102H,最高位不變,
低7 位取反存入103H,高4 位置1,低4 位不變,存入104H。
答:
MOV AX,[0101H]
MOV BX,AX
MOV CX,AX
NOT AX
MOV [0102H],AX
XOR BX,7FH
MOV [0103H],BX
AND CX,0F0H
MOV [0104H]
3.19?試編寫一個程序,比較兩個同長字符串STRING1 和STRING2 所含字符是否相同,
若相同MATCH 單元賦值1,若不相同MATCH 單元賦值0。
答案:
程序段為:
;數(shù)據(jù)定義
STRING1 DB ‘ABCDEFGHIJK ;串1,作為源串
STRING2 DB ‘ABCDFGKJ ;串2,作為目標串
MATCH DB ? ;定義MATCH 單元
;功能代碼
MOV AX,SEG STRING1
MOV DS,AX ;源串段地址送DS
MOV AX,SEG STRING2
MOV ES,AX ;目標串段地址送ES
LEA SI, STRING1 ;源串偏移地址送SI
LEA DI, STRING2 ;目標串偏移地址送DI
MOV CX, STRING1- STRING2 ;重復次數(shù)送CX
CLD ;地址增
REPE CMPSB ;相等繼續(xù)比較,不相等退出
JZ EQUAL ;退出時,若ZF=1,表示兩串相等
MOV MATCH,0 ;不相同,MATCH 單元賦值0
JMP OVER
EQUAL:MOV MATCH,1 ;相同MATCH 單元賦值1
OVER:HLT
3.20?編寫代碼,計算a+10b+100c+20d,其中a、b、c、d 均為單字節(jié)無符號數(shù),結(jié)果為16
位,存入SUM 開始的兩單元中。
data segment
ma db 12
mb db 21
mc db 86
md db 150
SUM dw 0
data ends
code segment
assume ds:data,cs:code
start:mov ax,data
mov ds,ax
mov dh,0
mov dl,ma
mov ah,0
mov al,10
mul mb
add dx,ax
mov ah,0
mov al,100
mul mc
add dx,ax
mov ah,0
mov al,20
mul md
add dx,ax
mov SUM,dx
code ends
end start
3.21?試編寫一段程序把LIST 到LIST+100 中的內(nèi)容傳到BLK 到BLK+100 中去。
答案:
程序段為:
MOV AX,SEG LIST
MOV DS,AX ;源串段地址送DS
MOV AX,SEG BLK
MOV ES,AX ;目標串段地址送ES
LEA SI, LIST ;源串偏移地址送SI
LEA DI, BLK ;目標串偏移地址送DI
MOV CX, 101 ;重復次數(shù)送CX
CLD ;地址增
REP MOVSB
3.23?設CS:0100H 單元有一條兩字節(jié)的JMP SHORT LAB 指令,若其中的位移量為:
⑴56H ⑵80H ⑶78H (4)0E0H
試寫出轉(zhuǎn)向目標的物理地址是多少?
答:因為CS:0100H 處存放兩字節(jié)指令JMP SHORT LAB,所以當執(zhí)行該指令時
(IP)=0102H
(1) 轉(zhuǎn)向目標的物理地址是:(CS)*10H+(IP)+0056H=CS:0058H
(2) 轉(zhuǎn)向目標的物理地址是:(CS)*10H+(IP)+0FF80H=CS:0082H;80H 對應的負數(shù)為-80H
(向上轉(zhuǎn)移,負位移量)
(3) 轉(zhuǎn)向目標的物理地址是:(CS)*10H+(IP)+0078H=CS:0180H
(4) 轉(zhuǎn)向目標的物理地址是:(CS)*10H+(IP)+0FFE0H=CS:00E2H;E2H 對應的負數(shù)為
-1EH(向上轉(zhuǎn)移,負位移量)
3.24?不使用除法指令,將堆棧段中10H、11H 單元中的雙字節(jié)帶符號數(shù)除以8,結(jié)果存
入12H、13H 單元(注:多字節(jié)數(shù)存放格式均為低位在前,高位在后)。
POP AX
POP BX
TEST AX,8000H ;測試被除數(shù)符號位
MOV CL,3
JZ ZS ;若為正數(shù),跳轉(zhuǎn)到ZS
SAR AX,CL
JMP OVER
ZS: SHR AX,CL
OVER:PUSH AX
3.26?數(shù)據(jù)段中3030H 起有兩個16 位的帶符號數(shù),試求它們的積,存入3034H-3036H 單
元中。
答案:
MOV AX,[3030H]
MOV BX,[3032H]
IMUL BX
MOV [3034H],AX
MOV [3036H]