IBM-PC匯編語言程序設計(第二版)習題答案_第1頁
IBM-PC匯編語言程序設計(第二版)習題答案_第2頁
IBM-PC匯編語言程序設計(第二版)習題答案_第3頁
IBM-PC匯編語言程序設計(第二版)習題答案_第4頁
IBM-PC匯編語言程序設計(第二版)習題答案_第5頁
已閱讀5頁,還剩139頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Page1

第一章.習題

1.1用降哥法和除法將下列十進制數(shù)轉換為二進制數(shù)和十六進制數(shù):

(1)369(2)10000(3)4095(4)32767

答:⑴369=101110001B=171H

(2)10000=10011100010000B=2710H

(3)4095=111111111111B=FFFH

(4)32767=111111111111111B=7FFFH

1.2將下列二進制數(shù)轉換為十六進制數(shù)和十進制數(shù):

(1)101101(2)10000000(3)1111111111111111(4)11111111

答:⑴101101B=2DH=45

(2)10000000B=80H=128

(3)1111111111111111B=FFFFH=65535

(4)11111111B=FFH=255

1.3將下列十六進制數(shù)轉換為二進制數(shù)和十進制數(shù):

(1)FA(2)5B(3)FFFE(4)1234

答:(1)FAH=11111010B=250

(2)5BH=1011011B=91

(3)FFFEH=1111111111111110B=65534

(4)1234H=1001000110100B=4660

1.4完成下列十六進制數(shù)的運算,并轉換為十進制數(shù)進行校核:

(D3A+B7(2)1234+AF(3)ABCD-FE(4)7ABx6F

答:(1)3A+B7H=F1H=241

(2)1234+AFH=12E3H=4835

(3)ABCD-FEH=AACFH=43727

(4)7ABx6FH=35325H=217893

L5下列各數(shù)均為十進制數(shù),請用8位二.進制補碼計算下列各題,并用十六進制數(shù)表示其運

算結果。

(1)(-85)+76(2)85+(-76)(3)85-76(4)85-(-76)(5)(-85)-76(6)-85-(-76)

答:(1)(-85)+76=101010UB+0100U00B=llll01UB=0F7H;CF=0;OF=0

(2)85+(-76)=01010101B+10110100B=00001001B=09H;CF=1;OF=0

(3)85-76=01010101B-01001100B=01010101B+10110100B=00001001B=09H;

CF=0;OF=0

(4)85-(-76)=01010101B-10110100B=01010101B+010011OOB=1O1OOOO1B=OA1H;

CF=0;OF=1

(5)(-85)-76=10101011B-01001100B=10101011B+10110100B=01011111B=5FH;

CF=0;OF=1

(6)-85-(-76)=10101011B-1011()100B=101()1011B+01001100B=l1110111B=0F7H;

CF=O;OF=0

1.6下列各數(shù)為十六進制表示的8位二進制數(shù),請說明當它們分別被看作是用補碼表示的帶

符號數(shù)或無符號

數(shù)時,它們所表示的十進制數(shù)是什么?

⑴D8⑵FF

答:(1)D8H表示的帶符號數(shù)為-40,D8H表示的無符號數(shù)為216;

(2)FFH表示的帶符號數(shù)為-1,FFH表示的無符號數(shù)為255。

1.7下列各數(shù)均為用十六進制表示的8位二進制數(shù),請說明當它們分別被看作是用補碼表

示的數(shù)或字符的

ASCII碼時,它們所表示的十進制數(shù)及字符是什么?

(1)4F⑵2B(3)73(4)59

答:(1)4FH表示的十進制數(shù)為79,4FH表示的字符為O;

(2)2BH表示的十進制數(shù)為43,2BH表示的字符為+;

(3)73H表示的十進制數(shù)為115,73H表示的字符為s;

(4)59H表示的十進制數(shù)為89,59H表示的字符為Y。

1.8請寫出下列字符串的ASCII碼值。

Forexample,

Thisisanumber3692.

答:46H6FH72H20H65H78H61H6DH70H6CH65H

2CH0AH0DH

54H68H69H73H20H69H73H20H61H20H6EH75H

6DH62H65H72H

20H33H36H39H32H2EH0AH0DH

2.1在80x86微機的輸入/輸出指令中,I/O端口號通常是由DX寄存器提供的,但有時也

可以在指令中直接

指定00~FFH的端口號。試問可直接由指令指定的I/O端口數(shù)。

存儲器

答:可直接由指令指定的I/O端口數(shù)為256個。

2.2有兩個16位字1EE5H和2A3cH分別存放在80x86微機的存儲器的000B0H和

000B3H000B0HE5H

單元中,請用圖表示出它們在存儲器里的存放情況.

000B1H1EH

答:存儲器里的存放情況如右上圖所示。

000B2H…

000B3H

3CH

2.3在IBMPC機的存儲器中存放信息如右下圖所示。試讀出30022H和30024H字節(jié)

單元的

內容,以及30021H和30022H字單元的內容。

000B4H2AH

答:30022H字節(jié)單元的內容為ABH;30024H字節(jié)單元的內容為EFH。30021H字單

元的

內容為AB34H;30022H字單元的內容為CDABH。

2.2題的信息存放情況

存儲器

2.4在實模式下,段地址和偏移地址為3017:000A的存儲單元的物理地址是什么?如果段地

和偏移地址是3015:002A和3010:007A呢?

30020H12H

答:3017:000A、3015:002A和3010:007A的存儲單元的物理地址都是3017AH。

30021H34H

2.5如果在一個程序開始執(zhí)行以前(CS)=0A7F0H,(如16進制數(shù)的最高位為字母,則應在其

前30022HABH

加一個0)(IP)=2B40H,試問該程序的第一個字的物理地址是多少?

30023HCDH

答:該程序的第一個字的物理地址是0AAA40H。

30024HEFH

2.6在實模式下,存儲器中每?段最多可有10000H個字節(jié)。如果用調試程序DEBUG的r

A

2.3題的

信息存放情況

令在終端上顯示出當前各寄存器的內容如下,請畫出此時存儲器分段的示意圖,以及條

標志OF、SF、ZF、CF的值。

C>debug10E40

10F40

數(shù)據段

-r

AX=0000BX=0000CX=0079DX=0000SP=FFEEBP=000020E40

附加段

20F40

SI=0000Dl=0000DS=10E4ES=10F4SS=21F0CS=31FF

IP=0100NVUPDIPLNZNAPONC

21FOO

答:此時存儲器分段的示意圖如右圖所示。OF、SF、ZF、CF的值都為0。

堆棧段

2.7下列操作可使用那些寄存器?

31FOO

(1)加法和減法數(shù)據寄存器等

31FF0

(2)循環(huán)計數(shù)CX

代碼段

41FF0

(3)乘法和除法AX、DX,乘數(shù)和除數(shù)用其他寄存器或存儲器

(4)保存段地址段寄存器2.6

題的存儲器分段示意圖

(5)表示運算結果為0ZF=1

(6)將要執(zhí)行的指令地址CS:IP

(7)將要從堆棧取出數(shù)據的地址SS:SP

答:答案見題目的右邊。

2.8那些寄存器可以用來指示存儲器地址?

答:BX、BP、SLDL堆棧操作時的SP、對應的段地址、386及其后繼機型的Exx。

2.9請將下列左邊的項和右邊的解釋聯(lián)系起來(把所選字母放在括號中):

(l)CPU(M)A.保存當前棧頂?shù)刂返募拇嫫鳌?/p>

(2)存儲器(C)B.指示下一條要執(zhí)行的指令的地址。

(3)堆棧(D)C.存儲程序、數(shù)據等信息的記憶裝置,微機有RAM和ROM兩

(4)IP(B)D.以后進先出方式工作的存儲空間。

(5)SP(A)E.把匯編語言程序翻譯成機器語言程序的系統(tǒng)程序。

(6)狀態(tài)標志(L)F.唯一代表存儲空間中每個字節(jié)單元的地址。

Page3

(7)控制標志(K)G能被計算機直接識別的語言。

(8)段寄存器(J)H.用指令的助記符、符號地址、標號等符號書寫程序的語言。

(9)物理地址(F)I.把若干個模塊連接起來成為可執(zhí)行文件的系統(tǒng)程序。

(10)匯編語言(H)J.保存各邏輯段的起始地址的寄存器,8086/8088機有四個:

CS、DS、

SS、ESo

(11)機器語言(G)K.控制操作的標志,如DF位。

(12)匯編程序(E)L.記錄指令操作結果的標志,共6位:OF、SF、ZF、AF、PF、

CF?

(13)連接程序(I)M.分析、控制并執(zhí)行指令的部件,由算術邏輯部件ALU和寄

存器等

組成。

(14)指令(0)N.由匯編程序在匯編過程中執(zhí)行的指令。

(15)偽指令(N)。告訴CPU要執(zhí)行的操作(一般還要指出操作數(shù)地址),在程序

運行時

執(zhí)行。

答:答案見題目的括號中。

3.1給定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,試確定在以下各種尋址方式下的有

效地址是什么?

(1)立即尋址

(2)直接尋址

(3)使用BX的寄存器尋址

(4)使用BX的簡接尋址

(5)使用BX的寄存器相對尋址

(6)基址變址尋址

(7)相對基址變址尋址

答:(1)操作數(shù)在指令中,即立即數(shù);

(2)EA=D=7237H;

(3)無EA,操作數(shù)為(BX)=637DH;

(4)EA=(BX)=637DH;

(5)EA=(BX)+D=0D5B4H;

(6)EA=(BX)+(SI)=8E18H;

(7)EA=(BX)+(SI)+D=1004FH:超過了段的邊界,最高進位位丟失,因此EA=004FH。

3.2試根據以下要求寫出相應的匯編語言指令

(1)把BX寄存器和DX寄存器的內容相加,結果存入DX寄存器中。

(2)用寄存器BX和SI的基址變址尋址方式把存儲器中的一個字節(jié)與AL寄存器的內

容相加,并把結果

送到AL寄存器中。

(3)用寄存器BX和位移量OB2H的寄存器相對尋址方式把存儲器中的一個字和(CX)相

加,并把結果送回

存儲器中。

(4)用位移量為0524H的直接尋址方式把存儲器中的一個字與數(shù)2A59H相加,并把結

果送回存儲單元中。

(5)把數(shù)OB5H與(AL)相加,并把結果送回AL中。

答:(l)ADDDX,BX

(2)ADDAL,[BX][SI]

(3)ADD[BX+0B2H],CX

(4)ADDWORDPTR[0524H],2A59H

(5)ADDAL,0B5H

3.3寫出把首地址為BLOCK的字數(shù)組的第6個字送到DX寄存器的指令。要求使用以下

幾種尋址方式:

(1)寄存器間接尋址

(2)寄存器相對尋址

(3)基址變址尋址

答:(l)MOVBX,OFFSETBLOCK

ADDBX,(6-1)2

*

MOVDX,[BX]

(2)MOVBX,OFFSETBLOCK改為:MOVBX,

(6-1)*2

MOVDX,[BX+(6-1)2]也可MOVDX,

BLOCK[BX]

*

(3)MOVBX,OFFSETBLOCK

MOVSI,(6-1)2

MOVDX,[BX][SI]

3.4現(xiàn)有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,

(20102H)=56H,(20103H)=78H,

(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,試說明下列各條指

令執(zhí)行完后AX寄

存器的內容。

(l)MOVAX,1200H

(2)MOVAX,BX

1BOO:2OOOH10H

(3)MOVAX,[1200H]

1BOO:2OO1HFFH

(4)MOVAX,[BX]

(5)MOVAX,1100[BX]

1BOO:2OO2HOOH

(6)MOVAX,[BX][SI]

1BOO:2OO3H80H

(7)MOVAX,1100[BX][SI]

答:(1)

(AX)=1200H

?一(AL)

8000:FF10H

(2)

(AX)=0100H

?f(AH)

(3)(AX)=4C2AH

8OOO:FF11H

(4)(AX)=3412H

3.6題的作圖表示

(5)(AX)=4C2AH

(6)(AX)=7856H

(7)(AX)=65B7H

3.5給定(IP)=2BC0H,(CS)=0200H,位移量D=5H9H,(BX)=1200H,(DS)=212AH,

(224A0H)=0600H,

(275B9H)=098AH,試為以下的轉移指令找出轉移的偏移地址。

(1)段內直接尋址

(2)使用BX及寄存器間接尋址方式的段內間接尋址

(3)使用BX及寄存器相對尋址方式的段內間接尋址

答:(1)JMPNEARPTR5119H;(IP)=5119H+((IP)+03H)=7CDCH,物理地

±[|:PA=09CDCH

(IP)+03H是JMPNEARPTR5119H指令的下一條指令的首地址。

(2)JMPWORDPTR[BX];(IP)=((DS)*10H+(BX))=0600H,PA=02600H

(3)JMPD[BX];(IP)=((DS)*10H+(BX)+D)=098AH,PA=0298AH

3.6設當前數(shù)據段寄存器的內容為1B00H,在數(shù)據段的偏移地址2000H單元內,含有一個

內容為0FF10H和

8000H的指針,它們是一個16位變量的偏移地址和段地址,試寫出把該變量裝入AX

的指令序列,并畫

圖表示出來。

答:MOVBX,[2000H]:圖示如上所示。

MOVAX,[2000H+2]MOVBX,

2000H

MOVES,AXLESBX,

IBX]

MOVAX,ES:[BX]

MOVAX,

ES:|BX]

3.7在0624H單元內有一條二字節(jié)JMPSHORTOBJ指令,如其中位移量

為(1)27H,(2)6BH,(3)0C6H,

試問轉向地址OBJ的值是多少?

答:(1)OBJ=0624H+02H+27H=064DH

(2)OBJ=0624H+02H+6BH=0691H

(3)OBJ=0624H+02H+0C6H=05ECH;C6H對應的負數(shù)為-3AH

(向上轉移,負位移量)

3.8假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,

數(shù)據段中變量

名VAL的偏移地址為0050H,試指出下列源操作數(shù)字段的尋址方式是什么?其物理地

址值是多少?

(l)MOVAX,OABH(2)MOVAX,BX

Page5

(3)MOVAX,[100H](4)MOVAX,VAL

(5)MOVAX,[BX](6)MOVAX,ES:[BX]

(7)MOVAX,[BP](8)MOVAX,[SI]

(9)MOVAX,[BX+10](10)MOVAX,VAL[BX]

(11)MOVAX,[BX][SI](12)MOVAX,VAL[BX]ISI]

答:(1)立即方式;操作數(shù)在本條指令中

(2)寄存器尋址方式;操作數(shù)為(BX)=0100H

(3)直接尋址方式;PA=20100H

(4)直接尋址方式;PA=20050H

(5)BX寄存器間接尋址方式;PA=20100H

(6)附加段BX寄存器間接尋址方式;PA=21100H

(7)BP寄存器間接尋址方式;PA=15010H

(8)SI寄存器間接尋址方式;PA=200A0H

(9)BX寄存器相對尋址方式;PA=20110H

(10)BX寄存器相對尋址方式;PA=20150H

(ll)BX和SI寄存器基址變址尋址方式;PA=201A0H

(12)BX和SI寄存器相對基址變址尋址方式;PA=201F0H

3.9在ARRAY數(shù)組中依次存儲了七個字數(shù)據,緊接著是名為ZERO的字單元,表示如下:

ARRAYDW23,36,2,100,32000,54,0

ZERODW?

(1)如果BX包含數(shù)組ARRAY的初始地址,請編寫指令將數(shù)據0傳送給ZERO單元。

(2)如果BX包含數(shù)據0在數(shù)組中的位移量,請編寫指令將數(shù)據0傳送給ZERO單元。

答:(l)MOVAX,[BX+(7-l)*2]

MOV[BX+(7)*2],AX

(2)MOVAX,ARRAY[BX]

MOVARRAY[BX+2],AX

3.10如TABLE為數(shù)據段中0032單元的符號名,其中存放的內容為1234H,試問以下兩條

指令有什么區(qū)別?

指令執(zhí)行完后AX寄存器的內容是什么?

TABLE0AH

MOVAX,TABLE

OOH

LEAAX,TABLE

14H

答:MOVAX,TABLE是將TABLE單元的內容送到AX,(AX)=1234H

TABLE+3OOH

LEAAX,TABLE是將TABLE單元的有效地址送到AX,(AX)=0032H

1EH

3.11執(zhí)行下列指令后AX寄存器中的內容是什么?

OOH

TABLEDW10,20,30,40,50;000AH,0014H,001EH,0028H,0032H

28H

ENTRYDW3

OOH

32H

MOVBX,OFFSETTABLE

OOH

ADDBX,ENTRY

MOVAX,[BX]

3.11題的TABLE

答:(AX)=lE00H(TABLE的存儲方式如右圖所示)

存儲方式

3.12下列ASCH碼串(包括空格符)依次存儲在起始地址為CSTRING的字節(jié)單元中:

CSTRINGDELBASEDADDRESSING(

請編寫指令將字符串中的第1個和第7個字符傳送給DX寄存器。

答:MOVDH,CSTRING

MOVDL,CSTRING+7-1

3.13已知堆棧段寄存器SS的內容是0FFA0H,堆棧指針寄存器SP的內容是00B0H,先執(zhí)

行兩條把8057H和

0F79H分別進棧的PUSH指令,再執(zhí)行一條POP指令。試畫出堆棧區(qū)和SP的內容變

化過程示意圖(標出

存儲單元的物理地址)。

答:堆棧區(qū)和SP的內容變化過程示意圖如下左圖所示。

FFAACH79H一再次進棧(SP)-(SP)?21BOO:2OOO8000H

0FH出棧時(SP)-(SP)+21BOO:2OO22B00H

FFAAEH57H-首次進棧(SP)-(SP)?2

80H

FFAB0H

2B00:80()0X

3.14設(DS)=1BOOH,(ES)=2B00H,有關存儲單元的內容如上右圖所示。請寫出兩條指令把

字變量X裝入AX

寄存器。

答:MOVBX,[2000H]

MOVAX,ES:[BX]

3.15求出以下各十六進制數(shù)與十六進制數(shù)62A0H之和,并根據結果設置標志位SF、ZF、

CF和OF的值。

(1)1234H(2)4321H(3)CFA0H(4)9D60H

答:(1)和為74D4H;SF=O,ZF=0,CF=0,OF=0

(2)和為A5C1H;SF=1,ZF=0,CF=0,OF=1

(3)和為3240H;SF=O,ZF=0,CF=1,OF=0

(4)和為0000H;SF=O,ZF=1,CF=1,OF=0

3.16求出以下各十六進制數(shù)與十六進制數(shù)4AE0H的差值,并根據結果設置標志位SF、ZF、

CF和OF的值。

(1)1234H(2)5D90H(3)9090H(4)EA04H

答:(1)差為C754H;SF=1,ZF=0,CF=1,OF=0

⑵差為12B0H;SF=O,ZF=0,CF=0,OF=0

(3)差為45B0H;SF=O,ZF=0,CF=0,OF=1

(4)差為9F24H;SF=1,ZF=0,CF=0,OF=0

3.17寫出執(zhí)行以下計算的指令序列,其中X、Y、Z、R、W均為存放16位帶符號數(shù)單元

的地址。

(1)Z-W+(Z?X)(2)Z-W-(X+6)?(R+9)

(3)Z-(W*X)/(Y+6),R-余數(shù)(4)Z-((W?X)/5*Y)*2

答:(l)MOVAX,Z;以下程序都未考慮帶符號數(shù)的溢出

SUBAX,X

ADDAX,W

MOVZ,AX

(2)MOVBX,X

ADDBX,6

MOVCX,R

ADDCR,9

MOVAX,W

SUBAX,BX

SUBAX,CX

MOVZ,AX

(3)ADDY,6

MOVAX,W

IMULX

IDIVY

MOVZ,AX

MOVR,DX

(4)MOVAX,W

SUBAX,X

CWD

MOVBX,5

IDIVBX

IMULY

SHLAX,1;((DX),(AX))*2

RCLDX,1

3.18已知程序段如下:

MOVAX,1234H;(AX)=1234H,標志位不變

MOVCL,4;(AX)和標志位都不變

ROLAX,CL;(AX)=2341H,CF=1,SF和ZF不變

DECAX;(AX)=2340H,CF=1不變,SF=O,ZF=0

MOVCX,4:(AX)和標志位都不變

MULex;(AX)=8D00H,CF=OF=0,其它標志無定義

INT20H

試問:

(1)每條指令執(zhí)行完后,AX寄存器的內容是什么?

(2)每條指令執(zhí)行完后,進位、符號和零標志的值是什么?

(3)程序結束時,AX和DX的內容是什么?

答:⑴見注釋;

(2)見注釋;

(3)(AX)=8D00H,(DX)=0

3.19下列程序段中的每條指令執(zhí)行完后,AX寄存器及CF、SF、ZF和OF的內容是什么?

MOVAX,0;(AX)=0,標志位不變

DECAX;(AX)=0FFFFH,CF不變,SF=1,ZF=0,OF=0

ADDAX,7FFFH;(AX)=7FFEH,CF=1,SF=O,ZF=0,OF=0

ADDAX,2;(AX)=8000H,CF=0,SF=1,ZF=0,OF=1

NOTAX;(AX)=7FFFH,標志位不變

SUBAX,OFFFFH;(AX)=8000H,CF=1,SF=1,ZF=0,OF=1

ADDAX,8000H;(AX)=0,CF=1,SF=O,ZF=1,OF=1

SUBAX,1;(AX)=0FFFFH,CF=1,SF=1,ZF=0,OF=0

ANDAX,58D1H;(AX)=58D1H,CF=0,SF=O,ZF=0,OF=0

SALAX,1;(AX)=OB1A2H,CF=0,SF=1,ZF=0,OF=1

SARAX,1;(AX)=OD8D1H,CF=0,SF=1,ZF=0,OF=0

NEGAX;(AX)=272FH,CF=1,SF=O,ZF=0,OF=0

RORAX,1;(AX)=9397H,CF=1,SF和ZF不變,OF=1

答:見注釋。

3.20變量DATAX和變量DATAY的定義如下:

DATAXDW0148H

DW2316H

DATAYDW0237H

DW4052H

請按下列要求寫出指令序列:

(l)DATAX和DATAY兩個字數(shù)據相加,和存放在DATAY中。

(2)DATAX和DATAY兩個雙字數(shù)據相加,和存放在從DATAY開始的雙字單元中。

(3)解釋下列指令的作用:

STC

MOVBX,DATAX

ADCBX,DATAY

(4)DATAX和DATAY兩個字數(shù)據相乘(用MUL)。

⑸DATAX和DATAY兩個雙字數(shù)據相乘(用MUL)。

(6)DATAX除以23(用DIV)O

⑺DATAX雙字除以字DATAY(用DIV)O

答:⑴MOVAX,DATAX

ADDDATAY,AX

MOVAX,DATAX+2

ADDDATAY+2,AX

(2)MOVAX,DATAX

Page8

ADDDATAY,AX

MOVAX,DATAX+2

ADCDATAY+2,AX

MOVDATAY+4,0;用于存放進位位

ADCDATAY+4,0

⑶DATAX和DATAY兩個字數(shù)據之和加1,結果存入BX寄存器。

(4)RESULT1DW0

DW0

RESUET2DW0

DW0

1?

MOVAX,DATAX

MULDATAY

MOVRESULT1,AX

MOVRESULT1+2,DX

MOVAX,DATAX+2

MULDATAY+2

MOVRESULT2,AX

MOVRESULT2+2,DX

⑸AADW0

BBDW0

CCDW0

DDDW0

MOVAX,DATAX

MULDATAY

MOVAA,AX

MOVBB,DX

MOVAX,DATAX

MULDATAY+2

ADDBB,AX

ADCCC,DX

MOVAX,DATAX+2

MULDATAY

ADDBB,AX

ADCCC,DX

ADCDD,0

MOVAX,DATAX+2

MULDATAY+2

ADDCC,AX

ADCDD,DX

(6)MOVAX,DATAX

MOVBL,23

DIVBL

(7)MOVDX,DATAX+2

MOVAX,DATAX

DIVDATAY

3.21寫出對存放在DX和AX中的雙字長數(shù)求補的指令序列。

答:NEGDX也可為:NOTDX

NEGAXNOTAX

SBBDX,0ADDAX,1

ADCDX,0

3.22試編寫一程序求出雙字長數(shù)的絕對值。雙字長數(shù)在A和A+2單元中,結果存放在B和

B+2單元中。

答:程序段如下:

MOVAX,A

-

MOVDX,A+2

CMPDX,0

JNSZHENSHU;不是負數(shù)則轉走

NEGDX

NEGAX

SBBDX,0

ZHENSHU:MOVB,AX

MOVB+2,DX

INT20H

3.23假設(BX)=0E3H,變量VALUE中存放的內容為79H,確定下列各條指令單獨執(zhí)行后

的結果。

(l)XORBX,VALUE;(BX)=9AH,CF、OF都為(),AF無定義,SF=1,ZF=0,

PF=1

(2)ANDBX,VALUE;(BX)=61H,CF、OF都為0,AF無定義,SF=O,ZF=0,

PF=O

(3)ORBX,VALUE;(BX)=0FBH,CF、OF都為0,AF無定義,SF=1,ZF=0,

PF=0

(4)XORBX,OFFH;(BX)=1CH,CF、OF都為0,AF無定義,SF=O,ZF=0,

PF=0

(5)ANDBX,0;(BX)=OOH,CF、OF都為0,AF無定義,SF=0,ZF=1,

PF=1

(6)TESTBX,01H;(BX)=0E3H,CF、OF都為0,AF無定義,SF=1,ZF=0,

PF=0

答:見注釋。

3.24試寫出執(zhí)行下列指令序列后BX寄存器的內容。執(zhí)行前(BX)=6D16H。

MOVCL,7

SHRBX,CL

答:(BX)二00DAH。

3.25試用移位指令把十進制數(shù)+53和-49分別乘以2。它們應該用什么指令?得到的結果是

什么?如果要除以

2呢?

答:MOVAL,53

SALAL,1;(AL)=(+53*2)=6AH

MOVAL,-49

SALAL,1;(AL)=(-49*2)=9EH

MOVAL,53

SARAL,1;(AL)=(53/2)=1AH

MOVAL,-49

SARAL,1;(AL)=(-49/2)=0E7H

3.26試分析下面的程序段完成什么功能?

MOVCL,04

SHLDX,CL

MOVBL,AH

SHLAX,CL

SHRBL,CL

ORDL,BL

答:本程序段將((DX),(AX))的雙字同時左移4位,即將此雙字乘以10H(16)o

3.27假定(DX)=0B9H,(CL)=3,(CF)=1,確定下列各條指令單獨執(zhí)行后DX中的值。

(l)SHRDX,1;(DX)=05CH

(2)SARDX,CL;(DX)=17H

(3)SHLDX,CL;(DX)=5C8H

(4)SHLDL,1;(DX)=72H

(5)RORDX,CL;(DX)=2017H

(6)ROLDL,CL;(DX)=0CDH

(7)SALDH,1;(DX)=0B9H

(8)RCLDX,CL;(DX)=2CCH

(4)RCRDL,1;(DX)=0DCH

答:見注釋。

3.28下列程序段執(zhí)行完后,BX寄存器的內容是什么?

MOVCL,3

MOVBX,0B7H

ROLBX,1

RORBX,CL

答:(BX)=0C02DH。

3.29假設數(shù)據段定義如下:

CONAME里PACEEXPLORERSINC/

PRUNEDB20DU?(

用串指令編寫程序段分別完成以下功能:

(1)從左到右把CONAME中的字符串傳送至UPRUNE。

(2)從右到左把CONAME中的字符串傳送到PRUNE。

(3)把CONAME中的第3和第4個字節(jié)裝入AX。

(4)把AX寄存器的內容存入從PRLINE+5開始的字節(jié)中。

(5)檢查CONAME字符串中有無空格字符,如有則把第一個空格字符的地址傳送給

BX寄存器。

答:(l)MOVCX,20

CLD

MOVSI,SEGCONAME

MOVDS,SI

MOVES,SI

LEASI,CONAME

LEADLPRUNE

REPMOVSB

(2)MOVCX,20

STD

MOVSI,SEGCONAME

MOVDS,SI

MOVES,SI

LEASI,CONAME

ADDSI,20-1

LEADI,PRUNE

ADDDI,20-1

REPMOVSB

(3)MOVAX,WORDPTRCONAME+3-1

(4)MOVWORDPTRPRUNE+5,AX

(5)MOVAL,4;空格的ASCII碼送AL寄存器

CLD

MOVDI,SEGCONAME

MOVES,DI

LEADI,CONAME

REPNESCASB

JNENEXT

DECDI

MOVBX,DI

t

NEXT:?■

3.30編寫程序段,把字符串STRING中的_&,字符用空格符代替。

STRINGDB_ThedateisFEB&03'

答:程序段如下:

MOVCX,18

MOVA摯,

CLD

MOVDI,SEGSTRING

MOVES,DI

LEADI,STRING

REPNESCASB

Page11

JNENEXT

DECDI

MOVES:BYTEPTR[DI],4:送空格符

?

NEXT:■?

3.31假設數(shù)據段中數(shù)據定義如下:

STUDENT_NAMEDB30DUP(?)

STUDENT.ADDRDB9DUP(?)

PRINT.LINEDB132DUP(?)

分別編寫下列程序段:

(1)用空格符清除PRINT_LINE域。

(2)在STUDENT_ADDR中查找第一個

(3)在STUDENT_ADDR中查找最后一個=」。

(4)如果STUDENT_NAME域中全是空格符時,填入=*'

(5)把STUDENT_NAME移到PRINT_LINE的前30個字節(jié)中,把STUDENT.ADDR

移到PRINT_LINE

的后9個字節(jié)中。

答:公共的程序段如下:

MOVDLDS

MOVES,DI

(l)MOVCX,132

MOVAL.,6;空格的ASCII碼送AL寄存器

CLD

LEADI,PRINT_LINE

REPSTOSB

(2)MOVCX,9

MOVAL.,「

CLD

LEADI,STUDENT.ADDR

REPNESCASB

JNENO_DASH

DECDI

?

NO.DASH:?

(3)MOVCX,9

MOVAL.,一

STD

LEADI,STUDENT.ADDR

ADDDI,9-1

REPNESCASB

JNENO_DASH

INCDI

NO_DASH:■

(4)MOVCX,30

MOVAL,';空格的ASCII碼送AL寄存器

CLD

LEADI,STUDENT_NAME

REPESCASB

JNENEXT

MOVC

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論