匯編語言課后答案_第1頁
匯編語言課后答案_第2頁
匯編語言課后答案_第3頁
匯編語言課后答案_第4頁
匯編語言課后答案_第5頁
已閱讀5頁,還剩54頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第一或

11(如果十六進制效的最高位是字母(妣XB).剜應(yīng)在箕前制加0(零).如本墨(3))

(1)569D-101110001B-171H

(2)1000CD-1001110001000CB-2"10H

(3)4O95D-111111111111B-CFFFH

(4)52767D-1111111Hll1111B-TTFH

12

(1)101101B-Z)H-45D

(2)100000CXB-9CH-E8D

(3)11111111nil1111B-CHTFHM65535D

(4>11111111B-0FFH-255D

13

(1)CF.AH-11111O1CB-25OD

(2)31^1011011B-91D

(3)CFFFEH-111111111111m(E=65539

(4)12MH-1001000110100B-466CD

14

(D3AHYB計0F1H

(2)1234H-0.4FH-12E3H

(3)OABCEH-CFET^OAACFH

(5)7ABX6FH-35325H

15

(1)(-85D-:6I>10101011B-010011(XB-11110111B-CF-H

(2)85D-(-%DA01010101B-10110100B-00001001B-09H

(3)85D-761Aoi010101B-1011OMMB-OOOO1001B?09H

(4)85D-(--6D>01010101B-0100110CB-10100001B-0A1H

(5)(-85D)-^6D-1010101CB-10110100B?01011111B-5FH

(6)-85I>-(^6D>?10101011B-01001100B=llll011IB-0FTI

16

(1)CD8H

之果E校萼作臂三號政,則它表示一401>之其它衩舂任天號號數(shù).Mt216D.

(2)CFFH

之果E被詈住普與號致.別它表示一1D:力果它衩著作無左號數(shù).則它255D.

1.7

(1)-ffH.皿O'

(2)2BH,43D,

(3)硝115D,

(4)59H89D,'f

1.8

(1)For?a?ple,

46H6FH^H2CH65H^SH61H6DH'CH6cH65H2cH

(2)Ihuaaitrbir3692.

54H68H69H73H20H69H73H2cH61H20H6EH_5H6EH62H65H二H20H33H36H

39H32H2EH

第二B

2.1

256個

22

E5HOOOBOH

1EH000B1H

OOOB2H

3cHOOOB3H

2AH000B4H

3CO22H旬30024H字節(jié)單元的內(nèi)容分制為

C30022H?=CABH

C30024H?=CEFH

3OQ21H和30022H字單元的力容分制為

C30021H)=CAB34H

30022H?=0CD.4BH

邏輯拄址為3017:0O0A的存惚單元的打理地址為3017AH.

邏行運址為3015002A的¥惚單元的把建基址為3017AH.

邏篁叁址為30】。如1A的考情軍元的物理姓址為3017AH.

0AAA4CH

2.6

10EWH::*BU叁:

10F40H

2OE40H:“KklC〉

20F40H

21F00H(54K3)

31F00H

31FF0H(*K代三)

41FF0H

OF=0:SF=O:ZF=O:CF=C

AX,BX,CX,DX,SLDI

CX

(3)^BXCXDXSLDI

(4)CS:DS:SS:ES

(5)FLAGS

(6)cs;n>

(7)SS:SPBP

2.S

指示壽堵賽地址的寄存葵之下所示

S-;假參

CSIP

SSSRBP

DSBXDLSI

ESDI

2.9

1<M)2(C)3.(D)4.?)5(A)64L)?<K)84J)

9XF)10(H)11(G)12?13.(D1440)15.(N)

IBM-PC匯編語言程序設(shè)計(第二版)課后習(xí)題答案(清華大學(xué)出版社)(沈美

明,溫冬蟬著)

第3章答案

IBM-PC匯編語言程序設(shè)計(第二版)課后習(xí)題答案(清華大學(xué)出版社)(沈美

明,溫冬蟬著)第三章答案1-

lo

?立?

1)即址

沒有

(2)直接尋址

7237H

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

(4)使用BX的間接尋址

637DH

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

0D5F0H

(6)基址變址尋址

8E18H

(7)相對基址變址

004FH

2O根據(jù)下列要求,寫出相應(yīng)的匯編指令。

(1)ADDDX,BX

(2)ADDAL,fBX][SI]

(3)ADDrBX][0B2H],CX

(4)MOVAX,2A59HADD[0524H],AX

(5)ADDAL,0B5H

3o

(1)寄存器間接尋址

MOVBX,OFFSET[BLOCK][OAH]

MOVDX,[BX]

(2)寄存器相對尋址

MOVSI,OAH

MOVDX,[BLOCK][SI]

⑶基址變址尋址

MOVBX,BLOCK

MOVSI,OAH

MOVDX,[BX][SI]

沒人來看,還是要寫??

4?,F(xiàn)有(DS)

=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)

=78H,(21200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,試說明下歹U各條指

令執(zhí)行完后,AX寄存器的內(nèi)容。

(1)MOVAXJ200H

1200H

(2)MOVAX,BX

01OOH

(3)MOVAX,[1200]

4C2AH注意,是字單元??!

(4)MOVAXJBX]

3412H同上

(5)MOV1100[BX]

4C2AH

(6)MOVAX,[BX][SI]

7856H

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

65B7H

5o

(1)7CD9H(2)1200H(3)6319H

6OMOVBX,2000H

LESDI,[BX]

MOVAX,ES:DI

7o轉(zhuǎn)向地址OBJ的值分別為:(1)064DH(2)0691H(3)05E0H

注意有符號數(shù)的符號位一

8o(1)MOVAX,0ABH立即數(shù)尋址

無物理地址

(2)MOVAX,BX寄存器尋址

同上

(3)MOVAXJ100]直接尋址

201OOH

(4)MOVAX,VAL直接尋址

20050H

(5)MOVAX,[BX]寄存器間接尋址

201OOH

(6)MOVAX,ES:[BX]直接尋址

21100H

(7)MOVAX,[BP]寄存器間接尋址

2001OH

(8)MOVAX,[SI]同上

200A0H

(9)MOVAX,[BX+10]寄存器相對尋址

20110H

(10)MOVAX,VAL[BX]同上

20150H

(11)MOVAX,[BX][SI]基址變址尋址

201A0H

(12)MOVAX,VAL[BX][SI]相對基相變址尋址

201F0H

9o

(1)的指令:MOVAX,[BX][0CH]MOV

ZREO,AX

(2)的指令:MOVAX,ARRAY[BX]MOV

ZREO,AX

10oMOVAX,TABLE是把符號地址TABLE里的內(nèi)容送到AX里,指

令執(zhí)行完后,(AX)=1234H

LEAAX,TABLE是把符號地址TABLE的有效地址(這里是

偏移量)送到指定寄存器AX里,指

令執(zhí)行完后,(AX)=0032H

llo執(zhí)行完指令后,(AX)=1EOOH

12oLEAAX,CSTRING

MOVDL,AX

MOVDH,[AX+6]

13。這個,,圖,很麻煩了,所以就不畫了一大家可以看一下課本上P51-P53,

很清楚,看完了這道匙也會了???

140LESBXJ2000]

MOVAX,ES:[BX]

注意:一開始我寫的是:MOVAX,ES:[8000H],后來看到題目里要求寫兩

條指令,所以一條就不行了,就要畫蛇添足???

15運算結(jié)果

SF,ZF,CF,OF各位的值(從左至右依次往下?)

(1)74D4H

0000

(2)A5C1H

1001

(3)4240H

0010

(4)0000H

0110

16o接上表?

(1)5D14

0000

⑵A870

1001

(3)D870

1000

(4)34E4

0010

17o

(l).MOVAX,Z;把Z送到AX

SUBAX,X;Z-X

ADDAX,W;W+(Z-X)

MOVZ,AX;結(jié)果保存在z中

(2).MOVAX,R;R送到AX中

ADDAX,9;R+9

MOVBX,X;X送到BX中

ADDBX,6;X+6

ADDAX,BX;(R+9)+(X+6),結(jié)果保存在AX中

MOVBX,W;W送到BX中

SUBBX,AX;W-(R+9)-(X+6),連續(xù)減去兩個數(shù),相當(dāng)于減去這兩

個數(shù)的和??

MOVZ,BX;最終結(jié)果送到Z中

(3)

MOVAX,W;把W送到AX

IMULX;W*X注意:低十六位保

存在AX里,高十六位保存在DX里

MOVBX,Y;把丫送到BX里

ADDBX,6;Y+6

IDIVBX;(W*X)/(Y+6)注意:商保存

在AX里,余數(shù)保存在DX里

MOVZ,AX;把商送到Z中,

MOVR,DX;把余數(shù)送到R中

(4)

MOVAX,W;把W送到AX中

SUBAX,X;w-x

CWD;把AX中的十六位帶符號數(shù)擴展成為32

位,低十六位保存在AX中,高十六位保

;在口*中

MOVBX,5;把5送到BX中

IDIVBX;(W-X)/5被除數(shù)為32位,除

數(shù)為16位商為16位

IMULY;上一步結(jié)果再乖以Y,積為32位

MOVBX,2;把2送到BX中

IMULBX;上?步乘法所得的積再乘以2,各

為64位

MOVZ,EAX;把結(jié)果中低32位放入Z雙字單元中

MOV[Z+4],EDX;把結(jié)果中高32位放入Z+4雙字單元中

18o

指令本條指令執(zhí)行完后AX的內(nèi)容

執(zhí)行完后CF,SF,ZF的值

MOVAX,1234H1234H

000

MOVCL,41234H

000

ROLAX,CL2341H

100

DECAX2340H

100

MOVCX,42340H

100

MULex8918H

000

INT20H

程序結(jié)束后,(AX)=8918H(DX)=OOOOH

19o

指令執(zhí)行完后AX的內(nèi)容

執(zhí)行完后CF,SF,ZF和OF的值

MOVAX,00

0010

DECAXFFFFH

0100

ADDAX,7FFFH7FFEH

0000

ADDAX,28000H

0101

NOTAX7FFFH

0101

SUBAX,0FFFFH8000H

1101

ADDAX,8000H0000H

1011

SUBAX,1FFFFH

1101

ANDAX,58D1H58D1H

0000

SALAX,1B1A2H

0101

SARAX,1D8D1H

0100

NEGAX272FH

1000

RORAX,19397H

1001

20o

(1)MOVAX,DATAX

ADDDATAY,AX

(2)MOVAX,DATAX

ADDDATAY,AX

MOVAX,[DATAX+2]

ADD[DATAY+2],AX

(3)本書且指令的作用是:BX<一一[DATAX]+[DATAY]+[1](CF的值)

位加法?

(4)MOVAX,DATAX

MULDATAY;結(jié)果的高十六位保存在DX裹,低

十六位保存在AX?

(5)MOVAX,DATAX

MOVDX,[DATAX+2]

MULDWORDDATAY;結(jié)果的高三十二位保存在EDX裹,

低三十二位保存在EAX?

;造凄所用的

DWORD?^一屬性操作符,在第四章曾■阜到??

(6)MOVAX,DATAX

DIV17H;結(jié)果商保存在AL中,

余數(shù)在AH中

(7)MOVAX,DATAX

CDW

DIVDATAY

21oNEGDX

NEGAX

SBBDX,0

22o

MOVAX,A;把曼字房數(shù)的低字放到AX中

MOVDX,[A+2];把曼字?良數(shù)的高字放到DX中

TESTDX,8000H;冽信式曼字房數(shù)的符號虎

JZRIGHT;如果是非負(fù)一,即直接保存

NEGDX;如果是負(fù)矍攵,即求衲

NEGAX

SBBDX,0

RIGHT:MOVB,AX

MOV[B+2],DX

23o每脩指令罩褐軌行完彳爰的結(jié)果依次卷:

(1)9AH(2)61H(3)0FBH(4)1CH(5)0(6)0E3H

24o軌行指令序列彳爰,BX的內(nèi)容卷:0DAH

25o

(1)把53D乘以2的程序:

MOVAX,35H;53D=35H

SHLAX,1

(2)把53除以2的程序:

MOVAX,35H

SHRAX,1

其他的同理一

26o道段程序完成的功能是:把DX:AX中的曼字?jǐn)?shù)獴左移4位(相常於乘以

16D)

27o各修指令覃褐軌行彳爰,DX的值依次卷:

(1)5CH(2)17H(3)05C8H(4)72H(5)2017H(6)0CDH(7)

0172H(8)05CCH

(9)0DCH

28o言亥程序段孰行完彳爰,BX寄存器的內(nèi)容是:C02DH

29o(1)從左到右把CONMAE中的字符串偉送到PRLINE的程序?qū)崿F(xiàn):

LEASLCONAME;把CONAME中第一個字節(jié)的偏移地址送到SI中

LEADLPRLINE;把PRLINE中第一個字節(jié)的偏移地址送到DI

MOVCX,20;把重復(fù)次數(shù)放到ex里

CLD;讓SIDI從低地址指向高地址(即從左到

右傳送)

REPMOVSB;傳送

(2)從右到左把CONMAE中的字符串傳送到PRLINE中的程序?qū)崿F(xiàn):

LEASI,CONAME

LEADLPRLINE

MOVCX,20

STD;和上面唯一不同的就是這次是從右到

左,所以要從高地址批向低地址

REPMOVSB

(3)把CONAME中的第三和第四他|字WT裝入AX的程序^說:

LEASI,[CONAME+3]

LODSW

(4)把AX寄存器的內(nèi)容存入彳他PRLINE+5I鼎始的字前中的程序

LEADI,[PRLINE+5]

STOSW

(5)檢查CONAME字符串中有趣空格字符,如有把它俾送幺合BH寄存器的程

序土拈

LEAD!,CONAME;把CONAME中第一?他字符偏移地

址放入DI中

MOVCX,20;把重^次數(shù)放到CX中

MOVAL,20H;把空格符的ASCII值放入AL

CLD;彳走低到高

REPNESCASB;比敕

MOVBH,[DI-1]R;把檢查到的空格符送到BH中

30o

MOVCX,12H;把重禊次矍攵放到CX中。it裹

用十六誕制表示

MOVSL0;初始化SI

MOVAX,26H;把&字符的ASCII值放入AX

CHECK:CMPAX,STRINGfSI];依次查找

INCSI

LOOPNECHECK;找到了就退出

MOVAX,20H;把空格符的ASCH值勤放

入AX中

MOVSTRING[SI-1],AX;用空格符代替&

31o(1)用空格符清除PRINTLINE域的程序?qū)崿F(xiàn):

MOVAL,20H

LEADI,PRINT_LINE

MOVCX,132

CLD

REPSTOSB

(2)在STUDENT_ADDR中查找第一個‘_'的程序?qū)崿F(xiàn):

MOVAX,2DH;把“一”的

ASCII值放入AX

MOVSL0;初始化

SI

MOVCX,9;把重禊次

數(shù)放入ex中

;依次檢查STUDENT-ADDR中的字符是否卷找到第一個停下來

CHECK:CMPAX,STUDENT_ADDR[SI];

INCSI

LOOPNZCHECK

(3)在STUDENT_ADDR中查找最后一個”—“的程序?qū)崿F(xiàn):

;和第二題不同的就是道次是彳他右到左查前,所以SI的初始化卷9

MOVAX,2DH

MOVSI,9

MOVCX,9

CHECK:CMPAX,STUDENT_ADDR[SI]

DECSI

LOOPNZCHECK

(4)程序

MOVAL,20H;把空格符的ASCII值放入AL

LEADI,STUDENT_NAME;把STUDENT_NAME中第一個字符偏

移地址放到DI中

MOVCX,30;把重復(fù)次數(shù)放到CX中

CLD:讓DI從低位移到高位

REPZSCASB;如果有不是空格符的,就退出

JZSTORE:如果全是空格符,就轉(zhuǎn)到

STORE中

;用*代替空格

STORE:MOVAL2AH

MOVCX,30

STD;注意,這里是把前面從低到高移動

的DI再從高到低移上去~~

REPSTOSB

⑸程序?qū)崿F(xiàn):

;把STUDENT_NAME移到PRINTJJNE的前30個字節(jié)中

LEASLSTUDENT_NAME

LEADLPRINT_LINE

MOVCX,30

CLD

REPMOVSB

;把STUDENT_ADDR移至PRINT_LINE的后9個字節(jié)中

LEASI,[STUDENT.ADDR+9]

LEADL[PRINT_LINE+132]

MOVCX,9

STD

REPMOVSB

32o程序?qū)崿F(xiàn):

ooo

LEASLOLDS

LEADLNEWS

MOVCX,5

REPZCMPSB

JNZNEW_LESS

ooo

33o

(1)CMPDX,CX

JAEXCEED

(2)CMPBX,AX

JGEXCEED

(3)CMPCX,0

JZZERO

(4)CMPBX,AX

JOOVERFLOW

(5)CMPBX,AX

JLEEQ_SMA

(6)CMPDX,CX

JBEEQ_CX

34o(1)跳轉(zhuǎn)到:LI

(2)跳轉(zhuǎn)到LI

(3)跳轉(zhuǎn)到L2

(4)跳轉(zhuǎn)到L5

(5)跳轉(zhuǎn)到L5

35o

(1)可以引起轉(zhuǎn)移到LI的指令有:NB,BE,NL,LE

(2)可以引起轉(zhuǎn)移到L1的指令有:同上

(3)可以引起轉(zhuǎn)移到L1的指令有:B,BE,L,LE

(4)可以引起轉(zhuǎn)移到L1的指令有:NB,NBE,NL,NLE

(5)可以引起轉(zhuǎn)移到L1的指令有:同上

(6)可以引起轉(zhuǎn)移到L1的指令有:同(3)

(7)可以引起轉(zhuǎn)移到L1的指令有:同上

36o

370程序流程圖就不畫了,呵呵,程序如下~~

MOVAL,STAUS[SI];把要測試的字節(jié)放到AL中

ANDAL,2AH;把第一,三,五位為一其他位為0

的數(shù)-2AH,與這個字節(jié)比較,結(jié)果

;放到AL中

JZROUTINE_4;如果結(jié)果為0,則三位都為0

XORAL,2AH;前面相與的結(jié)果再與2AH異或

JZROUTINE_1;如果結(jié)果為0,則三位都為1

BSFBL,AL

BSRBL,AL

CMPBL,CL

;如果向前和向后測試后,第一個1的位置相同,說明只有…個1,則異或運算

前有AL中有兩個1

JEROUTINE2

ROUTINE.1

注:本題還有其他解法,請大家自己試試??

38o(1)當(dāng)括號內(nèi)是:LOOP時,循環(huán)四次,程序結(jié)束后

(AX)=05(BX)=16(CX)=0(DX)=0

(2)當(dāng)括號內(nèi)是:LOOPE時,不循環(huán),程序結(jié)束后

(AX)=02(BX)=04(CX)=03(DX)=02

(3)當(dāng)括號內(nèi)是:LOOPNE時:循環(huán)三次,程序結(jié)束后

(AX)=04(BX)=11(CX)=01(DX)=0

類別:ibm-pc匯編語言程序設(shè)計(第二版)課后習(xí)題答案I評論(7)I瀏覽(5855)

IBM-PC匯編語言程序設(shè)計(第二版)課后習(xí)題答案(清華大學(xué)出版社)(沈美

明,溫冬蟬著)第三章答案39—522006-11-0223:02

39o圖,就不畫了,呵呵??自己看一下課本,P101—

40.o(1)00003100H(2)5100H(3)7100H

41o(1)目的地址:2004H內(nèi)容依次為:56HF4H23H98H

(2)目的地址:384CH內(nèi)容依次為:91H34HF2H01H

(3)目的地址:寄存器,無物理地址?內(nèi)容依次為:92H6DH

A2H4CH

42o(1)PUSHAX

(SP)<——(SP)-2

(SP+1)<-一一(AH)(SP)<——(AL)

(2)POPESI

(ESI)<------((ESP)+3,(ESP)+2,(ESP)+1,(ESP))

(ESP)<------(ESP)+4

(3)PUSH[BX]

(SP)<——(SP)-2

(SP+1)<-一一([BX+1])(SP)<——([BX])

(4)PUSHAD

(ESP)<------(EAX)

(ESP-4)<-------(ECX)

(ESP-8)<-------(EDX)

(ESP-12)<-------(EBX)

(ESP-16)<——(ESP);這里指的是指令執(zhí)行前的ESP

(ESP-20)<-------(EBP)

(ESP-24)<-------(ESI)

(ESP-28)<-------(EDI)

(ESP)<-------(ESP)-32

(5)POPDS

(DS)<-―一((SP)+1,(SP))

(SP)<——(SP)+2

(6)PUSH4

(SP)<------(SP)-2

(SP+1)<-——0

(SP)<——4

43。(1)2CEFF93H(2)24B76A0H

(3)9090804H(4)6F13ADH

44o(1)OFFFFFFFCH(2)OFFFFFFF8H

(3)00000007H(4)00000099H

45o(EAX)=0(EBX)=25d

46o(AX)=3d(DX)=7d

47oADDECX,EDX

ADDECX,ESI

MOVEDI,ECX

48oIMULBX,DX,100H執(zhí)行的操作是:

(BX)<------(DX)*100H

49o程序?qū)崿F(xiàn):

MOVAL,BL

CBW

IDIVCL

IMUL2

MOVDX,AX

50o

JMPDI是直接跳轉(zhuǎn),執(zhí)行的操作是:(IP)<--(IP)+(DI)

JMP[DI]是間接跳轉(zhuǎn),執(zhí)行的操作是:(IP)<——(IP)+([DI])跳轉(zhuǎn)到DI中所

指向的內(nèi)存單元中的指令地址?

51o假設(shè)數(shù)組名為NUMBERS,程序如下?

MOVBX,0;后面用到?

MOVCX,100H;把循環(huán)次數(shù)放入CX

MOVAL,42H

MOVSL0;初始化SI

;CHECK用來實現(xiàn)查找功能?

CHECK:CMPAL,NUMBERS[SI]

INCSI

JBSTORE1;大于42H的數(shù)的個數(shù)存入UP

JASTORE2;小于42H的的數(shù)的個數(shù)存入DOWN中?

LOOPCHECK;相等繼續(xù)循環(huán)?

STORE1INCBL;找到一個大于42的數(shù),BL值增加1?

MOVUP,BL

LOOPCHECK

STORE2INCBH

MOVDOWN,BH

LOOPCHECK

52o圖,也不用畫了一呵呵?好了,本章結(jié)束

第4章答案

IBM-PC匯編語言程序設(shè)計(第二版)課后習(xí)題答案(清華大學(xué)出版社)(沈美

明,溫冬蟬著)第四章答案2006-11-0421:591。指令下列指令的錯誤

(1)MOVAH,BX源操作數(shù)與目的操作數(shù)長度不相同?

(2)MOV[BX],[SI]這是兩個內(nèi)存單元在傳遞數(shù)據(jù),而這在匯編語言中

是不允許的---

⑶MOVAX,fSI][DI]不能用兩個變址連用,其中一個應(yīng)為基址?

(4)MOVMYDAT[BX][SI],ES:AX同(2)

(5)MOVBYTEPTR[BX],1000必須有一個為寄存器

(6)MOVBX,OFFSETMYDAT[SI]OFFSET不能與復(fù)雜操作數(shù)相連?

(7)MOVCS,AX不能對CS賦值?

(8)MOVECX,AX操作數(shù)類型不同?

2o(1)合法(2)非法(3)非法(4)非法

3。(1)非法,操作數(shù)類型不同

(2)合法

(3)非法,不允許兩個內(nèi)存單元直接傳遞數(shù)據(jù),你把人家CPU放哪了?

|lnj

(4)合法?

(5)合法?

(6)合法

(7)非法?,必須有一個寄存器一把CPU放哪了???

(8)非法,兩個內(nèi)存單元地址相加沒有意義?

(9)合法

(10)非法,同(3)

4。(1)兩內(nèi)存單元傳遞數(shù)據(jù)

(2)操作數(shù)類型不同

(3)跳轉(zhuǎn)指令只能跳轉(zhuǎn)到符號地址

(4)轉(zhuǎn)移指令后不能為變量,只能為標(biāo)號

(5)格式不對,應(yīng)為NEARPTR…

5o圖,就不畫了??

6O(1)DW5150H

(2)MOVAX,5150H

MOVADDRESS,AX

等,寫出幾個就可以??

7ODATASGSEGMENT

FLD1BDB'personalcomputer'

FLD2BDB10DUP(32)

FLD3BDB20H

FLD4BDB01011001B

FLD5BDB,32654,

FLD6BDB10DUP(0)

FLD7BDBPART1',DUP20(?),'PART2',DUP50(?);PART3',DUP14⑺

FLD1WDWOFFFOH

FLD2WDW01011001B

FLD3WDWFLD7B

FLD4WDW5,6,7,8,9

FLD5WDW5DUP(0)

FLD6WDW(FLD6W-FLD1W)-(FLD7B-FLD1B)

8OPLENTH的值為22,GE表示該數(shù)據(jù)段的長度?

9oL的值為7

10o(1)MOVAX,OFFSETLNAME

(2)MOVSI,WORDPTRCODE_LIST

(3)CODE_LENGHTEQU$-CODE_LIST

Ho代碼如下:

DATA_SEGSEGMENT

DB5

DATA_LISTDW0FFFFH,0,2,5,4,5DUP(?)

DATA_SEGENDS

CODE_SEGSEGMENT

ASSUMECS:CODE_SEG,DS:DATA_SEG

MOVAX,5

MOVMAX,AX

MOVAX,0FFFFH

MOVMIN,AX

CODE_SEGENDS

12o(1)10025

(2)19

(3)2548

(4)3

(5)103

(6)OFFFFH

(7)1

(8)3

13o分別匯編成為:

MOVAX,OAH

MOVBL,OAH

MOVCL,1

14o(1)(AX)=1(2)(AX)=2(3)(CX)=14H(4)(DX)=32H

(5)(CX)=1]

15o(1)操作符錯誤改為:DATA_SEGSEGMENT

⑵缺少段名在前面加個段名

(3)引用應(yīng)該從;開始把那個“/”改成“;”

(4)結(jié)構(gòu)混亂改為:

MAIN_PROCPROCFAR

MAIN_PROCENDP

END

16o程序框架如下:

DATA_SEGSEGMENT;定羲數(shù)撼段

ORG0E000H;ai下一字

fi地址卷0E000H

FIRST_TYPEEQUTHISWORD;建立一他輿下一存儲罩元有相同

段地址和偏移地址的操作數(shù)

DATA_GROUPDB100DUP(?);品合DATA_GROUP分配100

他I字箭的空^

DATA_SEGENDS;數(shù)獴段結(jié)束

STACK_SEGSEGMENT;定羲堆梭段

ALIGN16;下

一字^彳儉小段首地址^始

STACKDB100DUP(?);卷堆慢分配空IW

STACK_SEGENDS

CODE_SEGSEGMENT

ASSUMECS:CODE_SEG,DS:DATA_SEG,SS:STACK__SEG

ORG1000H;下

僚指令的第一他1字筋淡1000H1荊始

START:MOVAX,DATA_SEG

MOVDS,AX

MOVAX,STACK_SEG

MOVSS,AX

CODE_SEGENDS

ENDSTART;幺吉束?

17o程序如下:

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

AUGENDDD99251

D_SEGENDS

E_SEGSEGMENT;附加段定義

ADDENDDD-15926

E_SEGENDS

C_SEGSEGMENT;代碼段定義

ASSUMECS:C_SEG,DS:D_SEG,ES:E_SEG

START:MOVAX,D_SEG

MOVDS,AX

MOVAX,E_SEG

MOVES,AX

MOVEAX,DS:AUGEND

ADDEAX,ES:ADDEND

MOVDS:SUM,EAX

C_SEGENDS

ENDSTART;結(jié)束

18o

19o需要加上PTR偽操作的有:(2)(3)(4)

第5章答案

IBM-PC匯編語言程序設(shè)計(第二版)課后習(xí)題答案(清華大學(xué)出版社)(沈美

明,溫冬蟬著)第五章答案

這當(dāng)然不是標(biāo)準(zhǔn)答案,希望對大家有用處。

5.1試編寫?個匯編語言程序,要求對鍵盤輸入的小寫字母用大寫字母顯示出來

.modelsmall

.stack100H

.code

mainprocfar

Start:

pushdx

movax,0

pushax

movah,01H

int21H

cmpal,61H

jllopl

cmpal,7BH

jgelopl

subal,20H

movdl,al

lopl:movah,2

int21H

ret

Endstart

5.2編寫一個程序,從鍵盤接受一個小寫字母,然后找出它的前導(dǎo)字符和后續(xù)字

符,再按順序顯示這三個字符.

.modelsmall

.386

.code

MAINPROCFAR

start:

pushds

subax,ax

pushax

input:

movah,7H

int21H

cmpe:

cmpal,20H

JEexit

cmpal,61H

JLinput

cmpal,7AH

JGinput

print:

subal,01H

movdl,al

movah,02H

int21H

addal,01H

movdl,al

movah,02H

int21H

addal,01H

movdl,al

movah,02H

int21H

;輸出換行回車

movdl,OAH

movah,02H

int21H

jmpinput

exit:

ret

MAINENDP

ENDstart

5.3將AX寄存器中的16位數(shù)分成4組,每組4位,然后把這四組數(shù)分別放在

AL、BL、CL、DL中。

.modelsmall

.data

xDB4dup(?)

.stack100H

.code

MAINPROCFAR

start:

pushds

andax,OOH

pushax

movax,1234H

movcx,04H

movsi,OOH

lop:

pushex

movcl,04H

rolax,cl

pushax

andal,0FH

movBYTEPTRx[si],al

popax

popex

addsi,2

Looplop

moval,[X]

movblJX+21

movcl,[X+4]

movdl,[X+6]

print:

movah,02H

int21H

movdl,al

movah,02H

int21H

movdl,bl

movah,02H

int21H

movdl,cl

movah,02H

int21H

exit:

ret

MAINENDP

ENDstart

5.4編寫一個程序,要求比較兩個字符串STRING1和STRING2所含字符是否相

同,若相同則顯示"MATCH",若不同在顯示:"NOMATCH"。

.modelsmall

.data

STRING1DB'Imuststudyhard'

STRING2DB'Imuststudyhard'

XDB'MATCH.$'

YDBNOMATCH.$'

.stack100H

.code

mainprocfar

Start:

pushdx

movax,0

pushax

movax,@data

movds,ax

moves,ax

leasi,STRING1

leadi,STRING2

cld

movcx,(string2-stringl)/typeSTRING2

ret

Endstart

5.5編寫??個程序,要求能從鍵盤接收一個個位數(shù)N,然后響鈴N次,(響鈴的

ASCII為07)。

這題比較有意思,呵呵。

modelsmall

.code

mainprocfar

start:

pushds

subax,ax

pushax

input:

movah,01H

int21H

cmpal,20H

jeexit

cmpal,30H

jleinput

cmpal,3AH

jgeinput

subal,30H

movex,ax

andcx,OFFH

lop:

movdl,07H

movah,2H

int21H

looplop

jmpinput

exit:

ret

mainendp

endstart

5.6編寫程序,將一個包含有20個數(shù)據(jù)的數(shù)組M分成兩個數(shù)組:正數(shù)數(shù)組和負(fù)

數(shù)數(shù)組N,并分別把這兩個數(shù)組中的數(shù)據(jù)個數(shù)顯示出來。

.modelsmall

.386

.data

MDB1,2,3,4,5,6,7,8,9,10,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10

PDB20dup(?)

NDB20dup(?)

.code

MAINPROCFAR

start:

PUSHds

ANDax,0

PUSHax

MOVax,@data

movds,ax

MOVbx,0

MOVsi,0

MOVdi,0

MOVcx,20D

cmpe:

CMPM[bx],0

JLifLow

hight:

MOVal,byteptrM[bx]

MOVbyteptrP[si],al

incsi

JMPcommonContrl

ifLow:

MOVal,byteptrM[bx]

MOVbyteptrN[di],al

INCdi

commonContrl:

INCbx

loopcmpe

movax,si

callshowNumber

callprintCR

movax,di

callshowNumber

exit:ret

MAINENDP

;;;;;;;;;;;;;;;;;注意,ShowNumber這個子過程有問題,請自行修改

showNumberPROCNEAR

covernum:

DAA

MOVdx,ax

MOVcl,2H

show:

ROLdl,4H

pushdx

ANDdl,OfH

ADDdl,30H

MOVah,02H

int21H

popdx

loopshow

ret

showNumberENDP

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

printCRPROCNEAR

movdl,0aH

movah,02H

int21H

movdl,0dH

movah,02H

int21H

ret

printCRENDP

endstart

5.7編制一個匯編語言程序,求出首地址為DATA的100D字?jǐn)?shù)組中的最小偶數(shù),

并把它放在AX中。

此題根據(jù)題意要求應(yīng)該使用完整匯編格式,因為精簡格式也使用DATA....

dataaresegment

溫馨提示

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

最新文檔

評論

0/150

提交評論