《匯編語(yǔ)言程序設(shè)計(jì)》習(xí)題解答及課程實(shí)驗(yàn)、設(shè)計(jì)輔導(dǎo)_第1頁(yè)
《匯編語(yǔ)言程序設(shè)計(jì)》習(xí)題解答及課程實(shí)驗(yàn)、設(shè)計(jì)輔導(dǎo)_第2頁(yè)
《匯編語(yǔ)言程序設(shè)計(jì)》習(xí)題解答及課程實(shí)驗(yàn)、設(shè)計(jì)輔導(dǎo)_第3頁(yè)
《匯編語(yǔ)言程序設(shè)計(jì)》習(xí)題解答及課程實(shí)驗(yàn)、設(shè)計(jì)輔導(dǎo)_第4頁(yè)
《匯編語(yǔ)言程序設(shè)計(jì)》習(xí)題解答及課程實(shí)驗(yàn)、設(shè)計(jì)輔導(dǎo)_第5頁(yè)
已閱讀5頁(yè),還剩179頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

普通高等教育“十一五”規(guī)劃教材

《匯編語(yǔ)言程序設(shè)計(jì)》

習(xí)題解答及課程實(shí)驗(yàn)、設(shè)計(jì)輔導(dǎo)

詹仕華主編

張旭玲李應(yīng)興副主編

中國(guó)電力出版社

普通高等教育“十一五”規(guī)劃教材

《匯編語(yǔ)言程序設(shè)計(jì)》

習(xí)題解答及課程實(shí)驗(yàn)、設(shè)計(jì)輔導(dǎo)

詹仕華主編

張旭玲李應(yīng)興副主編

中國(guó)電力出版社

內(nèi)容提要

本書是中國(guó)電力出版社出版的《匯編語(yǔ)言程序設(shè)計(jì)》(詹仕華主編)一書的配套教材。

共分為4個(gè)部分,內(nèi)容包括:《匯編語(yǔ)言程序設(shè)計(jì)》習(xí)題解答,給出了《匯編語(yǔ)言程序設(shè)

計(jì)》教材中的各章習(xí)題的解答;課程實(shí)驗(yàn)輔導(dǎo),給出實(shí)驗(yàn)環(huán)境及上機(jī)實(shí)驗(yàn)的方法及課程實(shí)

驗(yàn)所要求的6個(gè)實(shí)驗(yàn)的實(shí)驗(yàn)?zāi)康摹?shí)驗(yàn)內(nèi)容和部分實(shí)驗(yàn)參考程序;課程設(shè)計(jì)輔導(dǎo),給出2

個(gè)課程設(shè)計(jì)的綜合實(shí)例;模擬試卷,給出3份模擬試卷及其參考答案。

本書可以作為普通高等教育計(jì)算機(jī)科學(xué)與技術(shù)及其相關(guān)專業(yè)的匯編語(yǔ)言程序設(shè)計(jì)課

程的配套教材,也可作為自學(xué)匯編語(yǔ)言程序設(shè)計(jì)課程的讀者使用,還可作為相關(guān)技術(shù)人員

參用書。

目錄

第1篇習(xí)題解答.............................................................1

第1章計(jì)算機(jī)基礎(chǔ)知識(shí)....................................................1

第2章8086系統(tǒng)結(jié)構(gòu).....................................................5

第3章8086指令系統(tǒng).....................................................8

第4章8086匯編語(yǔ)言.....................................................14

第5章基本程序設(shè)計(jì).....................................................22

第6章算術(shù)運(yùn)算程序設(shè)計(jì).................................................51

第7章非數(shù)值處理程序設(shè)計(jì)..............................................59

第8章輸入、輸出和中斷程序設(shè)計(jì)........................................74

第2篇課程實(shí)驗(yàn)輔導(dǎo)..........................................................83

第1章概述..............................................................83

第2章上機(jī)實(shí)驗(yàn)..........................................................84

實(shí)驗(yàn)一匯編程序的匯編及運(yùn)行........................................84

實(shí)驗(yàn)二順序程序設(shè)計(jì).................................................87

實(shí)驗(yàn)三分支循環(huán)程序設(shè)計(jì)............................................90

實(shí)驗(yàn)四子程序設(shè)計(jì)...................................................93

實(shí)驗(yàn)五DOS功能調(diào)用................................................97

實(shí)驗(yàn)六字符處理程序設(shè)計(jì)............................................100

第3篇課程設(shè)計(jì)輔導(dǎo).........................................................102

第1章實(shí)例1動(dòng)畫設(shè)計(jì)《甜蜜的生活》...................................102

第2章實(shí)例2動(dòng)畫設(shè)計(jì)“我愛大自然”......................................127

第4篇模擬試卷.............................................................149

試卷一...................................................................149

試卷二...................................................................155

試卷三...................................................................160

試卷一參考答案...........................................................168

試卷二參考答案...........................................................173

試卷三參考答案...........................................................177

參考文獻(xiàn).....................................................................180

第1篇習(xí)題解答

第I章計(jì)算機(jī)基礎(chǔ)知識(shí)

1.1簡(jiǎn)述計(jì)算機(jī)系統(tǒng)的構(gòu)成。

答:計(jì)算機(jī)系統(tǒng)分為硬件系統(tǒng)和軟件系統(tǒng)兩大部分。硬件系統(tǒng)包括:運(yùn)算器、控制器、

存儲(chǔ)器、輸入設(shè)備、輸出設(shè)備五個(gè)主要組成部分;軟件系統(tǒng)又分為系統(tǒng)軟件和應(yīng)用軟件。

二者缺一不可。

1.2試述匯編語(yǔ)言的特點(diǎn)。

答:41》匯編語(yǔ)言與處理器密切相關(guān)。每種處理器都有自己的指令系統(tǒng),相應(yīng)的匯編

語(yǔ)言也各不相同。所以,匯編語(yǔ)言程序的通用性、可移植性較差。

<2>匯編語(yǔ)言功能有限,又涉及寄存器、主存單元等硬件細(xì)節(jié),所以編寫程序比較繁

瑣,調(diào)試起來(lái)也比較困難。

匯編語(yǔ)言本質(zhì)上就是機(jī)器語(yǔ)言,它可以直接地、有效地控制計(jì)算機(jī)硬件,因而容

易產(chǎn)生運(yùn)行速度快、指令序列短小的高效率目標(biāo)程序。

<4>匯編語(yǔ)言還有許多實(shí)際應(yīng)用,例如分析具體系統(tǒng)尤其是該系統(tǒng)的底層軟件、加密

解密軟件、分析和防治計(jì)算機(jī)病毒等。

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

<1)369(2)10000025514)128

答:對(duì)應(yīng)的二進(jìn)制數(shù)和為十六進(jìn)制數(shù)為:

<l>369D=101110001B=171H

<2>10000D=10011100010000B=2710H

(3)128255D=11111111B=0FFH

<4)128D=10000000B=80H

1.4將下列二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)和十進(jìn)制數(shù)。

<1>1O11O1B<2)1000100IBOlllllOOlB<4)11001111B

1

答:對(duì)應(yīng)的十六進(jìn)制數(shù)和十進(jìn)制數(shù)為:

<1>101101B=2DH=45D

<2>10001001B=89H=137D

<3>11111001B=OF9H=249D

44)11001111B=OCFH=2O7D

1.5將下列十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)和十進(jìn)制數(shù)。

IDOFAH<2>5BH<3>8FH<4>1234H

答:對(duì)應(yīng)的二進(jìn)制數(shù)和十進(jìn)制數(shù)為:

<1>0FAH=l1111010B=250D

<2>5BH=101,1011=91D

<3>8FH=1000,l111B=143D

<4>1234H=1,0010,0011,0100B=4660D

1.6試分別判斷下列各組數(shù)據(jù)中哪個(gè)數(shù)據(jù)最大?哪個(gè)最小?

<l>A=0.101BB=0.101DC=0.101H

<2>A=1011BB=10UDC=1011H

解:<1>將A、B、C均轉(zhuǎn)換為十進(jìn)制數(shù),則有:

A=0.101B=lx2-1+lX2'3=0.5+0.125=0.625D

B=0.101D

C=0.101H=lxl6'+lx16-3=0.0625+0.0002=0.0627D

由此可得A最大C最小。

12)將A、B、C均轉(zhuǎn)換為十進(jìn)制數(shù),則有:

A=1011B=1X23+1X21+1=8+2+1=11D

B=1011D

C=1011H=1X163+1X16+1=4096+16+1=4113D

由此可得C最大A最小。

1.7將下列十進(jìn)制數(shù)轉(zhuǎn)換為BCD碼。

<1)1212)68<3)12744>255<5)1234

解:<1><12)D=00010010)BCD

<2><68)D=*)1101000)BCD

G><127>D=<000100100111>BCD

2

<4><255>D=<001001010101>BCD

■>”234>D=<0001001000110100>BCD

1.8下列各數(shù)為用表示的8位二進(jìn)制數(shù),它們所表示的十進(jìn)制數(shù)及被看作字符的ASCH

碼時(shí)的字符是什么?

<1>4FH<2>2BH<3>73H<4)59H

解:十六進(jìn)制數(shù)4FH,表示的十進(jìn)制數(shù)為79,表示字符時(shí)為“O”。

<2>十六進(jìn)制數(shù)2BH,表示的十進(jìn)制數(shù)為43,表示字符時(shí)為“十”。

<3>十六進(jìn)制數(shù)73H,表示的十進(jìn)制數(shù)為115,表示字符時(shí)為“s”。

<4>十六進(jìn)制數(shù)59H,表示的十進(jìn)制數(shù)為89,表示字符時(shí)為“Y”。

1.9下列各數(shù)為十六進(jìn)制表示的8位二進(jìn)制數(shù),說(shuō)明當(dāng)它們分別被看作是無(wú)符號(hào)數(shù)或

用補(bǔ)碼表示的帶符號(hào)數(shù)時(shí),所表示的十進(jìn)制數(shù)是什么?

1DD8H<2)FFH

解:U>由于D8H=110由000B,所以

當(dāng)其為用補(bǔ)碼表示的帶符號(hào)數(shù)時(shí),表示的十進(jìn)制數(shù)是一40D。

當(dāng)其為無(wú)符號(hào)數(shù)時(shí),表示的十進(jìn)制數(shù)是216D。

<2>由于FFH=11111111B,所以

當(dāng)其為用補(bǔ)碼表示的帶符號(hào)數(shù)時(shí),表示的十進(jìn)制數(shù)是TD。

當(dāng)其為無(wú)符號(hào)數(shù)時(shí),表示的十進(jìn)制數(shù)是255D。

1.10現(xiàn)有一個(gè)二進(jìn)制數(shù)10110110,若將該數(shù)分別看作是無(wú)符號(hào)數(shù),原碼表示的帶符

號(hào)數(shù),補(bǔ)碼表示的帶符號(hào)數(shù),它對(duì)應(yīng)的十進(jìn)制數(shù)的真值分別是多少?

解:當(dāng)二進(jìn)制數(shù)10110110,被看作是無(wú)符號(hào)數(shù)時(shí),對(duì)應(yīng)的十進(jìn)制真值是182D:

被看作是原碼表示的帶符號(hào)數(shù)時(shí),對(duì)應(yīng)的十進(jìn)制真值是-54D;

被看作是補(bǔ)碼表示的帶符號(hào)數(shù)時(shí),對(duì)應(yīng)的十進(jìn)制真值是一74D。

1.11計(jì)算機(jī)中有一個(gè)“01100001”編碼,如果把它認(rèn)為是無(wú)符號(hào)數(shù),它是十進(jìn)制的什

么數(shù)?如果認(rèn)為它是BCD碼,則表示什么數(shù)?又如果它是某個(gè)ASCII碼,則代表哪個(gè)字

符?

解:如果“01100001”是無(wú)符號(hào)數(shù),它代表十進(jìn)制數(shù)97;如果認(rèn)為是BCD碼,表示

十進(jìn)制數(shù)61;如果認(rèn)為是ASCII碼,代表字符“a”。

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

表示其結(jié)果。

3

ll>(-85)+76<2>85+(-76)<3>85-76(4)85?176>

解:<1>表示:10101011+01001100結(jié)果:OFBHo

<2>表示:01010101+10110100結(jié)果:9Ho

<3>表示:01010101—01001100結(jié)果:9Ho

(4)表示:01010101—10110100結(jié)果:OAlHo

1.13完成下列二進(jìn)制數(shù)的運(yùn)算。

G)10111000/1001(2〉1011A1001C)1011V1001(4)lOllffilOOl

解:<1>10100(余數(shù):100)12)1001<3>1011(4)0010

4

第2章g系統(tǒng)結(jié)構(gòu)

2.18086微處理器由哪幾部分組成?各部分的功能是什么?

答:8086微處理器由兩大功能部件組成,即由總線接口單元BIU和指令執(zhí)行單元EU

組成。EU負(fù)責(zé)指令的執(zhí)行,BIU用于實(shí)現(xiàn)EU的所有總線操作。

2.2簡(jiǎn)述8086CPU的寄存器組織。

答:8086CPU內(nèi)部共有14個(gè)16位寄存器:其中AX、BX、CX和DX為數(shù)據(jù)寄存器,

它們又可以作為8個(gè)獨(dú)立的8位寄存器使用,即分為AH、AL、BH、BL、CH、CL、DII

和DL等8個(gè)8位的寄存器;兩個(gè)16位的指針寄存器BP和SP,兩個(gè)16位的變址寄存器

SI和DL兩個(gè)控制寄存器IP及F,IP為指令指針寄存器,F(xiàn)為標(biāo)志寄存器,另外還有4

個(gè)段寄存器CS、DS、ES和SS。

2.3試述8086CPU標(biāo)志寄存器各位的含義。

答:OF:溢出標(biāo)志,SF:符號(hào)標(biāo)志,ZF:零標(biāo)志,CF:進(jìn)位標(biāo)志,AF:輔助進(jìn)位標(biāo)

志,PF:奇偶標(biāo)志,DF:方向標(biāo)志,TF:陷阱標(biāo)志,IF:中斷標(biāo)志。

2.48086中,存儲(chǔ)器為什么采用分段管理?

答:8086中,由于存儲(chǔ)器的地址線為20根,可尋址的地址空間為1M,而寄存器均

為16位的,可尋址的地址空間為64K,為了使16位的寄存器可以訪問(wèn)20位的存儲(chǔ)器空

間,知必須將存儲(chǔ)器分段。每一段的大小為64K,但對(duì)段的起始地址有所限制,段不能起

始于任意地址,而必須從任一小段(機(jī)器規(guī)定:從0地址開始,每16個(gè)字節(jié)為一小段)

的首地址開始。

2.5下列操作可使用哪些寄存器?

(1)存放各種運(yùn)算操作的數(shù)據(jù)。

(2)存放數(shù)據(jù)串操作時(shí)的計(jì)數(shù)值。

(3)查看程序已執(zhí)行到哪條指令的地址。

(4)查看堆棧中當(dāng)前正要進(jìn)行入出棧的存儲(chǔ)單元的地址。

(5)查看運(yùn)算結(jié)果是否等于零。

5

(6)查看程序中的數(shù)據(jù)存放段區(qū)是從哪個(gè)地址開始的。

(7)查看程序中的指令存放的段區(qū)是從哪個(gè)地址開始的。

答:(1)通用數(shù)據(jù)寄存器;(2)CX;(3)IP;(4)SP;(5)PSW;(6)DS;(7)CS

2.6段地址和偏移地址為1000:117A的存儲(chǔ)單元的物理地址是什么?而1109:00EA

或1025:0F2A的存儲(chǔ)單元的物理地址又是什么?這個(gè)說(shuō)明了什么問(wèn)題?

解:段地址和偏移地址為1000:117A的存儲(chǔ)單元的物理地址是1117AH。而1109:00EA

或1025:0F2A的存儲(chǔ)單元的物理地址為1117A和1117AH。這說(shuō)明每個(gè)存儲(chǔ)單元只有惟一

的一個(gè)物理地址,但可由不同的段地址和不同的偏移地址組成。

2.7在存儲(chǔ)器中存放的數(shù)據(jù)如圖2.1所示。試讀出55422H和55424H字節(jié)單元的內(nèi)容

是什么?讀出55422H和55424H字單元的內(nèi)容是什么?

存儲(chǔ)器

字節(jié)內(nèi)容地址

12H55420H

34H55421H

56H55422H

78H55423H

9AH55424H

BCH55425H

DEH55426H

??????

圖2.1存儲(chǔ)器中存放的數(shù)據(jù)圖

答:字節(jié)單元(55422H)=56H,(55424H)=9AH

字單元(55422H)=78561-1,(55424H)=0BC9AH

2.8什么叫堆棧?堆棧在程序設(shè)計(jì)中的作用是什么?8086系統(tǒng)的堆棧結(jié)構(gòu)如何?

答:堆棧是指內(nèi)存中開辟一個(gè)專用的數(shù)據(jù)存儲(chǔ)區(qū),它具有“先進(jìn)后出”的存儲(chǔ)特性。

在程序設(shè)計(jì)中主要用來(lái)保護(hù)程序的現(xiàn)場(chǎng)或斷點(diǎn),在子程序調(diào)用和中斷操作中使用。在8086

系統(tǒng)中,堆棧是由高地址向低地址端擴(kuò)展,即入棧時(shí)SP進(jìn)行減2操作。

2.9試述INTR引腳與京TT引腳的功能。

答:INTR可屏蔽中斷請(qǐng)求信號(hào),電平觸發(fā)信號(hào)。在每條指令的最后一個(gè)時(shí)鐘周期時(shí),

8086CPU將采樣該引腳信號(hào),若INTR為高電平,同時(shí)8086CPU的IF(中斷允許標(biāo)志)

6

為“1”,則8086CPU將執(zhí)行一個(gè)中斷響應(yīng)時(shí)序,并且把控制轉(zhuǎn)移到相應(yīng)的中斷服務(wù)程序。

如果IF="O”,則8086不響應(yīng)該中斷請(qǐng)求,繼續(xù)執(zhí)行下一條指令。

INTA為中斷響應(yīng)信號(hào),當(dāng)8086CPU響應(yīng)來(lái)自INTR引腳的可屏蔽中斷請(qǐng)求時(shí),在中斷

響應(yīng)周期內(nèi),INTA變?yōu)榈碗娖健?/p>

7

第3章1?》指令系統(tǒng)

3.1什么叫尋址方式?8086操作數(shù)的尋址方式有哪幾種?

答:操作數(shù)的尋址方式就是尋找操作數(shù)所在地址的方式。8086操作數(shù)的尋址方式有立

即尋址,寄存器尋址,直接尋址,寄存器間接尋址,寄存器相對(duì)尋址,寄存器相對(duì)尋址,

基址變址尋址,相對(duì)基址變址尋址等七種。

3.2段地址、有效地址、物理地址之間的關(guān)系怎樣?

答:物理地址=段地址義16+有效地址

3.3哪些寄存器可用于寄存器間接尋址和寄存器的基址或變址尋址?它們的缺省段寄

存器是什么?

答:BX,SI,DI,SP可用于寄存器間接尋址和寄存器的基址或變址尋址。BX,SL

DI的缺省段寄存器是DS,BP的缺省段寄存器是SS。

3.4給定一個(gè)段地址,僅通過(guò)改變偏移地址來(lái)進(jìn)行尋址,最多可以定位多少內(nèi)存單元?

如果段地址為2000H,CPU的尋址范圍是多少?

答:一個(gè)段地址通過(guò)改變偏移地址可定位64K個(gè)單元。段地址為2000H時(shí),尋址范

圍是20000H-2FFFFH

3.5有一數(shù)據(jù)存放在物理地址為40000H單元中,現(xiàn)給定段地址為SA,若通過(guò)改變偏

移地址尋到此單元,則SA的最大、最小值為多少?

答:SA最大4000H,最小3001H

3.6DS=2000H:ES=2100H;SS=1500H;SI=00A0H;BX=0100H;BP=0010H:VAL

的偏移地址為0050H,寫出以下指令的尋址方式和物理地址:

MOVAX,OABHMOVAX,BXMOVAX,[BX]

MOVAX,[01OOH]MOVAX,VALMOVAX,ES:[BX]

MOVAX,[BP]MOVAX,[SI+10H]MOVAX,VAL[BX]

答:MOVAX,OABH;立即尋址

MOVAX,BX;寄存器尋址

8

MOVAX,[BX];寄存器相對(duì)尋址,PA=201OOH

MOVAX,[01OOH];直接尋址,PA=201OOH

MOVAX,VAL;直接尋址,PA=20050H

MOVAX,ES:fBX];寄存器尋址,PA=21100H

MOVAX,[BP];寄存器尋址,PA=15010H

MOVAX,[SI+10H];寄存器相對(duì)尋址,PA=200B0H

MOVAX,VALfBX];寄存器相對(duì)尋址,PA=20150H

3.7給定BX=683DH,偏移量D=0060H,試確定在以下各種尋址方式下的有效地址

是什么?(1)直接尋址:(2)使用BX的間接尋址;(3)使用BX的寄存器相對(duì)尋址。

答:(1)EA=0060H;(2)EA=683DH;(3)EA=689DH

3.8下列各條代碼指令執(zhí)行后SP,AX,BX寄存器的內(nèi)容為多少?

MOVAX,4000H

MOVSS,AX

MOVSP,0020H

MOVAX,001AH

MOVBX,001BH

PUSHAX

PUSHBX

POPAX

POPBX

答:PUSHAX;AX=001AH,BX=001BH,SP=001EH

PUSHBX;AX=001AH,BX=001BH,SP-001CH

POPAX;AX=001BH,BX=001BH,SP=001EH

POPBX;AX=001BH,BX=001AH,SP=0020H

3.9指出下列指令的錯(cuò)誤。

MOVCX,DLMOVES,DSMOVIRAX

MOV[SP],AXMOVES,1234HMOVAX,BX+DI

MOVAL,300MOV20H,ALXCHG[SI],30H

POPCSXCHG[SI],[DI]PUSHAH

答:MOVCX,DL(寄存器位數(shù)不一致);MOVES,DS(段寄存器之間不能賦

9

值);MOVIP,AX(不能對(duì)IP寄存器賦值);MOV[SP],AX(SP寄存器不能

存放地址);MOVES,1234H(立即數(shù)不能賦值給段寄存器);MOVAX,BX+DI

(基址變址寄存器要加方括號(hào));MOVAL,300(300超過(guò)AL的位數(shù));MOV

20H,AL(目的操作數(shù)不能是立即數(shù));XCHG[SI],30H(兩個(gè)操作數(shù)必須一個(gè)是寄

存器);POPCS(操作數(shù)不可以是CS);XCHG[SI],[DI](兩個(gè)操作數(shù)必須

一個(gè)是寄存器);PUSHAH(操作數(shù)必須是16位)

3.10設(shè)DS=3000H;BX=0200H;SI=0002H,寫出以下各條指令中AX的內(nèi)容,以及

尋址方式。

MOVAX,1200HMOVAX,1100[BX]MOVAX,BX

MOVAX,[1200H]MOVAX,[BX]

答:MOVAX,1200H;立即尋址,AX=1200H

MOVAX,1100[BX];寄存器相對(duì)尋址,AX=[31300H]

MOVAX,BX;寄存器尋址,AX=0200H

MOVAX,[1200H];直接尋址,AX=31200H

MOVAX,[BX];寄存器尋址,AX=30200H

3.11設(shè)物理地址[01000H]=33H,[01001H]=C0H。下列指令執(zhí)行后,寫出物理地址為

01000H?01004H單元的內(nèi)容。(注意:寄存器高位對(duì)應(yīng)高地址)

MOVAX,0100H

MOVDS,AX

MOVBX,0

MOVAX,[BX]

ADDBX,2

MOV[BX],AX

INCBX

MOV[BX],AL

INCBX

MOV[BX],AH

01000H?01004H單元的內(nèi)容為:33,CO,33,33,CO

3.12給出下列指令執(zhí)行后的結(jié)果及狀態(tài)標(biāo)志CF、OF、SF、ZF的狀態(tài)。

MOVAX,1630H

10

ANDAX,AX

ORX,AX

XORAX,AX

NOTAX

TESTAX,8000H

答:AXCFOFSFZF

MOVAX,1630H8130H----

ANDAX,AX0260H1000

ORAX,AX0260H0000

XORAX,AX0000H0001

NOTAX0FFFFH----

TESTAX,0F0F0H0FFFFH0010

3.13寫出完成如下功能的指令。

(1)BX和AX內(nèi)容相加,結(jié)果存入AX。

(2)把AL寄存器的內(nèi)容與數(shù)OAOH相減,結(jié)果存入AL。

(3)用BX寄存器間接尋址方式把存儲(chǔ)器中的一個(gè)字和DX相加,結(jié)果放入DX。

(4)用SI和位移量0020H的寄存器相對(duì)尋址方式把內(nèi)存中的一個(gè)字和AX相加,結(jié)

果存于AX。。

答:(1)MOVAX,BX

(2)SUBAL,OAOH

(3)ADDDX,[BX]

(4)ADDAX,[SI4-20II]

3.14編寫指令序列實(shí)現(xiàn)W=(Y*X)/(Z-8),X,Y,Z均為有符號(hào)字節(jié)數(shù)據(jù)。

答:MOVDL,Z

SUBDL,8

MOVAL,Y

IMULBYTEPTRX

IDIVDL

MOVCL,3

MOVBL,AL

11

SHLAL,CL

SHLBL,1

ADDAL,BL

3.15編寫指令序列實(shí)現(xiàn)2位0?9的ASCII碼轉(zhuǎn)換成與壓縮BCD碼。

答:設(shè)2位ASCII碼存于AH和AL寄存器中,結(jié)果存于AL中。如字符6和7的ASCII

碼3637存于AX中,轉(zhuǎn)換成67存于AL中。

SUBAX,3030H

MOVCL,4

SHLAH,CL

ADDAL,AH

3.16指出下面兒條指令錯(cuò)誤的原因。

ADD[BX],10HINC[BX]CMP[SI],0

MUL8IDIVAX,CLRORAX,4

答:ADD[BX],10H(立即數(shù)與存儲(chǔ)單元相加要指明位數(shù));

INC[BX](內(nèi)存單元要指明位數(shù));

CMP[SI],0(內(nèi)存單元要指明位數(shù));

MUL8(操作數(shù)不可以是立即數(shù));

IDIVAX,CL(AX是隱含寄存器,不能出現(xiàn)在指令中);

RORAX,4(移位指令移位次數(shù)超過(guò)1時(shí)應(yīng)存于CL中)

3.17X,Y為字節(jié)數(shù),X>0時(shí),Y=l;X=0時(shí),Y=0;X<0時(shí),Y=-1,在橫線上填

上滿足上述條件的語(yǔ)句。

MOVAL,X

CMPAL,0

MOVY1

JNEBB

MOVY,0

BB:MOVY,0FFH

12

DONE:

答:JLEAAJMPDONEJMPDONE

3.18如果CX=0,則LOOP指令將執(zhí)行多少次循環(huán)?

答:因?yàn)長(zhǎng)OOP指令是在循環(huán)體之后,先將CX減1再判斷CX是否為0,所以,第

一次判斷時(shí)CX就是一1,即CX=FFFFH,再執(zhí)行FFFFH次時(shí)CX才減為0,所以,一共

執(zhí)行了10000H次。

3.19什么是系統(tǒng)功能調(diào)用?匯編語(yǔ)言中其一般格式是怎樣的?

答:系統(tǒng)功能調(diào)用:一般是指調(diào)用DOS的INT21H提供的子程序。

匯編語(yǔ)言中其一般格式是:INT21H,在這條指令前對(duì)AH及入口參數(shù)賦值。

13

第4章tm匯編語(yǔ)言

4.1匯編語(yǔ)言源程序中,每個(gè)語(yǔ)句由哪四項(xiàng)組成,如語(yǔ)句要完成一定功能,那么該語(yǔ)

句中不可省略的項(xiàng)是什么?

答:匯編語(yǔ)言由標(biāo)號(hào),指令助記符,操作數(shù)和注釋四項(xiàng)組成,其中指令助記符是不可

省略的。

4.2BUFDW20DUP(2DUP(1,2),3,4)語(yǔ)句匯編后,為變量BUF分配的存儲(chǔ)單元字

節(jié)數(shù)是多少?

答:BUF應(yīng)分配:2*20*(2*2+1+1尸240個(gè)存儲(chǔ)單元

4.3DATASEGKIENT

AlDW0011H,2233H,4455H,6677H,7788H

DATAENDS

MOVAX,DS:10004H]

ADDAL,0F0H

ANDAH,OFFH

上述指令序列運(yùn)行后,AX的內(nèi)容是()

答:MOVAX,DS:[0004HJ;AX=4455

ADDAL,0F0H;AL=45H,AH=44H

ANDAH,OFFH;AH=44H

4.4某數(shù)據(jù)段如下:

ORG01001I

DATDW7711H,7722H,7733H,7744H,7755H

ARRDWDAT

問(wèn):ARR的值為多少?把7722H送到AX寄存器指令怎么寫?

答:ARR的值是DAT的偏移地址,為0100H;

把7722H送到AX寄存器指令是:MOVAX,DAT+6

14

4.5下面指令執(zhí)行后,AL中的內(nèi)容是()o

AlDW7890H

BlDB09H

MOVAL,BYTEPTRAl

ADDAL,Bl

答:MOVAL,BYTEPTRAl;AL=90H

ADDAL,Bl;AL=99H

4.6數(shù)據(jù)段如下:

DAIDB34H,78H

DA2DW2345H,8347H

DA3EQU$-DA2

SIIRDAI,1

MOVDX,DA3

MOVCL,TYPEDA2

上述程序段運(yùn)行后,DAI,DX,CL的值

答:DA1=1CHDX=4CL=2

4.7BUF的段地址是2000H,偏移地址為002AH

BUFDW231OH,2250H,01AFH,3409H

BUF1DB10DUP(0)

求下列指令執(zhí)行后寄存器的值:

MOVSI,OFFSETBUF

MOVBX,SEGBUF

MOVDI,TYPEBUF

MOVCX,LENGTHBUF1

MOVDX,SIZEBUF1

MOVAL,BYTEPTRBUF+5

答:SI=002AHBX=2000HDI=2CX=10DX=10AL=01H

4.8指出下列語(yǔ)句的語(yǔ)法錯(cuò)誤

DATASEGMENT

VARIDB0,25,ODH,300

15

VAR2DB12H,A4H,6BH

VAR3DB'ABCDEF'

VAR4DW1234H,5678H

VAR5DW10HDUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DE:DATA

BEINGMOVAX,DATA

MOVDS,AX

LEASI,VAR5

MOVBX,OFFSETVAR2

MOV[SI],OABH

MOVAX,VAR1+2

MOVfBX],[SI]

MOVVAR54-4,VAR4

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

答:DATASEGMENT

VARIDB0,25,ODH,300;300超過(guò)1個(gè)字節(jié)

VAR2DB12H,A4H,6BH;A4H改為0A4H

VAR3DB'ABCDEF'

VAR4DW1234H,5678H

VAR5DW10HDUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DE:DATA:;DE改為DS

BEINGMOVAX,DATA:BEING后要加冒號(hào)

MOVDS,AX

16

LEASI,VAR5

MOVBX,OFFSETVAR2

MOV[SI],0ABH;立即數(shù)送內(nèi)存單元要指明字節(jié)或字

MOVAX,VAR1+2;字節(jié)數(shù)據(jù)不能送字寄存器

MOV[BX],[SI];內(nèi)存單元之間不能傳送數(shù)

MOVVAR5+4,VAR4;內(nèi)存單元之間不能傳送數(shù)

MOVAH,4CH

INT21H

CODEENDS

ENDSTART;應(yīng)與第一條指令的標(biāo)號(hào)對(duì)應(yīng)。改為

;ENDBEING

4.9寫一-數(shù)據(jù)段,把整數(shù)5賦于一個(gè)字節(jié)變量DAT;把一1,0,5,2,4放在字類型

變量LIS開始的5個(gè)單元;把字符串'DATA_987,放在DAT1開始的字節(jié)類型單元;對(duì)DAT2

開始的存儲(chǔ)單元設(shè)置20個(gè)連續(xù)的存儲(chǔ)單元,內(nèi)容不確定。

答:DATASEGMENT

DATDB5

LISDW-1,0,5,2,4

DAT1DB4DATA-987,

DAT2DB20DUP(?)

DATAENDS

4.10數(shù)據(jù)段如下,按要求寫出指令

DATASEGMENT

DAIDB1,2,3,“23'

DA2DW1234H,1234,12H,098II

LEN1EQUDA2-DA1

LEN2EQU$-DAl

BUF1DB100DUP(?)

BUF2DB50DUP(0)

DATAENDS

(1)將DA1的EA送給BX

17

(2)將DA2的第3個(gè)字節(jié)送給CL

(3)將字節(jié)數(shù)據(jù)11H送入BUF1的第10個(gè)單元

(4)LEN1=?LEN2=?

答:(1)LEABX,DAI

(2)MOVCL,BYTEPTRDA2+3

(3)MOVBYTEPTRBUF1+9,11H

(4)LEN1=6LEN2=14

4.11已定義數(shù)據(jù)段:

DATASEGMENT

ORG0213H

DABYDB15H,34H,56H

ADRDWDABY

DATAENDS

下列指令執(zhí)行后寄存器的狀態(tài):

(1)MOVAX,WORDPTRDABY

(2)MOVAX,WORDPTRDABY[l]

(3)MOVAL,BYTEPTRADRI[1]

(4)MOVAX,WORDPTRDABY[2]

答:數(shù)據(jù)段的數(shù)據(jù):15H34H56H13H02H

(1)AX=3415H(2)AX=5634H(3)AL=02(4)AX=1356H

4.12輸入下面的程序,運(yùn)行一遍。這是一個(gè)兩個(gè)數(shù)相加的程序,結(jié)果存放在MSG2

單元中,查看MSG2值為多少?偏移地址為多少?

NAMEEX1

DSEGSEGMENT

MSG1DW7856H,2038H

MSG2DW?

DSEGENDS

CSEGSEGMENT

ASSUMECS:CSEG,DS:DSEG

START:MOVAX,DSEG

18

MOVDS,AX

MOVAX,MSG1

ANDAX,MSG1+2

MOVMSG2,AX

MOVAL,0

MOVAH,4CH

INT21H

CSEGENDS

ENDSTART

答:MSG2值為988EH,偏移地址為0004H

4.13數(shù)據(jù)段如下

DATASEGMENT

ORG20H

NUM1=8

DAIDB'MASM5,

NUM2=NUM1+1OH

DA2DBOAH,ODH

COUNTEQU$-DAl

DATAENDS

END

(1)將上面的指令用EDIT或記事本輸入,保存成DAA.TXT文件。

(2)在DOS狀態(tài)下,MASM目錄下,輸入命令:MASMDAA.TXTo

(3)生成LST文件即可,不必連接和運(yùn)行。

(4)用EDIT查看DAA.LST文件。

(5)查看DAI,DA2的偏移量和COUNT的值為多少?

答:DA1的偏移地址是20H,DA2的偏移地址是25H,COUNT=7(=賦值的變量不

占內(nèi)存空間)

4.14宏定義如下,寫出宏展開:

SETIOMMACROX,Y,Z,L,M,N

MOVX,Y

19

ZL,M

INTN

ENDM

SETIOMAH,0,MOV,AL,3,10H

SETIOMAH,2,ADD,DL,[DI+3],1OH

答:SETIOMAH,0,MOV,AL,3,10H展開:

MOVAH,0

MOVAL,3

INT10H

SETIOMAH,2,ADD,DL,[DR3],10H展開:

MOVAH,2

ADDDL,[DI+3]

INT10H

4.15設(shè)代碼段為CSEG,數(shù)據(jù)段為DSEG,編程完整的程序,W=((X+Y)*8-Z)/2,

其中X,Y,Z為字節(jié)類型無(wú)符號(hào)變量,數(shù)值分別為:34H,45H,56Ho

答:DSEGSEGMENT

XDB34H

YDB45H

ZDB56H

WDB?

DSEGENDS

CSEGSEGMENT

ASSUMECS:CSEG,DS:DSEG

START:MOVAX,DSEG

MOVDS,AX

MOVAL,X

ADDAL,Y

MOVCL,3

SHLAL,CL

SUBAL,Z

20

SHRAL,1

MOVW,AL

MOVAL,0

MOVAH,4CH

INT21H

CSEGENDS

ENDSTART

21

第,章基本程序設(shè)計(jì)

5.1已知兩個(gè)八位無(wú)符號(hào)數(shù)x和y,分別存放在BUF和BUF+1單元中,且x>y。請(qǐng)編

程序計(jì)算x-y,結(jié)果存回BUF單元。

答:此題為兩個(gè)八位無(wú)符號(hào)數(shù)相減,我們可以直接使用減法指令SUB來(lái)實(shí)現(xiàn)。

源程序:

SSEGSEGMENTSTACK"STACK'

STADW100DUP(?)

SSEGENDS

DSEGSEGMENT'DATA'

BUFDB82,60

DSEGENDS

CSEGSEGlvIENT'CODE'

ASSUMECS:CSEQDS:DSEGSS:SSEG

START:MOVAX,DSEG

MOVDS,AX

MOVAL,BUF

SUBAL,BUF+1

MOVBUF,AL

MOVAH,4CH

INT21H

CSEGENDS

ENDSTART

5.2已知DAT單元存有一數(shù)X?,F(xiàn)要求編程將x的低四位變?yōu)?010,最高位D7置為

1,其它三位不變。

答:一般情況下,要改變一個(gè)字或一個(gè)字節(jié)中的某些位,可以利用邏輯運(yùn)算操作來(lái)完

成。本題應(yīng)用兩步來(lái)完成。第一步將X的低四清零,同時(shí)使最高位D7也清零;第二步再

利用邏輯“或”變低四位為1010并同時(shí)使最高位D7為1。

22

程序如下:

MOVAL,DAT;取x

ANDAL,70H;清低四位和D7位

ORAL,8AH;置低四位為1010,D7位為1

MOVDAT,AL;送回DAT單元

5.3DAT單元的內(nèi)容拆成高、低各四位,然后分別存于DAT+1及DAT+2的低四位。

答:此類拆字問(wèn)題一般均采用移位指令。先將DAT單元內(nèi)容取出,屏蔽高四位,送

入DAT+2單元。再將DAT單元內(nèi)容右移四位。即:將高四位移至低四位,高四位補(bǔ)0,

送入DAT+1單元。

程序如下:

MOVAL,DAT

MOVDAT+2,AL

ANDDAT+2,OFH

MOVCL,4

SHRAL,CL

MOVDAT+1,AL

HLT

5.4已知某班學(xué)生的英語(yǔ)成績(jī)按學(xué)號(hào)(從1開始)從小到大的順序排列在TAB表中,

要查的學(xué)生的學(xué)號(hào)放在變量NO中,查表結(jié)果放在變量ENGLISH中。

答:源程序:

STACKSEGMENTSTACK

DB200DUP(0)

STACKENDS

DATASEGMENT

TABDB80,85,86,71,79,96

DB83,56,32,66,78,84

溫馨提示

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

評(píng)論

0/150

提交評(píng)論