精品午夜福利中文字av_国产成人综合网_av毛片免费观看网站_欧美影视国产综合_野花香视频中文免费观看_亚洲无码要在线视频_又粗又大又用力大交换好大好爽小静_欧美贵妇v办公室高跟鞋_亚洲国产高清a∨网站_免费中文少妇亚洲

知ing

微機(jī)原理及應(yīng)用(第二版)

陳繼紅 徐晨 王春明 徐慧 編著 / 高等教育出版社

???╰★佪眸┅笑★ 上傳

查看本書

第3章?8086/8088 指令系統(tǒng)和尋址方式?習(xí)題答案(部分)


1.1 總結(jié)計(jì)算機(jī)中十進(jìn)制、二進(jìn)制、八進(jìn)制及十六進(jìn)制數(shù)的書寫形式。123D0AFH、

77Q、1001110B 分別表示什么計(jì)數(shù)制的數(shù)?

答案:123D、0AFH、77Q1001110B 分別表示十進(jìn)制、十六進(jìn)制、八進(jìn)制、二進(jìn)制。

1.2 ?字長為8 位、16 位二進(jìn)制數(shù)的原碼、補(bǔ)碼表示的最大數(shù)和最小數(shù)分別是什么?

答案:8 位原碼表示的最大數(shù):(27-1)、8 位補(bǔ)碼表示的最大數(shù):(27-1)、8 位原碼表示的最小數(shù):-27-1)、8 位補(bǔ)碼表示的最小數(shù)-27。

16 位原碼表示的最大數(shù):(215-1)、16 位補(bǔ)碼表示的最大數(shù):(215-1)、16 位原碼表示的最小數(shù):-215-1)、16 位補(bǔ)碼表示的最小數(shù)-215。

1.3 把下列十進(jìn)制數(shù)分別轉(zhuǎn)換為二進(jìn)制數(shù)和十六進(jìn)制數(shù)。

(1)125 (2)255 (3)72 (4)5090

答案:(1) 125 二進(jìn)制數(shù):0111 1101B;十六進(jìn)制數(shù):7DH

(2)255 二進(jìn)制數(shù):1111 1111B;十六進(jìn)制數(shù):0FFH

(3)72 二進(jìn)制數(shù):0100 1000B;十六進(jìn)制數(shù):48H

(4)5090 二進(jìn)制數(shù):0001 0011 1110 0010B;十六進(jìn)制數(shù):13E2H

1.4 把下列無符號(hào)二進(jìn)制數(shù)分別轉(zhuǎn)換為十進(jìn)制數(shù)和十六進(jìn)制數(shù)。

(1)1111 0000 (2)1000 0000 (3)1111 1111 (4)0101 0101

答案:(1)1111 0000 十進(jìn)制數(shù):240D;十六進(jìn)制數(shù):0F0H。

(2)1000 0000 十進(jìn)制數(shù):128D;十六進(jìn)制數(shù):80H。

(3)1111 1111 十進(jìn)制數(shù):255D;十六進(jìn)制數(shù):0FFH。

(4)0101 0101 十進(jìn)制數(shù):85D;十六進(jìn)制數(shù):55H。

1.5 把下列無符號(hào)十六進(jìn)制數(shù)分別轉(zhuǎn)換為十進(jìn)制數(shù)和二進(jìn)制數(shù)。

(1)FF (2)ABCD (3)123 (4)FFFF

答案:(1)FF 十進(jìn)制數(shù):255D;二進(jìn)制數(shù);1111 1111B。

(2)ABCD 十進(jìn)制數(shù):43981D;二進(jìn)制數(shù);1010 1011 1100 1101B。

(3)123 十進(jìn)制數(shù):291D;二進(jìn)制數(shù);0001 0010 0011B。

(4)FFFF 十進(jìn)制數(shù):65535D;二進(jìn)制數(shù);1111 1111 1111 1111B

1.6 分別用8 位二進(jìn)制數(shù)和16 位二進(jìn)制數(shù)寫出下列十進(jìn)制數(shù)的原碼和補(bǔ)碼。

(1)16 (2)-16 (3)+0 (4)-0 (5)127 (6)-128 (7)121 (8)-9

答案:

(1)16 8 位二進(jìn)制數(shù)原碼:0001 0000 補(bǔ)碼:0001 0000;16 位二進(jìn)制數(shù)原碼:0000 0000

0001 0000 補(bǔ)碼: 0000 0000 0001 0000。

(2)-16 8 位二進(jìn)制數(shù)原碼:1001 0000 補(bǔ)碼:1111 000016 位二進(jìn)制數(shù)原碼:1000 0000

0001 0000 補(bǔ)碼:1111 1111 1111 0000。

(3)+0 8 位二進(jìn)制數(shù)原碼:0000 0000 補(bǔ)碼:0000 000016 位二進(jìn)制數(shù)原碼:0000 0000

0000 0000 補(bǔ)碼:0000 0000 0000 0000。

(4)-0 8 位二進(jìn)制數(shù)原碼:1000 0000 補(bǔ)碼:0000 0000;16 位二進(jìn)制數(shù)原碼:1000 0000

0000 0000 補(bǔ)碼: 0000 0000 0000 0000。

(5)127 8 位二進(jìn)制數(shù)原碼:0111 1111 補(bǔ)碼: 0111 1111;16 位二進(jìn)制數(shù)原碼:0000 0000

0111 1111 補(bǔ)碼: 0000 0000 0111 1111

(6)-128 8 位二進(jìn)制數(shù)原碼:?補(bǔ)碼: 1000 0000 ;16 位二進(jìn)制數(shù)原碼:1000 0000

1000 0000 補(bǔ)碼:1111 1111 1000 0000。

(7)121 8 位二進(jìn)制數(shù)原碼:0111 1001 補(bǔ)碼: 0111 1001;16 位二進(jìn)制數(shù)原碼:0000 0000

0111 1001 補(bǔ)碼: 0000 0000 0111 1001。

(8)-9 8 位二進(jìn)制數(shù)原碼:1000 1001 補(bǔ)碼:1111 0111;16 位二進(jìn)制數(shù)原碼:1000 0000

1000 1001 補(bǔ)碼:1111 1111 1111 0111

1.7 試實(shí)現(xiàn)下列轉(zhuǎn)換。

(1)[]10111110B,求[]補(bǔ)?(2)[]補(bǔ)11110011B,求[-]補(bǔ)

(3)[]補(bǔ)10111110B,求[]?(4)[]補(bǔ)10111110B,求[]

答案:(1) 1100 0010 (2) 0000 1101 (3) 1100 0010 (4) 1011 1101

1.8 假設(shè)兩個(gè)二進(jìn)制數(shù)A01101010B10001100,試比較它們的大小。

(1)AB 兩數(shù)均為帶符號(hào)的補(bǔ)碼數(shù)?(2)A、B 兩數(shù)均為無符號(hào)數(shù)

答案:(1)A、B 兩數(shù)均為帶符號(hào)的補(bǔ)碼數(shù):AB

(2)AB 兩數(shù)均為無符號(hào)數(shù):AB

1.9 下列各數(shù)均為十進(jìn)制數(shù),請(qǐng)用8 位二進(jìn)制數(shù)補(bǔ)碼計(jì)算下列各題,用十六進(jìn)制數(shù)表示

其運(yùn)算結(jié)果,并判斷是否溢出,驗(yàn)證教材中所給的判斷依據(jù)。

(1)90+71 (2)90-71 (3)-90-71 (4)-90+71 (5)-90-(-71)

答案:(1)90+71=161127 溢出

[90]補(bǔ)+[71]補(bǔ)=0101 1010+0100 0111=1010 0001=0A1H=[-91]補(bǔ)

(2)90-71=19127 無溢出

[90]補(bǔ)+[-71]補(bǔ)=0101 1010+1011 1001=0001 0011=13H=[19]補(bǔ)

(3)-90-71=-161-128 溢出

[-90]補(bǔ)+[-71]補(bǔ)=1010 0110+1011 1001=0101 1111=5FH=[95]補(bǔ)

(4)-90+71=-19-128 無溢出

[-90]補(bǔ)+[71]補(bǔ)=1010 0110+0100 0111=1110 1101=0EDH=[-19]補(bǔ)

(5)-90-(-71)=-19-128 無溢出

[-90]補(bǔ)+[71]補(bǔ)=1010 0110+0100 0111=1110 1101=0EDH=[-19]補(bǔ)

3.10 完成下列8 位二進(jìn)制數(shù)的邏輯運(yùn)算。

(1)1100110010101010 (2)1100110010101010

(3)1100110010101010 (4)1010110010101100

(5)1010110010101100 (6)1010110010101100

(7)10101100

答案:(1)1100110010101010=1000 1000 (2)1100110010101010=1110 1110

(3)1100110010101010=0110 0110 (4)1010110010101100=1010 1100

(5)1010110010101100=0000 0000 (6)1010110010101100=1010 1100

(7)10101100=0101 0011

1.11 以下均為2 位十六進(jìn)制數(shù),試說明當(dāng)把它們分別看作無符號(hào)數(shù)或字符的ASCII

值,它們所表示的十進(jìn)制數(shù)和字符是什么?

(1)30H (2)39H (3)42H (4)62H (5)20H (6)7H

答案:(1)30H 所表示的十進(jìn)制數(shù)是:48D;字符是:0。

(2)39H 所表示的十進(jìn)制數(shù)是:57D;字符是:9。

(3)42H 所表示的十進(jìn)制數(shù)是:66D;字符是:B。

(4)62H 所表示的十進(jìn)制數(shù)是:98D;字符是:b。

(5)20H 所表示的十進(jìn)制數(shù)是:32D;字符是:sp 空格。

(6)7H 所表示的十進(jìn)制數(shù)是:7D;字符是:BEL 報(bào)警。

1.12 把以下十進(jìn)制數(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è)浮點(diǎn)數(shù)格式如下圖所示:

階碼、尾數(shù)均以補(bǔ)碼表示,基數(shù)為2,求:+25.6 -361.25 的規(guī)格化浮點(diǎn)數(shù)。

答案:1) +25.6D=11001.1001100110B=0.110011001100110×25

+5=0101B,補(bǔ)碼:0101,尾數(shù):[ 0.110011001100110]補(bǔ)=0.110011001100110

規(guī)格化浮點(diǎn)數(shù):0 0000101 0 110011001100110

2) -361.25D=-101101001.01B=29×(-0.101101001010000)

+9=1001,補(bǔ)碼:1001,尾數(shù):[ -0.101101001010000]補(bǔ)=1.010010110110000

規(guī)格化浮點(diǎn)數(shù):0 0001001 1 010010110110000

1.14 設(shè)某計(jì)算機(jī)用12 位表示一個(gè)浮點(diǎn)數(shù),該浮點(diǎn)數(shù)從高位到低位依次為:階符1 位、

階碼3 (原碼表示)、數(shù)符1 位、尾數(shù)7 (補(bǔ)碼表示),則0 100 1 0110011 的真值是多少?

答案:-9.625

?3.1 8086 匯編語言指令的尋址方式有哪幾類?哪種尋址方式的指令執(zhí)行速度最快?

解:尋址方式分為:立即數(shù)尋址方式、寄存器操作數(shù)尋址方式和存儲(chǔ)器操作數(shù)尋址方式。

其中,寄存器操作數(shù)尋址方式的指令執(zhí)行速度最快。

3.2?在直接尋址方式中,一般只指出操作數(shù)的偏移地址,那么,段地址如何確定?如果要用

某個(gè)段寄存器指出段地址,指令中應(yīng)該如何表示?

解:默認(rèn)的數(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)中,設(shè)DS=1000H,ES=2000HSS=1200H,BX=0300H,SI=0200H,

BP=0100H,VAR 的偏移量為0600H,請(qǐng)指出下列指令的目標(biāo)操作數(shù)的尋址方式,若目

標(biāo)操作數(shù)為存儲(chǔ)器操作數(shù),計(jì)算它們的物理地址。

1MOV BX,12 ;目標(biāo)操作數(shù)為寄存器尋址

2MOV [BX],12 ;目標(biāo)操作數(shù)為寄存器間址?PA=10300H

3MOV ES[SI],AX ;目標(biāo)操作數(shù)為寄存器間址?PA=20200H

4MOV VAR,8 ;目標(biāo)操作數(shù)為存儲(chǔ)器直接尋址?PA=10600H

5MOV [BX][SI],AX ;目標(biāo)操作數(shù)為基址加變址尋址?PA=10500H

6MOV 6[BP][SI]AL ;目標(biāo)操作數(shù)為相對(duì)的基址加變址尋址?PA=12306H

7MOV [1000H]DX ;目標(biāo)操作數(shù)為存儲(chǔ)器直接尋址?PA=11000H

8MOV 6[BX],CX ;目標(biāo)操作數(shù)為寄存器相對(duì)尋址?PA=10306H

9MOV VAR+5,AX ;目標(biāo)操作數(shù)為存儲(chǔ)器直接尋址?PA=10605H

3.4下面這些指令中哪些是正確的?那些是錯(cuò)誤的?如果是錯(cuò)誤的,請(qǐng)說明原因。

1XCHG CS,AX ;錯(cuò),CS 不能參與交換

2MOV [BX],[1000] ;錯(cuò),存儲(chǔ)器之不能交換

3XCHG BX,IP ;錯(cuò),IP 不能參與交換

4PUSH CS ;錯(cuò),CS 不能為PUSH 的操作數(shù)

5POP CS ;錯(cuò),不能將數(shù)據(jù)彈到CS

6IN BX,DX ;輸入/輸出只能通過AL/AX

7MOV BYTE[BX],1000 ;1000 大于255,不能裝入字節(jié)單元

8MOV CS,[1000] CS 不能作為目標(biāo)寄存器

9MOV BX,OFFSET VAR[SI] ;OFFSET 只能取變量的偏移地址

10MOV AX,[SI][DI] SI、DI 不能成為基址加變址

11MOV COUNT[BX][SI],ESAX ;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)的范圍不得超過帶符號(hào)的8 位二進(jìn)

制數(shù)表示的字節(jié)范圍;JMP NEAR PTR L1 為段內(nèi)無條件近程轉(zhuǎn)移,跳轉(zhuǎn)的范圍不得超過帶

符號(hào)的16 位二進(jìn)制數(shù)表示的字節(jié)范圍。

(5) CMP DX,CX ?SUB DX ,CX

答案:CMP DX,CX 是比較,也是利用減法比較,但是dx 中的值不變,標(biāo)志寄存器改

變。SUB DX ,CX 是做減法運(yùn)算,dx 中為減后的值,標(biāo)志寄存器改變

(6)MOV [BP][SI],CL ?MOV DS:[ BP][SI],CL

答案:BP 默認(rèn)的段基址是SS,物理地址PA=SS+BP+SI;第二個(gè)重定義為DS 段基址,

物理地址PA=DS+BP+SI

3.6?設(shè)DS=2100H,SS=5200HBX=1400H,BP=6200H,說明下面兩條指令所進(jìn)行的

具體操作:

MOV BYTE PTR [BP], 20H

MOV WORD PTR [BX], 20H

:前一條指令是把立即數(shù)20H,傳送至堆棧段(BP 的默認(rèn)段)偏移量由BP 規(guī)定的字節(jié)單

,地址為:52000H+6200H=58200H

第二條指令是把立即數(shù)20H,傳送至數(shù)據(jù)段(BX 的默認(rèn)段)偏移量由BX 規(guī)定的字單元,

址為:21000H+1400H = 22400H

3.7?設(shè)當(dāng)前?SS=2010H,SP=FE00HBX=3457H,計(jì)算當(dāng)前棧頂?shù)牡刂窞槎嗌伲慨?dāng)執(zhí)

?PUSH BX 指令后,棧頂?shù)刂泛蜅m?/span>2 個(gè)字節(jié)的內(nèi)容分別是什么?

答案:當(dāng)前棧頂?shù)牡刂?/span>=2FF00H

當(dāng)執(zhí)行PUSH BX 指令后,棧頂?shù)刂?/span>=2FEFEH

(2FEFEH)=57H

(2FEFFH)=34H

3.8?設(shè)DX=78C5HCL=5,CF=1,確定下列各條指令執(zhí)行后,DX CF 中的值。

1?SHR DX,1 ;DX=3C62H CF=1

2?SAR DXCL ;DX=03C6H CF=0

3?SHL DX,CL ;DX=18A0H CF=1

4?ROR DX,CL ;DX=2BC6H CF=0

5?RCL DXCL ;DX=18B7H CF=1

6?RCR DH,1 DX=BCC5H CF=0

3.9?設(shè)AX=0A69H,VALUE 字變量中存放的內(nèi)容為1927H,寫出下列各條指令執(zhí)行

后寄存器和CF、ZF、OFSF、PF 的值。

AX CF ZF OF SF PF

1XOR AX,VALUE ?134EH 0 0 0 0 1

2AND AX,VALUE ;?0821H 0 0 0 0 1

3SUB AXVALUE ;?F142H 1 0 0 1 1

4CMP AX,VALUE ;?0A69H 1 0 0 1 1

5NOT AX ;?F596H X X X X X

6TEST AX,VALUE ;?0A69H 0 0 0 0 1

3.10?設(shè)AX BX 中是符號(hào)數(shù),CX DX 是無符號(hào)數(shù),請(qǐng)分別為下列各項(xiàng)確定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 CXDX

JBE NEXT

3.11?閱讀分析下列指令序列:

ADD AX,BX

JNO L1

JNC L2

SUB AXBX

JNC L3

JNO L4

JMP L5

AX BX 的初值分別為以下5 種情況,則執(zhí)行該指令序列后,程序?qū)⒎謩e轉(zhuǎn)向何處

L1L5 中的一個(gè))。

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 處,進(jìn)位CF=0,轉(zhuǎn)移到L2 處;

(4)轉(zhuǎn)L3:溢出,不轉(zhuǎn)移到L1 處,進(jìn)位CF=1,不轉(zhuǎn)移到L2 處,減法借位CF=0,轉(zhuǎn)移

L3 處;

(5)轉(zhuǎn)L5:溢出,不轉(zhuǎn)移到L1 處,進(jìn)位CF=1,不轉(zhuǎn)移到L2 處,減法借位CF=1,不轉(zhuǎn)

移到L3 處,不溢出OF=0,轉(zhuǎn)移到L4 處;

3.12?用普通運(yùn)算指令執(zhí)行BCD 碼運(yùn)算時(shí),為什么要進(jìn)行十進(jìn)制調(diào)整?具體地講,在進(jìn)行

BCD 碼的加、減、乘、除運(yùn)算時(shí),程序段的什么位置必須加上十進(jìn)制調(diào)整指令?

解:因?yàn)?/span>8086 指令把操作數(shù)作為二進(jìn)制數(shù)進(jìn)行二進(jìn)制運(yùn)算,要得到正確的BCD 結(jié)果,

要進(jìn)行調(diào)整。在加、減、乘法指令之后加上BCD 調(diào)整指令,而在除法指令之前先用BCD 調(diào)

整指令再用除法指令。

3.13?在編寫乘除法程序時(shí),為什么常用移位指令來代替乘除法指令?編寫一段程序,實(shí)

現(xiàn)將BX 中的數(shù)除以10,結(jié)果仍然放在BX 中。

解:用移位指令時(shí),左移l 位相當(dāng)于將操作數(shù)乘2,右移1 位相當(dāng)于將操作數(shù)除2。用

移位指令實(shí)現(xiàn)一些簡單的乘除法程序,比用乘法指令和除法指令進(jìn)行乘、除運(yùn)算要快得多。

用除法指令實(shí)現(xiàn):

MOV CL 0AH

MOV AX,BX

IDIV CL

MOV BX,AX

3.14?串操作指令使用時(shí)特別要注意和SI,DI 這兩個(gè)寄存器及方向標(biāo)志DF 密切相關(guān)。請(qǐng)

具體就指令MOVSB/MOVSW、CMPSB/CMPSW、SCASB/SCASW、LODSB/LODSW、

STOSB/STOSW 列表說明和SI、DI DF 的關(guān)系。

解答:

SI DI DF

MOVSB/MOVSW 指出源地

指出目的地

不帶?REP 重復(fù)前綴時(shí),DF=0,每傳送一次,SI

DI 1 或加2DF=1,SIDI 則減1 或減2

CMPSB/CMPSW

存放源字

符串首地

存放目的字

符串首地址

DF=0,每次比較后,SI、DI 1 或加2,CX

1,DF=1SI、DI 1 或減2CX 1

SCASB/SCASW ?指出字符串

首址偏移量?

LODSB/LODSW 作為地址

指針

存放處理結(jié)

DF=1 時(shí),地址作增量修改,DF=0 時(shí),地址作減

量修改

STOSB/STOSW ?存放目的地

?

3.15?用串操作指令設(shè)計(jì)實(shí)現(xiàn)以下功能的程序段:首先將100H 個(gè)數(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ù)DXAX 的相反數(shù)。

:

NEG DX

NEG AX

SBB DX,0

3.17?試對(duì)數(shù)據(jù)段偏移地址為101H 單元中的單字節(jié)數(shù)求補(bǔ)后存入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?試編寫一個(gè)程序,比較兩個(gè)同長字符串STRING1 STRING2 所含字符是否相同,

若相同MATCH 單元賦值1,若不相同MATCH 單元賦值0。

答案:

程序段為:

;數(shù)據(jù)定義

STRING1 DB ‘ABCDEFGHIJK ;串1,作為源串

STRING2 DB ‘ABCDFGKJ ;串2,作為目標(biāo)串

MATCH DB ? ;定義MATCH 單元

;功能代碼

MOV AX,SEG STRING1

MOV DS,AX ;源串段地址送DS

MOV AX,SEG STRING2

MOV ES,AX ;目標(biāo)串段地址送ES

LEA SI, STRING1 ;源串偏移地址送SI

LEA DI, STRING2 ;目標(biāo)串偏移地址送DI

MOV CX, STRING1- STRING2 ;重復(fù)次數(shù)送CX

CLD ;地址增

REPE CMPSB ;相等繼續(xù)比較,不相等退出

JZ EQUAL ;退出時(shí),若ZF=1,表示兩串相等

MOV MATCH,0 ;不相同,MATCH 單元賦值0

JMP OVER

EQUAL:MOV MATCH,1 ;相同MATCH 單元賦值1

OVER:HLT

3.20?編寫代碼,計(jì)算a+10b+100c+20d,其中a、bc、d 均為單字節(jié)無符號(hào)數(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 ;目標(biāo)串段地址送ES

LEA SI, LIST ;源串偏移地址送SI

LEA DI, BLK ;目標(biāo)串偏移地址送DI

MOV CX, 101 ;重復(fù)次數(shù)送CX

CLD ;地址增

REP MOVSB

3.23?設(shè)CS:0100H 單元有一條兩字節(jié)的JMP SHORT LAB 指令,若其中的位移量為:

56H 80H 78H (4)0E0H

試寫出轉(zhuǎn)向目標(biāo)的物理地址是多少?

答:因?yàn)?/span>CS:0100H 處存放兩字節(jié)指令JMP SHORT LAB,所以當(dāng)執(zhí)行該指令時(shí)

(IP)=0102H

(1) 轉(zhuǎn)向目標(biāo)的物理地址是:(CS)*10H+(IP)+0056H=CS:0058H

(2) 轉(zhuǎn)向目標(biāo)的物理地址是:(CS)*10H+(IP)+0FF80H=CS:0082H80H 對(duì)應(yīng)的負(fù)數(shù)為-80H

(向上轉(zhuǎn)移,負(fù)位移量)

(3) 轉(zhuǎn)向目標(biāo)的物理地址是:(CS)*10H+(IP)+0078H=CS:0180H

(4) 轉(zhuǎn)向目標(biāo)的物理地址是:(CS)*10H+(IP)+0FFE0H=CS:00E2HE2H 對(duì)應(yīng)的負(fù)數(shù)為

-1EH(向上轉(zhuǎn)移,負(fù)位移量)

3.24?不使用除法指令,將堆棧段中10H、11H 單元中的雙字節(jié)帶符號(hào)數(shù)除以8,結(jié)果存

12H、13H 單元(注:多字節(jié)數(shù)存放格式均為低位在前,高位在后)。

POP AX

POP BX

TEST AX,8000H ;測試被除數(shù)符號(hào)位

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 起有兩個(gè)16 位的帶符號(hào)數(shù),試求它們的積,存入3034H-3036H

元中。

答案:

MOV AX,[3030H]

MOV BX,[3032H]

IMUL BX

MOV [3034H],AX

MOV [3036H]


查看更多