微型計算機原理及應(yīng)用習(xí)題集_第1頁
微型計算機原理及應(yīng)用習(xí)題集_第2頁
微型計算機原理及應(yīng)用習(xí)題集_第3頁
微型計算機原理及應(yīng)用習(xí)題集_第4頁
微型計算機原理及應(yīng)用習(xí)題集_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

微型計算機原理及應(yīng)用

習(xí)題集

專業(yè)班級_____________

學(xué)號______________

姓名

目錄

第1章概述..............................................................2

第2章微處理器及其結(jié)構(gòu).................................................4

第3章8086/8088CPU指令系統(tǒng)............................................9

第4章匯編語言程序設(shè)計.................................................17

第5章存儲器系統(tǒng).......................................................28

第6章輸入輸出與中斷技術(shù)..............................................32

第7章微型計算機的接口技術(shù)............................................40

第1章概述

一、填空題

1.運算器和控制器集成在一塊芯片上,被稱作CPU。

2.總線按其功能可分數(shù)據(jù)總線、地址總線和控制總線三種不同類型的總

線。

3.迄今為止電子計算機所共同遵循的工作原理是程序存儲和程序控制的

工作原理。這種原理又稱為馮?諾依曼型原理。

4.寫出下列原碼機器數(shù)的真值;若分別作為反碼和補碼時,其表示的真值又分

別是多少?

(1)(01101110)二進制原碼=(+1101110)二進制更值=(+110)+進制或依

(01101110)_迸制反碼=(+1101110)二進制取值=(+110)十進制典值

(01101110)二進制補碼=(+1101110)二進制其(ft=(+110)十進制其值

(2)(10110101)二進制原碼=(-0110101)-.進制直俯=(-53)十迸制I[俏

(10110101)二進制反碼=(—1001010)二進M真假=(-74)十進制真色

(10110101)二進制補碼=(—1001011)二進制其值=(-75)十進制真值

5.寫出下列二進制數(shù)的原碼、反碼和補碼(設(shè)字長為8位)。

(1)(+1010110)^1^=(01010110)^=(01010110)^=(01010110)補碼

(2)(—101()11())二進限值=(11010110)軻=(1()1()1001)反媽=(10101010)補碼

6.[X]補=78H,則[-X]補=(88)Ho

7.BfelXl=+0010100,Yl=+0100001,X2=(0010100,Y2=(0100001,試計算下

列各式(設(shè)字長為8位)。

(1)[XI+YI]H-[Xih+[Yi]n-00010100十00100001-00110101

(2)[X|-Y2]ib=[Xih+[-Y2]?b=00010100+00100001=00110101

(3)[X2-Y2h=[X2]*+[-Y2hb=11101100+00100001=00001101

(4)[X2+Y2]產(chǎn)值2卜+[Y2R=11101100+11011111=11001011

8.將下列十六進制數(shù)分別轉(zhuǎn)換成二進制、八進制、十進制和BCD數(shù)。

(1)(5D.BA)16=(0101,1101.1011,1010)2=(135.564)8=(93.7265625)10

=(1001,0011.0111,0010,0110,0101,0110,0010,0101)BCD

(2)(1001.0101,1)2=(9.34375)10=(11.26)8=(9.58)]6

=(1001.0011,0100,0011,0111,0101)BCD

9.寫出下列字符的ASCII碼。

(1)9=(39H)ASCII碼(2)'C=(43H)ASCII碼

(3)$=(24H)ASCIIHi(4)‘空格'—(20H)ASCIIn

(5)'b'=(62H)ASC【【碼(6)‘回車'=(ODH)ASCI【碼

⑺‘換行’=(OAH)ASCIIw⑻,報警符'=(Q7H)ASCII?

2

二、選擇題

1.下列無符號數(shù)中最小的數(shù)是(A)。

A.(01A5)HB.(1,1O11,O1O1)BC.(2590)DD.(3764)0

2.下列有符號數(shù)中最大的數(shù)是(D)。

A.1002HB.1001001100101100BC.25700D.9614D

3.在機器數(shù)(A)中,零的表示形式是唯一的。

A.補碼B,原碼C.補碼和反碼D.原碼和反碼

4.8位二進制數(shù)補碼的數(shù)值表示范圍為(A)。

A.-1281-127B.—127?+127

C.一129?+128D.-128?+128

5.若下列字符碼(ASCII)中有奇偶校驗位,但沒有數(shù)據(jù)錯誤,采用偶校

驗的字符碼是(D)。

A.11001011B.11010110C.11000001D.11001001

6.B9H可以看成(ABD)。

A.無符號數(shù)185B.帶符號數(shù)一71的補碼

C.十進制數(shù)99的組合BCD碼D.帶符號數(shù)一57的原碼

三、簡答題

1.簡述微處理器、微計算機及微計算機系統(tǒng)三個術(shù)語的內(nèi)涵。

答:微處理器是微計算機系統(tǒng)的核心硬件部件,它本身具有運算能力和控制功

能,對系統(tǒng)的性能起決定性的影響。微處理器一般也稱為CPU;微計算機是由微處

理器、存儲器、I/O接口電路及系統(tǒng)總線組成的裸機系統(tǒng)。微計算機系統(tǒng)是在微計算

機的基礎(chǔ)上配上相應(yīng)的外部設(shè)備和各種軟件,形成一個完整的、獨立的信息處理系

統(tǒng)。三者之間是有很大不同的,微處理器是微型計算機的組成部分,而微型計算機乂

是微型計算機系統(tǒng)的組成部分。

2.什么叫總線?為什么各種微型計算機系統(tǒng)中普遍采用總線結(jié)構(gòu)?

答:總線是模塊與模塊之間傳送信息的一組公用信號線。

總線標準的建立使得各種符合標準的模塊可以很方便地掛在總線上,使系統(tǒng)擴

展和升級變得高效、簡單、易行。因此微型計算機系統(tǒng)中普遍采用總線結(jié)構(gòu)。

3.微型計算機系統(tǒng)總線從功能上分為哪三類?它們各自的功能是什么?

答:微型計算機系統(tǒng)總線從功能上分為地址總線、數(shù)據(jù)總線和控制總線三類。

地址總線用于指出數(shù)據(jù)的來源或去向,單向;數(shù)據(jù)總線提供了模塊間數(shù)據(jù)傳輸?shù)穆?/p>

徑,雙向;控制總線用來傳送各種控制信號或狀態(tài)信息以便更好協(xié)調(diào)各功能部件的

工作。

3

第2章微處理器及其結(jié)構(gòu)

一、填空題

1.8086/8088CPU執(zhí)行指令中所需操作數(shù)地址由EU計算出16位偏移量部分

送BIU,由BIU最后形成一個20位的內(nèi)存單元物理地址。

2.8086/8088CPU在總線周期的T1時刻,用A19/S6?A16/S3輸出20位地址

信息的最高4位,而在其他時鐘周期,則輸出狀態(tài)信息。

3.8086/8088CPU復(fù)位后,從0FFFF0H單元開始讀取指令字節(jié),一般這個單元

在ROM區(qū)中,在其中設(shè)置一條跳轉(zhuǎn)指令,使CPU對系統(tǒng)進行初始化。

4.8086系統(tǒng)的存儲體系結(jié)構(gòu)中,1MB存儲體分2個庫,每個庫的容量都是512K

字節(jié),其中和數(shù)據(jù)總線D15?D8相連的庫全部由奇地址單元組成,稱為高位字節(jié)

庫,并用作為此庫的選通信號。

5.8086/8088系統(tǒng)中,可以有64K個段起始地址,任意相鄰的兩個段起始地址

相距16個存儲單元。

6.用段基值及偏移量來指明內(nèi)存單元地址的方式稱為邏輯地址。

7.通常8086/8088CPU中當(dāng)EU執(zhí)行一條占用很多時鐘周期的指令時,或者在多

處理器系統(tǒng)中在交換總線控制時會出現(xiàn)空閑狀態(tài)。

8.8086CPU使用16根地址線訪問I/O端口,最多可訪問64K個字節(jié)端口,使

用20根地址線訪問存儲單元,最多可訪問1M個字節(jié)單元。

9.CPU取一條指令并執(zhí)行該指令的時間稱為指令周期,它通常包含若干個

總線周期,而后者又包含有若干個時鐘周期。

10.

11.

12.

13.

二、單項選擇題

1.某微機最大可尋址的內(nèi)存空間為16MB,其CPU的地址總線至少應(yīng)有(E)條。

A.26B.28C.20D.22E.24

2.8086/8088CPU的RESET引腳至少應(yīng)維持(A)個時鐘周期的正脈沖寬度才能

有效復(fù)位。

A.4B.5C.2D.3

3.當(dāng)RESET信號進入高電平狀態(tài)時,將使8()86/8088CPU的(D)寄存器初始化

為0FFFFH。

A.SSB.DSC.ESD.CS

4.8086/8088CPU與慢速存儲器或I/O接口之間進行數(shù)據(jù)傳輸,為了使傳送速

度匹配,有時需要在(C)狀態(tài)之間插入若干等待周期TW。

4

A.T1和T2B.T2和T3C.T3和T4D,隨機

5.8086/8088CPU中標志寄存器的主要作用是(D)。

A.檢查當(dāng)前指令的錯誤B.糾正當(dāng)前指令執(zhí)行的結(jié)果與錯誤

C.決定是否停機D.產(chǎn)生影響或控制某些后續(xù)指令所需的標志

6.8086最小模式下的存儲器讀周期中地址鎖存發(fā)生在總線周期的(A)時亥人

A.T1B.T2C.T3D.T4

7.指令指針I(yè)P的作用是(A)。

A.保存將要執(zhí)行的下一條指令的地址B.保存CPU要訪問的內(nèi)存單元地址

C.保存運算器運算結(jié)果內(nèi)容D.保存正在執(zhí)行的一條指令

8.8086CPU有兩種工作模式,最小模式的特點是(A)。

A.CPU提供全部控制信號B.由編程進行模式設(shè)定

C.不需要8282收發(fā)器D.需要總線控制器8288

三、簡答題

1.8086/8088CPU分為哪兩個部分?如何協(xié)調(diào)工作?

答:EU是執(zhí)行部件,主要的功能是執(zhí)行指令和形成有效地址。BIU是總線接口

部件,與片外存儲器及LO接口電路傳輸數(shù)據(jù),主要功能是形成實際地址、預(yù)取指令

和存取操作數(shù)。EU經(jīng)過BIU進行片外操作數(shù)的訪問,BIU為EU提供將要執(zhí)行的指

令。EU與B1U可分別獨立工作,當(dāng)EU不需BIU提供服務(wù)時,BIU可進行填充指令

隊列的操作。

2.8086/8088CPU的地址總線有多少位?其尋址范圍是多少?

答:8086/8088CPU的地址總線共20位,最大可尋址1MB空間。

3.8086/8088CPU使用的存儲器為什么要分段?怎么分段?

答:8086/8088為16位CPU,其內(nèi)部的ALU、相關(guān)的地址寄存器(如SP、IP以

及BX、BP、SI、D1)等都是16位的,因而對存儲器地址的處理也只能是16位操作,

即8086/8088的直接尋址能力在64KB范圍內(nèi)。而實際上8086/8088有20條地址線,

它的最大尋址空間為1MB。這就產(chǎn)生了一個矛盾,即如何用16位的地址寄存器去表

示一個20位的存儲器物理地址?

實際使用的解決辦法是:將?1MB大小的存儲空間分為若干“段”,每段不超過

64KB。這樣,一個20位的物理地址就可以用“16位段基址:16位偏移量”的形式

(稱為邏輯地址)來表示了,其中段地址存放在8086/8088的段寄存器中。

4.8086/8088CPU中有幾個通用寄存器?有幾個變址寄存器?有幾個指針

寄存器?通常哪幾個寄存器亦可作為地址寄存器使用?

5

答:8086/8088CPU中共有:

8個16位的通用寄存器AX、BX、CX、DX、BP、SP、SI、DI;

2個變址寄存器SI、DI;

2個指針寄存器BP、SP;

其中BX、BP、SI、DI亦可作地址寄存器。

5.Intel8086與8088有何區(qū)別?

答:8086與8088的區(qū)別主要表現(xiàn)在以下幾個方面:

第一、8086的指令隊列可以容納6個字節(jié),每個總線周期在存儲器中取出2個字

節(jié)指令代碼填入隊列。而8088只能容納4個字節(jié),且每個總線周期只能取出1個字節(jié)

指令代碼。

第二、8086外部數(shù)據(jù)總線寬度為16位,8088外部數(shù)據(jù)總線寬度只有8位。注意:

8086和8088外部數(shù)據(jù)總線的寬度不同將導(dǎo)致擴展主存儲器及輸入/輸出接口時系統(tǒng)

地址線和數(shù)據(jù)線連接方式的不同。

第三、其他不問的引腳定義:(1)AD15-AD0,在8086中為地址/數(shù)據(jù)復(fù)用,面

在8088中AD15?AD8改為A15?A8只作地址線用;(2)34、28號引腳定義不同。

6.8086/8088CPU工作在最小模式時:當(dāng)CPU訪問存儲器時,要利用哪些信號?

當(dāng)CPU訪問外設(shè)接口時,要利用哪些信號?

答:8086/8088CPU工作在最小模式時,若訪問存儲器,需用到以下信號:、

ALE、、DEN、READY>、、、ADO-ADI5>A19/S6-A16/S3。若訪問外

設(shè),需用到以下信號:、ALE、、DEN、READY、、、AD0~AD15。

7.試指出下列運算后的各個狀態(tài)標志,并說明進位標志和溢出標志的區(qū)別:

(1)1278H+3469H

答:CF=OAF=1ZF=OSF=OOF=0PF=1

(2)54E3H-27A0H

答:CF=OAF=OZF=OSF=OOF=0PF=O

(3)3881H+3597H

答:CF=OAF=OZF=OSF=OOF=0PF=1

(4)01E3H-01E3H

答:CF=OAF=()ZF=ISF=OOF=0PF=1

其中,進位標志CF用于判別無符號數(shù)運算是否超出數(shù)的表示范圍,而溢出標

志OF用于判別帶符號數(shù)運算是否超出數(shù)的表示范圍。

奇偶標志PF只能判斷結(jié)果低8位中“1”的個數(shù)為奇數(shù)還是偶數(shù)。

&什么是邏輯地址?什么是物理地址?它們之間有什么聯(lián)系?各用

6

在何處?

答:邏輯地址由兩個16位的部分即段基址和偏移量組成,一般在程序中出現(xiàn)的

地址都表示為邏輯地址形式;物理地址是一個20位的地址,它是唯一能代表存儲空

間每個字節(jié)單元的地址,一?般只出現(xiàn)在地址總線上。

由于8086/8088CPU中的寄存器只有16位長,所以程序不能直接存放20位的

物理地址,而必須借助邏輯地址,即用兩個16位的寄存器來表示物理地址。他們之

間的關(guān)系是:物理地址=段基址*16+偏移量;另外,一個物理地址可對應(yīng)多個邏輯

地址。

9.設(shè)現(xiàn)行數(shù)據(jù)段位于存儲器0B0000H?0BFFFFH單元,DS段寄存器內(nèi)容為多

少?

答:DS段寄存器內(nèi)容為0B000H。

10.給定一個存放數(shù)據(jù)的內(nèi)存單元的偏移地址是20C0H,(DS)=OCOEOH,求

出該內(nèi)存單元的物理地址。

答:物理地址:0C2EC0H。

11.8086/8088為什么采用地址/數(shù)據(jù)引線復(fù)用技術(shù)?

答:考慮到芯片成本和體積,8086/8088采用40條引線的封裝結(jié)構(gòu)。40條引線

引出8086/8088的所有信號是不夠用的,采用地址,,數(shù)據(jù)線復(fù)用引線方法可以解決這

一矛盾,從邏輯角度,地址與數(shù)據(jù)信號不會同時出現(xiàn),二者可以分時復(fù)用同一組引

線。

12.怎樣確定8086的最大或最小工作模式?

答:引線的邏輯狀態(tài)決定8086的工作模式,引線接高電平,8086被設(shè)定為最

小模式,引線接低電平,8086被設(shè)定為最大模式。

13.8086基本總線周期是如何組成的?

答:基本總線周期由4個時鐘(CLK)周期組成,按時間順序定義為Tl、T2、T3、

T4o

14.在基于8086的微計算機系統(tǒng)中,存儲器是如何組織的?存儲滯是如何與

處理器總線連接的?信號起什么作用?

答:8086為16位微處理器,可訪問1M字節(jié)的存儲器空間;1M字節(jié)的存儲器

分為兩個512K字節(jié)的存儲體,分別命名為偶存儲體和奇存儲體;偶體的數(shù)據(jù)線連接

D7?D0,“體選”信號接地址線A0:奇體的數(shù)據(jù)線連接D15?D&“體選”信號接

7

信號;A()信號有效時允許訪問偶體中的低字節(jié)存儲單元,信號有效時允許訪問奇

體中的高字節(jié)存儲單元,實現(xiàn)8086的低字節(jié)訪問、高字節(jié)訪問及字訪問。

15.有一個由20個字組成的數(shù)據(jù)區(qū),其起始地址為61()AH:1CE7H。試寫出該數(shù)據(jù)區(qū)

首末單元的實后地址PAo

首單元地址:610A0H+lCE7H=62D87H

末單元地址:62D87H+27H=62DAEH

16.有兩

個16位

的字

31DAH、

5E7FH,

它們在

8086系統(tǒng)

存儲器中

的地址為

00130H

00135H,

試畫出它

們的存儲

器示意

圖。

地址內(nèi)容

00130H0DAH

00I31H31H

00132H

OOI33H

00I34H

OO135H7F

00136H5E

17.試說明8086CPU的控制引腳ALE的作用。

答:8086的低位地址線與數(shù)據(jù)線復(fù)用,為保證地址線維持足夠的時間,需使用

ALE信號將低位地址線通過鎖存器保存,以形成系統(tǒng)地址總線。

8

第3章8086/8088CPU指令系統(tǒng)

一、判斷題

l.MOVAX,LBP]的源操作數(shù)物理地址為16X(DS)+(BP)。(X)

2.OUTDX,AL指令的輸出是16位操作數(shù)。(X)

3.不能用立即數(shù)給段寄存器賦值。(J)

4.所有傳送指令都不影響PSW寄存器的標志位。(X)

5.堆棧指令的操作數(shù)均為字。(J)

6.段內(nèi)轉(zhuǎn)移指令執(zhí)行結(jié)果要改變IP,CS的值。(X)

二、單項選擇題

1.寄存器間接尋址方式中,操作數(shù)在(C)中C

A.通用寄存器B.I/O端口C.存儲單元D.段寄存器

2.(A)尋址方式的跨段前綴不可省略。

A.DS:[BP]B.DS:[SI]C.DS:[Di]D.SS:[BP]

3.假設(shè)(SS)=2000H,(SP)=0012H,(AX)=1234H,執(zhí)行PUSHAX后,(SP)

=(C)o

A.0014HB.001IHC.0010HD.000FH

4.用BP作基址變址尋址時,操作數(shù)所在的段是當(dāng)前(C)。

A.數(shù)據(jù)段B.代碼段C.堆棧段D.附加段

5.已知(IP)=1000H,CF=0,則執(zhí)行指令JNCShortlabel后,下列各數(shù)中哪一

個是可能的IP值?(B)

(A)OFFFFH(B)OFFEH(C)10FEH(D)1100H

6.執(zhí)行下列指令后,(AX)=(A)o

MOVAX,1234H

MOVCL,4

ROLAX,CL

9

DECAX

MOVCX,4

MULCX

HLT

A.8D00HB.9260HC.8CA0HD.0123H

7.設(shè)(AL)=-68,(BL)=86,執(zhí)行SUBAL,BL指令后,正確的結(jié)果是(C)。

A.CF=1B.SF=1C.OF=1D.ZF=1

8.已知(SI)=0004H,(DS)=8000H,(80004H)=02H,(80005H)=C3H(>

指令LEAAX,[SI]執(zhí)行后(AX)=(C)c

A.0002HB.OOO5HC.0004HD.C302H

9.條件轉(zhuǎn)移指令JNE的條件是(C)o

A.CF=0B.CF=IC.ZF=OD.ZF=1

10.在8086中,(BX)=0282H,且題中指令已在指令隊列中,則執(zhí)行

INCBYTEPTR(BX)指令需要的總線周期為(C)。

A.OB.lC.2D.3

三、多項選擇題

1.下列指令中源操作數(shù)使用寄存器尋址方式的有(BF)。

A.MOVBX,BUF[SI]B.ADD[SI+50],BXC.SUBAX,2

D.CMPAX,DISP[DI]E.MULVAR[BX]F.PUSHCX

2.將累加器AX的內(nèi)容清零的正確指令是(BCD)o

A.CMPAX,AXB.SUBAX,AX

C.ANDAX,0D.XORAX,AX

3.正確將字變量WORDVARR偏移地址送寄存器AX的指令是(CD)。

A.MOVAX,WORDVARRB.LESAX,WORDVARR

C.LEAAX,WORDVARRD.MOVAX,OFFSETWORDVARR

4.調(diào)用CALL指令可有(ABDE)o

A.段內(nèi)直接B.段內(nèi)間接C.短距圈(SHORT)

D.段間直接E.段間間接

5.8086指令的操作數(shù)可能有(ABC)o

A.OB.lC.2D.3

四、填空題

1.與指令MOVBX,OFFSETBUF功能相同的指令是LEABX,BUF。

2.假設(shè)(BX)=0449H,(BP)=0200H,(SI)=0046H,(SS)=2F00H,

(2F246H)=7230H則執(zhí)行XCHGBX,[BP+Sl]指令后,(BX)=723()H°

3.執(zhí)行下列指令序列后,完成的功能是將(DX,AX)的值除以16。

10

MOVCX,4

NEXT:SHRDX,1

RCRAX,1

LOOPNEXT

4.已知(AL)=01011I0IB,執(zhí)行指令NEGAL后,再執(zhí)行CBW后,

(AX)=0FFA3H

5.在數(shù)據(jù)傳送類指令中,只有SAHF和POPF兩條指令會影響標志位的值,

其中指令POPF是唯一可以改變TF標志的指令。

6.設(shè)有100個字節(jié)數(shù)據(jù)(補碼)、存放在數(shù)據(jù)段中EA=2000H的

存儲單元中。以下程序應(yīng)該從該數(shù)捱區(qū)中找出最小的一個數(shù)據(jù)、并存

入EA=2100H單元中,請將下面程序補充完整。

MIN:MOVBX,2000H

MOVAL,[BX]

MOVCX,99

LOOP1:INCBX

CMPAL,[BX]

JLELOOP2

MOVAL,[BX]

L00P2:DECCX

JNZLOOP1

MOVC2100H],AL

7.MOVAX,ES:[BX][Si]中,源操作數(shù)的物理地址計算式是:

(ES)X16+(BX)+(SI)。

五、綜合題

1.請指出以下各指令的源、目的操作數(shù)所使用的尋址方式。

(1)MOVSI,2100H

(2)SBBDISPfBX],7

(3)AND[DI],AX

(4)ORAX,[609EH)

(5)MOV[BX+DI+30H],CX

(6)PUSHES:[BP]

(7)CALLDISP[DI]

答:(1)源操作數(shù):立即數(shù)尋址;目的操作數(shù):寄存器尋址

(2)源操作數(shù):立即數(shù)尋址;目的操作數(shù):(帶位移量的)基址尋址

(3)源操作數(shù):寄存器尋址:目的操作數(shù):變址尋址

(4)源操作數(shù):直接尋址:目的操作數(shù):寄存器尋址

11

(5)源操作數(shù):寄存器尋址;目的操作數(shù):(帶位移量的)基址變址尋

(6)源操作數(shù):帶段超越的基址尋址;目的操作數(shù):隱含尋址

(7)只有一個操作數(shù),為(帶位移量的)變址尋址

(1)2.請指出下列各條指令的錯誤,并改正。

(2)MOV[100],23H

(3)ADDAX,[BX+BP+6]

(4)PUSHDL

(5)INAXJ3FH]

(6)OUT3FFH,AL

(7)POP[AX]

(8)IMUL4CH

(9)SHLBX,

(10)INT30()

(11)XCHGDX,OFFFH

(12)MOVAH,BX

(13)MOV[BX],ES:AX

(14)MOVAX,OFFSET[SI]

(15)MOVCS,AX

(16)MOVDS,ES

MOVDS,1000H

答:(1)不允許直接向段寄存器送立即數(shù),可改為:

MOVAX,1000H

MOVDS,AX

(2)該指令在語法上是對的,即可以把一個立即數(shù)送入一個存儲

單元;但是如果考慮實際編譯,則第一操作數(shù)前應(yīng)加上BYTEPTR或WORD

PTR說明,否則匯編程序會因不能確定操作數(shù)長度而指示出錯??筛臑椋篗OV

BYTEPTR[100],23H

(3)不能同時使用兩個基址寄存器BX、BP進行間接尋址,可改為:

ADDAXJBX+DI+6]

(4)堆棧操作應(yīng)以字為單位進行,而DL是一個字節(jié)。

可改為:PUSHDX

(5)在輸入/輸出指令中,8位端口地址應(yīng)直接寫在操作數(shù)處??筛臑椋?/p>

INAX,3FH

(6)端口地址3FFH已超出2位一進制表示范圍,16位端口地址應(yīng)存于DX。

12

可改為:

MOVDX,3FFHOUTDX,AL

(7)AX不能用于間接尋址,間接尋址只能用BX、BP、SI、

DI四個寄存器之一??筛臑椋篜OP[BX]

(8)立即數(shù)不能做乘法指令的操作數(shù),可改為:

MOVBL,4CH

IMULBL

(9)當(dāng)邏輯移位的次數(shù)大于1時,應(yīng)該用CL指示次數(shù)??筛?/p>

為:

MOVCL,5

SHLBX,CL

(10)操作數(shù)300(255,己超出有效的中斷類型碼范圍。

(IDXCHG指令不允許立即數(shù)做它的操作數(shù)??筛臑椋?/p>

MOVCX,0FFFH

XCHGDX,CX

(12)源、目的字長不一致

(13)在8086尋址方式中,AX不能作為基址寄存器使用,而且源、目的不能

同時為存貯器尋址方式

(14)OFFSET只用于簡單變量,應(yīng)去掉

(15)CS不能作為目的寄存器

(16)段寄存器之間不能直接傳送數(shù)據(jù)

3.設(shè)若標志寄存器原值為0A11H,(SP)=0060H,(AL)=4。下列兒條指令

執(zhí)行后,標志寄存器、AX、SP的值分別是多少?

PUSHF

LAHF

XCHGAH,AL

PUSHAX

SAHF

POPF

答:指令執(zhí)行后標志寄存器的值為0411H,AX=0411H,SP=005EHo

4.假如在程序的括號中分別填入指令:

(l)LOOPL20

(2)LOOPNEL20

(3)LOOPEL20

13

試說明在三種情況下,當(dāng)程序執(zhí)行完后,AX、BX、CX、DX四個寄存器的內(nèi)

容分別是什么?

BEGIN:MOVAX,01

MOVBX,02

MOVDX,03

MOVCX,04

L20:INCAX

ADDBX,AX

SHRDXJ

()

答案:(1)(AX)=5(BX)=16(CX)=0(DX)=0

(2)(AX)=3(BX)=7(CX)==2(DX)=0

(3)(AX)=2(BX)=4(CX)二=3(DX)二1

5.在己學(xué)的指令中,可實現(xiàn)累加器清0的單條指令有哪些?比較它們的

功能。

答:(1)MOVAX,0;僅將累加器清0,不會影響任何標志位

(2)SUBAX,AX;累加器清0的同時影響所有狀態(tài)標志,具體地有:

ZF、PF置1,CF、AF、SF、OF均清()

(3)ANDAX,0;將累加器清0,ZF、PF置I,CF、OF、SF清0

(4)XORAX,AX;將累加器清0,ZF、PF置1,CF、OF、SF清0

6.已知(DS)-2000H,有關(guān)的內(nèi)存單元值為:(21000H)-00內(nèi)(210元H)-12H,

(21200H)=00H,(21201H)=10H,(23200H)=20H,(23201H)=30H,(23400H)=40H,

(23401H)=30H,(23600H)=60H,(23601H)=30H,符號COUNT的偏移地址為

1200Ho執(zhí)行下列指令后,寄存器AX、BX、SI的值分別是多少?

MOVBX,OFFSETCOUNT

MOVSI,[BX]

MOVAX,COUNT[SI][BX]

答:執(zhí)行結(jié)果為(BX)=1200H,(SI)=1000H,(AX)=3040Ho

7.設(shè)若內(nèi)存單元DATA在數(shù)據(jù)段中偏移量為24C0H處,24C0H?24c3H單元

中依次存放著55H、66H、77H、88H。下列兒條指令執(zhí)行后,寄存器AX、BX、

CL、SLDS的值分別是多少?

MOVAX,DATA

LEASI,DATA

MOVCL,ISIJ

14

LDSBX,DATA

答:執(zhí)行結(jié)果為(AX)=6655H,(BX)=6655H,(CL)=55H,(SI)=24C0H,

(DS)=8877Ho

8.若(AX)=26D3H,(CX)=7908H,CF=1,執(zhí)行下列指令后,寄存器AX、

CX的值分別是多少?CF=?0F=?

SALCH,1

RCRAX,CL

ROLAL,1

答:執(zhí)行結(jié)果為(AX)=0A64CH,(CX)=0F208H,CF=OF=Oo

9.下面的程序執(zhí)行后,DX、AX的值分別是多少?

:以X為首址的字單元中的數(shù)據(jù)依次為1234H、5678H

;以Y為首址的字單元中的數(shù)據(jù)依次為8765H、4321H

LEASI,X

LEADI,Y

MOVDX,[SI+2]

MOVAX,X

ADDAX,X

ADCDX,[SI+2]

CMPDX,1DI+2J

JLL2

CMPAX,Y

JMPEXIT

LI:MOVAX,1

JMPEXIT

L2:MOVAX,2

EXIT:.......

答:執(zhí)行結(jié)果為(AX)=2,(DX)=0ACF0Ho

10.設(shè)VAR字單元的值為x,Fl字單元的值為y,試編程按以下要求給y賦

值:

2x>30

y=030>x>l

—2x<l

15

答:一種可能的程序段實現(xiàn)如下:

MOVAX,VAR;AX(x

CMPAX,30

JGPLUS2;x>30,貝轉(zhuǎn)PLUS2

CMPAX,1

JLMIN2;x<1,則轉(zhuǎn)MIN2

MOVFl,0;302x21,y=0

JMPGO

PLUS2:MOVFl,2;y=2

JMPGO

MIN2:MOVFl,-2;y二?2或OOFEH

GO:……;后續(xù)處理

簡析:本例中并未說明VAR字節(jié)單元是帶符號數(shù)還是無符號數(shù),讀者在使

用判斷轉(zhuǎn)移指令時可任意選用。若當(dāng)作帶符號數(shù),應(yīng)使用JG、JL、JGE、JLE等

指令,如參考程序;若當(dāng)作無符號數(shù),則應(yīng)使用JA、JB、JAE、JBE等指令。

16

第4章匯編語言程序設(shè)計

一、填空題

1.段定義偽指令語句用SEGMENT語句表示開始,以ENDS語句表示結(jié)束。

2.ARRAYDW10DUP(5DUP(4DUP(20H,40H,60H))語句執(zhí)行后共

占1200字節(jié)存儲單元。

3.匯編語句中,一個過程有NEAR和FAR兩種屬性。NEAR屬性表示主程序和

子程序在同一個代碼段中,F(xiàn)AR屬性表示主程序和子程序不在同一個代碼段中。

4.DOS系統(tǒng)功能號應(yīng)放在AH寄存器中。

5.子程序又稱過程,它可以由PROC語句定義,由ENDP語句結(jié)束、屬性

可以是NEAR或FAR。

6.假設(shè)VAR為數(shù)據(jù)段中已定義的變量,則指令MOVBX,OFFSETVAR中源

操作數(shù)的尋址方式是立即數(shù)尋址。

二、選擇題

1.EXE文件產(chǎn)生在(D)之后。

A.匯編B.編輯C.用軟件轉(zhuǎn)換D.連接

2.變量定義的偽指令助記符有(ABCEF)o

A.DBB.DWC.DDD.DFE.DQF.DT

3.主程序與子程序之間傳遞參數(shù)可通過(ABC)進行。

A.堆棧B.存儲器單元C.通用寄存器D.指令隊列E.其他

4.計算機系統(tǒng)軟件中的匯編程序是一種(C)。

A.匯編語言程序B.編輯程序

C.翻譯程序D.將高級語言轉(zhuǎn)換成匯編程序的程序

5.若主程序段中數(shù)據(jù)段名為DATA,對數(shù)據(jù)段的初始化操作應(yīng)為(B)。

17

A.MOVAX,DATAB.MOVAX,DATA

MOVES,AXMOVDS,AX

C.PUSHDSD.MOVDS,DATA

6.8086宏匯編源程序中,若BUFF是字變量名,則執(zhí)行指令MOVBX,BUFF后,

BX中的值為BUFF單元的(A)。

A.字數(shù)據(jù)值B.變量類型值C.段基址D.段內(nèi)偏移量

三、綜合題

1.下列標號為什么是非法的?

(l)GET.DATA

(2)1_NUM

(3)TEST-DATA

(4)RET

(5)NEWITEM

答案:(I)因為只允許是標號的第一個字符

(2)第一個字符不能為數(shù)字

(3)不允許出現(xiàn)―

(4)不能是保留字,如助記符

(5)不能有空格

2.已知數(shù)據(jù)和符號定義

AlDB?

A2DB8

KIEQU100

判斷下列指令的正誤,并說明錯誤指令的原因。

(1)MOVKI,AX

(2)MOVA2,AH

(3)CMPAl,A2

(4)MOVBX,KI

MOV[BX],DX

(5)KIEQU200

答:(1)錯誤。KI是符號,在此處相當(dāng)于立即數(shù)10(),故不能做目的操作

數(shù)。

(2)正確。

(3)錯誤。A1.A2都是字節(jié)變量,相當(dāng)于兩個存儲流單元,故不能同時出

現(xiàn)在一條指令中直接進行比較。

(4)正確。

(5)錯誤。用EQU定義的符號不能重新賦值,除非已用PURGE解除了原值。

3.若數(shù)據(jù)段中有定義

18

NUM1EQU23H

NUM2DW0

則指令MOVNUM2,NUM1的源、目操作數(shù)的尋址方式以及指令執(zhí)行后

NUM2+1單元的內(nèi)容分別是什么?

答:指令M0VNUM2,NUM1的源操作數(shù)使用立即數(shù)尋址,目的操作數(shù)使用直

接尋址。指令執(zhí)行后NUM2+1單元的內(nèi)容是0。

4.已知某數(shù)據(jù)段從物理地址03000H處開始,定義如下:

DSEGSEGMENT

ORG2000H

AlDD2DUP(7,1,?)

A2DB10DUP(0,4,3DUP(2),5)

CNTEQU20H

A3DW100DUP(?)

DSEGENDS

靖分別用分析運算符SEG、OFFSET、LENGTH.SIZE、TYPE求出Al.A2.A3

的段基址、偏移量、類型及它們的LENGTH、SIZE0

答:(SEGAl)=0300H,(OFFSETAl)=2000H,(TYPEAl)=4,

(LENGTHAl)=2,(SIZEAl)=2X3X4=24;

(SEGA2)=0300H,(OFFSETA2)=2018H,(TYPEA2)=1,

(LENGTHA2)=10,(SIZEA2)=10X6X1=60;

(SEGA3)=0300H,(OFFSETA3)=2054H,(TYPEA3)=2,

(LENGTHA3)=100,(SIZEA3)=100X2=200

5.下面兩個數(shù)據(jù)段中偏移地址為10H和UH的兩個存儲單元中的數(shù)據(jù)一樣嗎?

為什么?

答案:不一樣。分別是72H,()4H和04H,72H。存儲字時低8位存在低字節(jié),高

8位存在高字節(jié)。

6.已知符號定義語句如下:

ALPHAEQU100

BETAEQU25

GAMMAEQU2

分別求下列各表達式的值。

(1)ALPHA*4GTBETA

(2)ALPHAMODGAMMA+BETA

(3)(BETA/3)LE5

19

(4)ALPHAANDBETA

(5)GAMMAXOR(BETAEQ25)

答:(1)ALPHA*4GTBETA=100*4GT25=OFFFFH

(2)ALPHAMODGAMMA+BETA=100MOD2+25=25

(3)(BETA/3)LE5=(25/3)LE5=0

(4)ALPHAANDBETA=100AND25=64H&19H=0

(5)GAMMAXOR(BETAEQ25)=2e(25EQ25)=OFFFDH

7.已知數(shù)據(jù)段定義如下:

DSEGSEGMENT

ORG6

VARIDB2,18

ORG$+2

VAR2DW569AH

CONTEQU$-VAR2

DB'AB'

DSEGENDS

用示意圖說明該數(shù)據(jù)段的分配情況。

答:有關(guān)存儲單元的內(nèi)容如下圖所示。

8.判斷以下說法是否正確,如有錯?,請說明原因并改正。

(1)偽指令在匯編過程中不會產(chǎn)生二進制代碼。

(2)宏和過程的相同之處是都可用于簡化源程序書寫、精簡目標代碼。

(3)在計算機中,高級語言通常需要轉(zhuǎn)換為匯編語言后才能執(zhí)行。

(4)匯編語言程序上機一般包括編輯、匯編、鏈接和調(diào)試幾個步驟。

答:(1)正確。(2)錯誤。宏不能精簡目標代碼。

(3)錯誤。高級語言程序經(jīng)編譯或解釋后直接轉(zhuǎn)換為目標代碼。

(4)正確。

9.執(zhí)行下列指令后,AX寄存器中的內(nèi)容是什么?

TABLEDW10,20,30,40,50

ENTRYDW3

MOVBX,OFFSETTABLE

ADDBX,ENTRY

MOVAX,[BX]

答:(AX)=lE00H

20

10.指出下列程序中的錯誤:

STAKSGSEGMENT

DB100DUP(?)

STA_SGENDS

DTSEGSEGMENT

DATA1DB?

DTSEGEND

CDSEGSEGMENT

MAINPROCFAR

START:MOVDS,DATSEG

MOVAL,34H

ADDAL,4FH

MOVDATA,AL

STARTENDP

CDSEGENDS

END

答案:

改正后:

STAKSGSEGMENT

DB100DUP(?)

STAKSGENDS

DTSEGSEGMENT

DATADB?

DTSEGENDS

CDSEGSEGMENT

MAINPROCFAR

ASSUMECS:CDSEG,DS:DTSEGSS:STAKSG

START:MOVAX,DTSEG

MOVDS,AX

MOVAL,34H

ADDAL,4FH

MOVDATAUAL

MOVAH,4cH

INT21H

MAINENDP

CDSEGENDS

ENDSTART

11.請寫出上述兩條指令執(zhí)行后,BX寄存器中的內(nèi)容。

DATASEGMENT

TABLE_ADDRDW1234H

21

DATAENDS

MOVBX,TABLE.ADDR

LEABX,TABLE.ADDR

答案:MOVBX,TABLE.ADDR;執(zhí)行后(BX)=1234H

LEABX,TABLE_ADDR;執(zhí)行后(BX)=OFFSETTABLE.ADDR

12.讀下面程序,在其中的空處添上適當(dāng)內(nèi)容。該程序完成了什么功能?

程序運行后,變量RS的值是多少?

DATASEGMENT

BUFDB-13,24,5,-62

DB77,2(),-7,145,0

CNTDB$-BUF

RSDB0

DATAENDS

STACKSEGMENTEARASTACK

DB256DUP(?)

STACKENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA.SS:STACK

STARTPROCFAR

PUSHDS

MOVAX,0

PUSHAX

MOVAX,DATA

MOVDS,AX

LEABX,BUF

MOVCH,0

MOVCL,

LP:MOVAL,[B

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論