版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年耳機(jī)原材料供應(yīng)商質(zhì)量保證合同
- 2024馬鈴薯種植基地安全生產(chǎn)責(zé)任合同3篇
- 2024年股權(quán)激勵(lì)計(jì)劃書
- 2024年金融科技研發(fā)與創(chuàng)新服務(wù)合同
- 2024跨國(guó)企業(yè)廣告宣傳與推廣合同
- 2024年食品企業(yè)HACCP體系認(rèn)證咨詢合同版B版
- 2024年航空公司客艙餐飲服務(wù)供應(yīng)合同
- 2024輕質(zhì)隔墻板行業(yè)規(guī)范制定與執(zhí)行監(jiān)督協(xié)議3篇
- 2024年藥品銷售與售后服務(wù)協(xié)議3篇
- 2024年適用餐飲行業(yè)購(gòu)銷協(xié)議范例版B版
- 生物醫(yī)學(xué)電子學(xué)智慧樹知到期末考試答案章節(jié)答案2024年天津大學(xué)
- 2023 版《中國(guó)近現(xiàn)代史綱要》 課后習(xí)題答案
- DB11T 489-2024 建筑基坑支護(hù)技術(shù)規(guī)程
- 一例火電機(jī)組有功功率突變?cè)蚍治黾邦A(yù)防措施
- 數(shù)學(xué)寒假計(jì)劃書
- 第五章 中國(guó)特色社會(huì)主義理論體系的形成發(fā)展(一)
- 低空經(jīng)濟(jì)公司設(shè)立可行性分析
- 2024新能源風(fēng)電場(chǎng)集電線路施工方案
- 2023-2024學(xué)年江西省吉安市吉州區(qū)八年級(jí)(上)期末數(shù)學(xué)試卷(含解析)
- 建筑工程周轉(zhuǎn)材料及保證措施
- 鐵路調(diào)車作業(yè)技能培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論