微機(jī)原理與接口技術(shù)1-8習(xí)題解答王玉良_第1頁(yè)
微機(jī)原理與接口技術(shù)1-8習(xí)題解答王玉良_第2頁(yè)
微機(jī)原理與接口技術(shù)1-8習(xí)題解答王玉良_第3頁(yè)
微機(jī)原理與接口技術(shù)1-8習(xí)題解答王玉良_第4頁(yè)
微機(jī)原理與接口技術(shù)1-8習(xí)題解答王玉良_第5頁(yè)
已閱讀5頁(yè),還剩165頁(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)介

第1章習(xí)題參考解答

1.1.填空和選擇

(I)運(yùn)算器和控制器合在一起稱為中央處理器,中央處理器和存儲(chǔ)器、I/O接口、

總線及電源合在一起被稱為主機(jī)。

(2)計(jì)算機(jī)的軟件一般分為兩大類:一類叫系統(tǒng)軟件軟件,一類叫應(yīng)用軟件軟件。數(shù)

據(jù)庫(kù)管理系統(tǒng)屬于系統(tǒng)軟件軟件,計(jì)算機(jī)輔助教學(xué)軟件屬于應(yīng)用軟件軟件。

(3)用來(lái)管理計(jì)算機(jī)系統(tǒng)的資源并調(diào)度用戶的作業(yè)程序的軟件稱為圜逐緩;負(fù)責(zé)將

高級(jí)語(yǔ)言的源程序翻譯成目的程序的軟件稱為編譯程序。

(4)計(jì)算機(jī)系統(tǒng)中的存儲(chǔ)器分為外存儲(chǔ)器和內(nèi)存儲(chǔ)器。在CPU執(zhí)行指令時(shí),必須將

指令存放在內(nèi)存儲(chǔ)器中。

(5)計(jì)算機(jī)存儲(chǔ)數(shù)據(jù)的最小單位是寶芭。1KB容量的存儲(chǔ)器能夠存儲(chǔ)1024個(gè)這樣的

基本單位。

(6)在計(jì)算機(jī)系統(tǒng)中,多個(gè)系統(tǒng)部件之間信息傳送的公共通道稱為逛。就其傳送的

信息的性質(zhì)而言,在公共通道上傳送的信息包括崖制和避信息。

(7)采用2的補(bǔ)碼形式表示的8位二進(jìn)制整數(shù),其可表示的數(shù)的范圍為(A1

A.-128~+127B.-2727~+2-127

C.-2-128~2+127D.-127-+128

(8)在定點(diǎn)數(shù)運(yùn)算中產(chǎn)生溢出的原因是(CX

A.運(yùn)算過(guò)程中最高位產(chǎn)生了進(jìn)位或借位

B.參加運(yùn)算的操作數(shù)超出了機(jī)器的表示范圍

C,運(yùn)算的結(jié)果超出了結(jié)果單元的表示范圍

D.寄存器的位數(shù)太少,不得不舍棄最低有效位

(9)下列邏輯部件中,不屬于運(yùn)算器的是(A\

A.指令寄存器B.ALU

C.累加器D.狀態(tài)條件寄存器

2.說(shuō)明微型計(jì)算機(jī)的基本硬件構(gòu)成和各部分功能。

微型計(jì)算機(jī)硬件一般由微處理器、內(nèi)存儲(chǔ)器、外存儲(chǔ)器、系統(tǒng)總線、接口電路、輸入/

輸出設(shè)備等部件組成。

主要組成部件的功能和特點(diǎn)分析如下:

(1)微處理器:是微型計(jì)算機(jī)的核心部件,由運(yùn)算單元ALU、控制單元、寄存器組以

及總線接口部件等組成其功能是負(fù)責(zé)統(tǒng)一協(xié)調(diào)、管理和控制系統(tǒng)中的各個(gè)部件有機(jī)地工作。

(2)內(nèi)存儲(chǔ)器:用來(lái)存放計(jì)算機(jī)工作過(guò)程中需要的操作數(shù)據(jù)和程序。可分為隨機(jī)存儲(chǔ)

器RAM和只讀存儲(chǔ)器ROM。RAM存放當(dāng)前參與運(yùn)行的各種程序和數(shù)據(jù),特點(diǎn)是信息可

讀可寫(xiě),存取方便,但信息斷電后會(huì)丟失;ROM用于存放各種固定的程序和數(shù)據(jù),特點(diǎn)是

信息固定不變,關(guān)機(jī)后原存儲(chǔ)的信息不會(huì)丟失。

(3)系統(tǒng)總線:是CPU與其它部件之間傳送數(shù)據(jù)、地址和控制信息的公共通道???/p>

分成數(shù)據(jù)總線DB、地址總線AB、控制總線CB。

(4)輸入/輸出接口電路:完成微型計(jì)算機(jī)與外部設(shè)備之間的信息交換。由寄存器組、

專用存儲(chǔ)器和控制電路等組成。

(5)輸入/輸入設(shè)備:是微型計(jì)算機(jī)系統(tǒng)與外部進(jìn)行通信聯(lián)系的主要裝置。常用的有鍵

盤(pán)、鼠標(biāo)、顯示器、打印機(jī)和掃描儀等。

3.說(shuō)明微型計(jì)算機(jī)系統(tǒng)的基本構(gòu)成。

微型計(jì)算機(jī)系統(tǒng)包括硬件系統(tǒng)和軟件系統(tǒng)兩大部分。

一、計(jì)算機(jī)硬件系統(tǒng)

硬件是指組成計(jì)算機(jī)的各種物理設(shè)備,它包括計(jì)算機(jī)的主機(jī)和外部設(shè)備。具體由五大功

能部件組成,即:運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備。這五大部分相互配

合,協(xié)同工作。

二、計(jì)算機(jī)軟件系統(tǒng)

計(jì)算機(jī)軟件系統(tǒng)包括系統(tǒng)軟件和應(yīng)用軟件兩大類。

1.系統(tǒng)軟件

系統(tǒng)軟件是指控制和協(xié)調(diào)計(jì)算機(jī)及其外部設(shè)備,支持應(yīng)用軟件的開(kāi)發(fā)和運(yùn)行的軟件。其

主要的功能是進(jìn)行調(diào)度、監(jiān)控和維護(hù)系統(tǒng)等等。

2.應(yīng)用軟件

應(yīng)用軟件是用戶為解決各種實(shí)際問(wèn)題而編制的計(jì)算機(jī)應(yīng)用程序及其有關(guān)資料。

三、硬件和軟件的關(guān)系

1.硬件與軟件是相輔相成的,硬件是計(jì)算機(jī)的物質(zhì)基礎(chǔ),沒(méi)有硬件就無(wú)所謂計(jì)算機(jī)。

2.軟件是計(jì)算機(jī)的靈魂,沒(méi)有軟件,計(jì)算機(jī)的存在就毫無(wú)價(jià)值。

3.硬件系統(tǒng)的發(fā)展給軟件系統(tǒng)提供了良好的開(kāi)發(fā)環(huán)境,而軟件系統(tǒng)發(fā)展又給硬件系統(tǒng)提

出了新的要求。

7.把+進(jìn)制數(shù)2000變成二進(jìn)制數(shù)、八進(jìn)制數(shù)和+六進(jìn)制數(shù)。

2000=7D0H=3720Q=11111010000B

8.把0.213變成二進(jìn)制數(shù)、+六進(jìn)制數(shù)(精確到小數(shù)點(diǎn)后4位)。

0.213=0.3687H=0.1550Q=0.00IIB

9.用4位運(yùn)算器完成如下計(jì)算,并解釋所得結(jié)果:

(1)無(wú)符號(hào)數(shù)6+4(2)無(wú)符號(hào)數(shù)3-4

(3)符號(hào)數(shù)3+4(4)符號(hào)數(shù)3-4

(5)符號(hào)數(shù)-3-4(6)符號(hào)數(shù)-5-4

(1)無(wú)符號(hào)數(shù)6+41010C=0,結(jié)果正確

(2)無(wú)符號(hào)數(shù)3-41111C=l,結(jié)果不正確

(3)符號(hào)數(shù)3+40111V=0,N=0,瞰,獻(xiàn)

正確

(4)符號(hào)數(shù)3-41111V=0,N=1,負(fù)數(shù),結(jié)果正確

(5)符號(hào)數(shù)-3-41001V=0,N=l,負(fù)數(shù),結(jié)算E確

(6)符號(hào)數(shù)-5-40111V=l,N=0,負(fù)溢出,結(jié)

果不正確

10.計(jì)算機(jī)內(nèi)是如何表示+進(jìn)制數(shù)的?它有哪幾種表示方法?

用4位二進(jìn)制數(shù)表示1位+進(jìn)制數(shù),其中有6種非法代碼(比如8421碼中的1010B~

11UB)不用。壓縮的BCD數(shù),及非壓縮的BCD數(shù)(包括ASCII數(shù))。

I3.用+進(jìn)制BCD碼計(jì)算X=35+46,Y=35-46,Z=45+57,說(shuō)明運(yùn)算過(guò)程并解釋結(jié)

果。

353545

46-46+57

7BEF9C

06-66+66(+進(jìn)制修正)

818902

C=0,正確C=l,溢出C=1,溢出

14賽2的補(bǔ)碼兇補(bǔ)+[-Y]補(bǔ)來(lái)計(jì)算[X-Y]補(bǔ)一樣,試用"+的補(bǔ)碼”來(lái)計(jì)算1.13中的Y,

并解釋所得結(jié)果。

因?yàn)?46的"+的補(bǔ)碼"是54(=100-46),所以35-46=35+(54)的補(bǔ),計(jì)

算如下:

35

+54

89且C=1(補(bǔ)碼加時(shí),無(wú)進(jìn)位表示有"借位")

若把89看成"+的補(bǔ)碼"表示的符號(hào)數(shù),則它表示:-11(=-(100-89)%

19.若A=01000011B,說(shuō)明用什么運(yùn)算可完成下述操作:

(1)把A的第0、2、4、6位變反;

(2)把A的第1、2、3位清零;

(3)把A的第4、5、6位置1;

(1)XORA,01010101B

(2)ANDA,11110001B

(3)ORA,01110000B

第2章習(xí)題參考解答

1.8086處理器內(nèi)部一般包括哪些主要部分?

8086處理器與其他處理器一樣,其內(nèi)部有算術(shù)邏輯部件、控制與定時(shí)部件、總線與總

線接口部件、寄存器陣列等。按功能結(jié)構(gòu)可分為兩部分,即總線接口單元(BIU)與執(zhí)行

單元(EU)。BIU主要包括段寄存器、內(nèi)部通信寄存器、指令指針、6字節(jié)指令隊(duì)列、20

位地址加法器和總線控制邏輯電路。EU主要包括通用寄存器陣列、算術(shù)邏輯單元、控

制與定時(shí)部件等。

2.什么是總線?T殳微機(jī)中有哪些總線?

所謂總線是指計(jì)算機(jī)中傳送信息的一組通信導(dǎo)線,它將各個(gè)部件連接成一個(gè)整體。在

微處理器內(nèi)部各單元之間傳送信息的總線稱為片內(nèi)總線;在微處理器多個(gè)外部部件之間

傳送信息的總線稱為片外總線或外部總線。外部總線又分為地址總線、數(shù)據(jù)總線和控制

總線。隨著計(jì)算機(jī)技術(shù)的發(fā)展,總線的概念越來(lái)越重要。微機(jī)中常用的系統(tǒng)總線有PC

總線、ISA總線、PQ總線等。

3.什么是堆棧?它有什么用途?堆棧指針的作用是什么?

堆棧是一個(gè)按照后進(jìn)先出的原則存取數(shù)據(jù)的部件,它是由棧區(qū)和棧指針組成的。堆棧的

作用是:當(dāng)主程序調(diào)用子程序、子程序調(diào)用子程序或中斷時(shí)轉(zhuǎn)入中斷服務(wù)程序時(shí),能把

斷點(diǎn)地址及有關(guān)的寄存器、標(biāo)志位及時(shí)正確地保存下來(lái),并能保證逐次正確地返回。堆

棧除了有保存數(shù)據(jù)的棧區(qū)外,還有一個(gè)堆棧指針SP,它用來(lái)指示棧頂?shù)奈恢谩H羰?向

下生成"的堆棧,隨著壓入堆棧數(shù)據(jù)的增加,棧指針SP的值減少。但SP始終指向棧

頂。

4.在8086CPU中,F(xiàn)R寄存器有哪些標(biāo)志位?分別說(shuō)明各位的功能。

8086CPU中設(shè)置了一個(gè)16位的標(biāo)志寄存器FR,其中用了9位,還有7位保留。9

位中有3位作為控制標(biāo)志,6位作為狀態(tài)標(biāo)志。

IF:中斷控制標(biāo)志。當(dāng)IF=1時(shí),允許可屏蔽中斷請(qǐng)求;當(dāng)IF=0時(shí),禁止可屏蔽中斷

請(qǐng)求。

TF:單步運(yùn)行標(biāo)志。當(dāng)TF=1,單步運(yùn)行;TF=0,連續(xù)運(yùn)行程序。

DF:方向標(biāo)志。當(dāng)DF=0,串操作時(shí)地址按增量修改;DF=1,地址按減量修改。

SF:符號(hào)(負(fù)數(shù))標(biāo)志。當(dāng)運(yùn)算結(jié)果的最高位為1(負(fù)數(shù))時(shí),SF=1;反之SF=0。

ZF:零標(biāo)志。當(dāng)運(yùn)算結(jié)果為0,貝UZF=1;否貝UZF=0。

AF:輔助進(jìn)位/借位標(biāo)志。當(dāng)算術(shù)運(yùn)算時(shí)低4位有進(jìn)位/借位,則AF=1;否則AF

0。AF主要用于BCD碼運(yùn)算中進(jìn)行結(jié)果調(diào)整。

PF:奇偶標(biāo)志。當(dāng)運(yùn)算結(jié)果低8位中1的個(gè)數(shù)為偶數(shù)時(shí)PF=1;否則PF=0。

CF:進(jìn)位/借位標(biāo)志。當(dāng)算術(shù)運(yùn)算結(jié)果最高位有進(jìn)位/借位時(shí),CF=1;否則CF=0。

邏輯運(yùn)算時(shí)CF=0,循環(huán)移位指令也影響CF標(biāo)志。

OF:溢出標(biāo)志。當(dāng)符號(hào)數(shù)算術(shù)運(yùn)算結(jié)果有溢出時(shí)0F=1;否則0F=0。

5.在8086CPU中,有哪些通用寄存器和專用寄存器?試說(shuō)明專用寄存器的作用。

8086CPU中有4個(gè)16位的通用寄存器,即AX、BX、CX、DX。每個(gè)16位寄存器又

可分為2個(gè),共8個(gè)8位寄存器:AH、AUBH、BL、CH、CL、DH、DL。

4個(gè)段寄存器(即代碼段寄存器CS、數(shù)據(jù)段寄存器DS、堆棧段寄存器SS和附加段寄存

器ES)用來(lái)存放各段的起始地址。FR用來(lái)存放標(biāo)志。IP用來(lái)存放程序地址的偏移量,

它不能提供給程序員編程。SP是堆棧指針,專門(mén)用來(lái)指示堆棧位置。BP為基址指針,

作為基址寄存器使用,它與變址寄存器SI、DI配合作為一個(gè)尋址方式。BP主要用來(lái)訪

問(wèn)堆棧段中的數(shù)據(jù)。

6.若CS=8000H,試說(shuō)明現(xiàn)行代碼段可尋址的存儲(chǔ)空間范圍。

若CS=8000H,現(xiàn)行代碼段可尋址的存儲(chǔ)空間范圍為80000H~8FFFFH。

7.設(shè)現(xiàn)行數(shù)據(jù)段位于存儲(chǔ)器的B0000H~BFFFFH,試說(shuō)明DS段寄存器的內(nèi)容。

DS=B000H

8.設(shè)雙字12345678H的起始地址為A001H,試說(shuō)明這個(gè)雙字在存儲(chǔ)器中是如何存放的。

期止RAM

該雙字在存儲(chǔ)器中的存A0001H78放如下:

A0002H56

A0003H34

A0004H12

9.說(shuō)明8086的EU和BIU的主要功能。

8086CPU的BIU對(duì)外提供16位雙向數(shù)據(jù)總線和20位地址總線。它負(fù)責(zé)完成所有的

外部總線操作,即完成取指令、指令排隊(duì)、讀與寫(xiě)操作、地址轉(zhuǎn)換和總線控制。

執(zhí)行單元EU的主要功能是完成指令譯碼與執(zhí)行指令工作。EU從BIU的指令隊(duì)列輸出

端取得指令,對(duì)指令的代碼進(jìn)行譯碼,產(chǎn)生操作數(shù)地址并將其傳送給BIU,向BIU申

請(qǐng)完成存儲(chǔ)器或I/。的讀寫(xiě)周期,對(duì)操作數(shù)進(jìn)行指令規(guī)定的操作。在指令執(zhí)行期間,

EU測(cè)試標(biāo)志位,根據(jù)指令執(zhí)行的結(jié)果修改標(biāo)志位。若指令隊(duì)列是空的,EU等待下一

次取得指令字節(jié),且修改指令隊(duì)列的輸出指針。EU有一個(gè)16位的ALU,專門(mén)用來(lái)對(duì)

操作數(shù)進(jìn)行算術(shù)和邏輯運(yùn)算。

10.說(shuō)明8086CPU組成的系統(tǒng)中為什么必須使用地址鎖存器?

8086的數(shù)據(jù)總線和低16位地址總線是采用分時(shí)復(fù)用的。當(dāng)執(zhí)行存儲(chǔ)器讀寫(xiě)或I/O讀

寫(xiě),在CPU總線周期的T1狀態(tài)時(shí),作地址總線輸出(A15-A0),在其他狀態(tài)均作為

雙向數(shù)據(jù)總線使用。地址總線的高4位A19~A16也是復(fù)用線,但他們是地址/狀態(tài)復(fù)

用線。為了使地址信息在整個(gè)總線周期中均保持有效地址,必須設(shè)置地址鎖存器把T1

狀態(tài)上輸出的20條地址信息進(jìn)行鎖存。

11.8086CPU的最大尋址范圍是多少?如何實(shí)現(xiàn)對(duì)整個(gè)地址空間尋址?

8086的存儲(chǔ)器最大尋址范圍為1M字節(jié)(地址為00000H~FFFFFH);I/O尋址的最

大范圍為64K(口地址為0000H~FFFFH),對(duì)1M存儲(chǔ)器的尋址是通過(guò)段寄存器來(lái)實(shí)

現(xiàn)的,每個(gè)存儲(chǔ)器段為64K字節(jié),1M字節(jié)的存儲(chǔ)器可以分為若干個(gè)64KB段,利用

段寄存器可尋址整個(gè)存儲(chǔ)空間。對(duì)I/。空間的尋址可使用直接尋址(對(duì)8位口地址);

也可使用DX進(jìn)行間接尋址(對(duì)16位口地址)。

16.在8086中,地址/數(shù)據(jù)復(fù)用信號(hào)是如何區(qū)分的?

在8086中,地址/數(shù)據(jù)復(fù)用信號(hào)是在時(shí)間上區(qū)分的。在總線周期的T1狀態(tài),CPU在

這些引腳上輸出存儲(chǔ)器或I/O端口地址,在T2、T3、T4狀態(tài)則輸出數(shù)據(jù)收發(fā)信號(hào)。

第3章習(xí)題及參考解答

1.指出下列各指令中源操作數(shù)和目的操作數(shù)的尋址方式。

(l)MOVDI,100

(2)MOVCX.100[SI]

(3)MOV[SI],AX

(4)ADDAX,[BX+DI]

(5)ANDAX,BX

(6)MOVDX,[1000]

(7)MOVBX,[BP+DI+100]

(8)PUSHF

(9)SUB[1050],CX

(10)ANDDH,[BP+4]

源操作數(shù)目的操作數(shù)

(1)立即尋址寄存器尋址

(2)變址尋址寄存器尋址

(3)寄存器尋址寄存器間接尋址

(4)基址加變址尋址寄存器尋址

(5)寄存器尋址寄存器尋址

(6)直接尋址寄存器尋址

(7)基址加變址尋址寄存器尋址

(8)寄存器尋址寄存器間接尋址

(9)寄存器尋址直接尋址

(10)變址尋址寄存器尋址

2.試述指令MOVAX,2000H和MOVAX,DS:[2000H]的區(qū)別?

解區(qū)別有三條:

(1)MOVAX,2000H對(duì)源操作數(shù)是立即尋址,而MOVAX.[2000H]對(duì)源操作數(shù)是

直接尋址;

(2)前者功能是把立即數(shù)2000H送入AX中,而后者是把內(nèi)存2000H單元與2001H

單元的內(nèi)容取出送入AX中;

(3)兩者的機(jī)器代碼不同,執(zhí)行速度也不同,前者執(zhí)行時(shí)間快,后者執(zhí)行時(shí)間慢。

4.若DS=4000H,BX=0800H,[40800H]=05AOH,[40802H]=2000H,求執(zhí)行

指令LDSSI,[BX]后,DS與SI中的內(nèi)容。若上題中的DS換成ES,其他條件不變,求執(zhí)

行指令LESDI,[BX]后,ES與DI中的內(nèi)容。

SI=05AOH,DS=2000H

DI=05AOH,ES=2000H

5.若AX=98ABH,BX=A8BCHO求執(zhí)行指令A(yù)DDAX,BX后,AX與BX中的內(nèi)容,

并指出SF,ZF,AF,PF,CF和OF的狀態(tài)。

解AX=4167H,BX=A8BCH,SFZFAFPFCFOF=0010UB.

6.若CX=6700H,DX=78FFH,CF=1O求分別執(zhí)行指令

(l)ADDCX,DX

(2)ADCCX,DX

(3)SUBCX,DX

(5)ANDCX,DX

(6)ORCX,DX

(7)X0RCX,DX

后,CX與DX寄存器中的內(nèi)容,并指出標(biāo)志寄存器SF,ZF,AF,PF,CF及OF的狀

態(tài)。

(1)CX=DFFFH,DX=78FFH,SFZFAFPFCFOF=100101B

(2)CX=E000H,DX=78FFH,SFZFAFPFCFOF=101101B

(3)CX=EEO1H,DX=78FFH,SFZFAFPFCFOF=101010B

(4)CX=EE00H,DX=78FFH,SFZFAFPFCFOF=1O111OB

(5)CX=6000H,DX=78FFH,SFZFAFPFCFOF=00x100B

(6)CX=7FFFH,DX=78FFH,SFZFAFPFCFOF=OOxlOOB

(7)CX=1FFFH,DX=78FFH,SFZFAFPFCFOF=OOx100B

7.若AX=FFFEH,BX=FFFDH,求執(zhí)行指令I(lǐng)MULBX后,DX與AX中的內(nèi)容。指

出標(biāo)志位OF與CF的狀態(tài)。

解AX=0006H,DX=0000H,OFCF=00B

8.若AL=75H,BL=48H,

Q)求執(zhí)行指令

ADDAL,BL

DAA

之后AL=?標(biāo)志AF=?CF=?并說(shuō)明BCD碼調(diào)整情況。

⑵若執(zhí)行指令SUBAL,BL與DAS后,情況又如何?

(1)AL=23H,AFCF=11B

(2)AL=27H,AFCF=10B

9.設(shè)X、Y、R、S、Z均為16位無(wú)符號(hào)數(shù)的變量。按已給定的表達(dá)式Z(X+Y)/(R-

S)TZ,有程序如下,試在空格處填入適當(dāng)?shù)闹噶?注:在加減過(guò)程中均無(wú)進(jìn)位和借位)。

MOVAX,X

MOVCX,R

SUBCX,S

MOVZ,AX

MOVZ+1,DX

HLT

①ADDAX,Y

②MULZ

③DIVCX

10.若有一個(gè)四字節(jié)數(shù),放在寄存器DX與AX中(DX中放高16位),要求這個(gè)4字節(jié)

數(shù)整個(gè)左移T立如何實(shí)現(xiàn)?右移一位又如何實(shí)現(xiàn)?

(1)DX與AX左移一位:

SHLAX,01

RCLDX,01

(2)DX與AX右移一位:

SHRDX,01

RCRAX,01

11.都IK字節(jié)的數(shù)據(jù)塊從偏移地址為1000H開(kāi)始的單元傳送到偏移地址為1400H

開(kāi)始的緩沖區(qū)。試用串傳送操作指令和一般傳送指令兩種方法各編一程序?qū)崿F(xiàn)。

Q)利用串操作指令編程如下:

MOVSI,1000H

MOVDI,1400H

MOVCX,400H

CLD

REPMOVSB

MOVAM,4CH

INT21H

(2)利用一般傳送指令編程如下:

MOVSI,1000H

MOVDI,1400H

MOVCX,400H

NEXT:MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

LOOPNEXT

MOVAH,4CH

INT21H

12.若在內(nèi)存緩沖區(qū)中有一個(gè)長(zhǎng)度為256個(gè)字節(jié)的數(shù)據(jù)塊,起始地址偏移量為2000H。

數(shù)據(jù)塊中的數(shù)據(jù)有正有負(fù),要求把其中的正負(fù)數(shù)分開(kāi).分別送至同段的兩個(gè)緩沖區(qū),存放正

數(shù)的緩沖區(qū)的起始地址偏移量為2100H,存放負(fù)數(shù)的緩沖區(qū)的起始地址偏移量為2200H.

試編一程序。

MOVSI,2000H

MOVCX,100H

XORDX,DX

LOOP:MOVAL,[SI]

ADDAL,0

JNSPLUS

INCDH

NEXT:INC

DECCX

JNZLOOP

JMPSTOP

PLUS:INCDL

JMPNEXT

STOP:MOV[2100H],DL

MOV[2200H],DH

MOVAH,4CH

INT21H

13.若SS=1000H,SP=1OOOH,AX=1234H,BX=5678H,Flag=21O3H,試說(shuō)明執(zhí)

行指令

PUSHBX

PUSHAX

PUSHF

POPCX

之后,SP=?SS=?CX=?并畫(huà)圖指出棧中各單元的內(nèi)容。

解SS=1000H,SP=0FFCH,CX=2103H

棧中各單元內(nèi)容如下:

地址RAM

0FFAH03

OFFBH21

OFFCH34

OFFDH12

OFFEH78

OFFFH56

1000HXX

14.若DS=1100H,SI=1000H,CS=1200H,IP=1OOH,[12000H]=2000H,

[12002]=15OOH,求執(zhí)行指令

(l)CALLFAR[SI]后CS與IP的內(nèi)容;

⑵CALL[SI]后CS與IP的內(nèi)容。

(1)CS=15OOII,IP=2000H

(2)CS=1200H,IP=2000H

15.若執(zhí)行指令I(lǐng)NT21H后,將轉(zhuǎn)到何處執(zhí)行程序,指出CS與IP的內(nèi)容。

解將轉(zhuǎn)到0:0086H和0:0084H處取出雙字作為CS與IP的值,再執(zhí)行程序。CS

的值為內(nèi)存單元0:0086H和0:0087H的內(nèi)容;IP為內(nèi)存單元0:0084H與0:0085H

的內(nèi)容。

16.編一程序使

(1)AX寄存器低4位清零;

(2)BX寄存器低4位置1;

(3)CX寄存器低4位變反;

(4)DX寄存器高3位不變,其余位清零。

(l)ANDAX,FFFOH

(2)ORBX,OOOFH

(3)X0RCX,000FH

(4)ANDDX,E000H

18.指出下列8086指令中哪些是錯(cuò)誤的,錯(cuò)在何處?

⑴MOVDL,BX

⑵MOVDS,2000H

(3)MOV[DI],[SI]

(4)MOVAX,[BX][BP]

(5)XCHGCX,[2400H]

(6)PUSHDH

(7)INAH,DX

(8)0UT01F0H,AX

(1)錯(cuò)。數(shù)據(jù)類型不匹配。

(2)錯(cuò)。立即數(shù)不能直接送往段寄存器。

(3)錯(cuò)。兩個(gè)內(nèi)存單元不能直接傳送數(shù)據(jù)。

(4)錯(cuò)。BX和BP部可作為基址寄存器,缺少變址寄存器。沒(méi)有基址加基址尋址方式。

⑸對(duì)。

(6)錯(cuò)。堆棧操作必須是16位數(shù)據(jù),DH是8位寄存器。

(7)錯(cuò)。輸入(IN)指令從端口讀出的數(shù)據(jù)需送給累加器AL或AX,送給AH不行。

(8)錯(cuò)。端口地址為16位時(shí),必須用DX間接尋址。

19.連續(xù)執(zhí)行以下指令,填寫(xiě)執(zhí)行指令的結(jié)果(MEM為存儲(chǔ)器物理地址)。

MOVAX,2280H

MOVCX.OFFOOH

MOVDS,AX

MOVSI,CX

ADDCX,AX;①cx=__H,CF=___B

MOV[SI],CX;②[SI]=__H.[SI+1]=__H

ADC[SI],AL;③[SI]=__H,MEM=__H

DECBYTE[SI];④[SI]=__H,ZFCFPF=___B

MOVAX,06

ADCAX,08;?AX=__H,CFAF=_B

AAA;@AX=__H,CFAF=_B

ADDAL,59H;⑦AL=__H,CFAF=___B

DAA;⑧AL=__H

ANDAL,OFH

MOVBX,-8

NEGBX;?BX=_

MOVDL,06

MULDL;?AX=__H

ORAX,OFFOOH

CWD;(n)AX=__H

IDIVBX;(12)AX=__H,DX=___H

MOVAH,4CH

INT21H

①CX=2180H,CF=1B

②[SI]=80H,[SI+1]=21H

?[SI]=01H,MEM=32700H

@[SI]=OOH,ZFCFPF=111B

⑤AX=OOOFH,CFAF=OOB

@AX=0105H,CFAF=11B

?AL=5EH,CFAF=OOB

⑧AL=64H

@BX=0008H

@AX=0018H

(n)AX=FF18H

(12)AX=FFE3H,DX=OOOOH

第4章習(xí)題及參考解答

1.試編一程序,把地址偏移量為100H單元開(kāi)始的256個(gè)單元分別寫(xiě)入OOH,01H,

02H,03H,…,F(xiàn)FH數(shù)據(jù)。

解源程序如下

DATASEGMENT

ORG100H

BUF1DB256DUP(?)

COUNTEQU$-BUF1

DATAENDS

STKSEGMENTSTACK

DB100DUP(?)

STKENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETBUF1;成LEASI,BUF1

MOVCX,COUNT

XORAL,AL;或MOVAL,OOH

NEXT:MOV[SI],AL

INCAL

INCSI

LOOPNEXT

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2.統(tǒng)計(jì)上題寫(xiě)入的數(shù)據(jù)塊中0元素、正元素、負(fù)元素的個(gè)數(shù),并分別把統(tǒng)計(jì)結(jié)果送入

上述數(shù)據(jù)塊之后的三個(gè)單元中。

DATASEGMENT

ORG100H

BUF1DBOOH,O1H.02H,…,OFEH,OFFH;共256個(gè)數(shù)據(jù)

COUNTEOU$-BUF1

DB3DUP(?)

DATAENDS

STKSEGMENTSTACK

DB100DUP(?)

STKENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETBUFl

MOCCX,COUNT

XORBX,BX;BL與BH分別存放正、負(fù)元素的個(gè)數(shù)

XORDH,DH;DH寄存器存放0元素個(gè)數(shù)

NEXT2:MOVAL,[SI]

CMPAL,0

JZZERO;若ZF=1』購(gòu)0,車拴ZERO,DH+1

JSNEGAT;若SF=0則為負(fù)數(shù),BH+1

INCBL;既不是0又不是負(fù),則為正數(shù),BL+1

JMPNEXT3

ZERO:INCDH;0的個(gè)數(shù)加1

JMPNEXT3

NEGAT:INCBH;負(fù)數(shù)個(gè)數(shù)加1

NEXT3:INCSI;修改地址指針SI

LOOPNEXT2;未完,繼續(xù)循環(huán)

MOV[SI],DH;存入0元素個(gè)數(shù)統(tǒng)計(jì)結(jié)果

INCSI

MOV[SI],BX;存入正、負(fù)數(shù)個(gè)數(shù)統(tǒng)計(jì)結(jié)果

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

4.把地址偏移量為STRG1單元開(kāi)始的128個(gè)單元的內(nèi)容傳送到地址偏移量為STRG2

開(kāi)始的單元中。

DATASEGMENT

STRGIDBXXH,XXH,XXH,….XXH;128個(gè)數(shù)據(jù)

COUNTEOU$-STRGI

STRG2DB128DUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETSTRG1

MOVDI,OFFSETSTRG2

MOVCX,COUNT

CLD

REPMOVSB

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

5.寄存器SI做地址指針,自SI所指的內(nèi)存單元開(kāi)始連續(xù)存放三個(gè)無(wú)符號(hào)數(shù)(以字為單

位),編一程序求它們的和,并將結(jié)果存放在這三個(gè)數(shù)之后的單元中。

DATASEGMENT

BUFDWXXH,YYH,ZZH

SUMDW?,?

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

STARTMOVAX,DATA

MOVDS,AX

MOVSI,OFFSETBUF

MOVDI,OFFSETSUM

MOVAX,[SI]

ADDAX,[SI+2]

MOV[DI],AX

MOVAX,0

ADDCAX,0

MOV[DI+2],AX

MOVAX,[DI]

ADDCAX,[SI+4]

MOV[DI],AX

MOVAX,0

ADDCAX,[DI+2]

MOV[DI+2],AX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

6.讀下面程序段,問(wèn):在什么情況下本段程序的執(zhí)行結(jié)果是AH=O?

START:INAL,5FH

MOVAH,0

JZBRCH

MOVAH,0

JMPSTOP

BRCH:MOVAH,OFFH

STOP:INT20H

解當(dāng)標(biāo)志寄存器的ZF=O時(shí),執(zhí)行結(jié)果AH=0。(JZ之前的兩條指令對(duì)零標(biāo)志沒(méi)有

影響)

7.下面語(yǔ)句在存儲(chǔ)器中分別為變量分配多少字節(jié)?

ONEDW10

TWODW4DUP(?),5

THREEDB2DUP(?,8DUP(O))

COUNTEQU10

FOURDDCOUNTDUP(?)

FIVEDB'HOWAREYOU?'

ONEDW10;為ONE分配2個(gè)字節(jié)

TWODW4DUP(?),5;為T(mén)WO分配10個(gè)字節(jié)

THREEDB2DUP(?,8DUP(O));為T(mén)HREE分配18個(gè)字節(jié)

COUNTEQU10;不給COUNT分配存儲(chǔ)單元

FOURDDCOUNTDUP(?);為FOUR分酉己40個(gè)字節(jié)

FIVEDB'HOWAREYOU?';為FIVE分配12個(gè)字節(jié)

8.數(shù)據(jù)定義語(yǔ)句如下所示:

FIRSTDB90H,5FH,6EH,69H

SECONDDB5DUP(?)

THIRDDB5DUP(?)

FORTHDBDUP(?)

自FIRST單元開(kāi)始存放的是一個(gè)四字節(jié)的十六進(jìn)制數(shù)(低位字節(jié)在前),要求:

Q)編一段程序?qū)⑦@個(gè)數(shù)左移兩位后存放到自SECOND開(kāi)始的單元(注意保留移出部

分);

(2)編一段程序?qū)⑦@個(gè)數(shù)右移兩位后存放到自THIRD開(kāi)始的單元(注意保留移出部分);

(3)編一段程序?qū)⑦@個(gè)數(shù)求補(bǔ)后存放到自FORTH開(kāi)始的單元。

DATASEGMENT

FIRSTDB90H,5FH,6EH,69H

SECONDDB5DUP(?)

THIRDDB5DUP(?)

FORTHDBDUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

CALLSUBP1

CALLSUBP2

CALLSUBP3

MOVAH,4CH

INT21H

SUBP1PROC

MOVSI,OFFSETFIRST

MOVDI,OFFSETSECOND

XORBL,BL

MOVCL,2

MOVAX,[SI]

MOVDX,[SI+2]

LOP1:SHLAX,1

RCLDX,1

RCLBL,1

DECCL

JNZLOP1

MOV[DI],AX

MOV[DI+2],DX

MOV[DIM],BL

RET

SUBP1ENDP

SUBP2PROC

MOVSI,OFFSETFIRST

MOVDI,OFFSETTHIRD

XORBL,BL

MOVCL,2

MOVAX,[SI]

MOVDX,[SI+2]

LOP2:SHRDX,1

RCRAX,1

RCRBL,1

DECCL

JNZLOP2

MOV[DI],BL

MOV[DI+1],AX

MOV[DI+3],DX

RET

SUBP2ENDP

SUBP3PROC

MOVSI,OFFSETFIRST

MOVDI,OFFSETFORTH

MOVAX,[SI]

MOVDX,[SI+2]

NOTAX

NOTDX

ADDAX,1

ADCDX,0

MOV[DI],AX

MOV[DI+2],DX

RET

SUBP3ENDP

CODEENDS

ENDSTART

9.指令語(yǔ)句ANDAX,OPD1ANDOPD2中,OPD1和OPD2是兩個(gè)已賦值的變量,

問(wèn)兩個(gè)AND操作分別在什么時(shí)間進(jìn)行?有什么區(qū)別?

解前面的AND是指令,在程序運(yùn)行時(shí)執(zhí)行,后面的AND是運(yùn)算符,在匯編的時(shí)候

由匯編程序計(jì)算,表達(dá)式計(jì)算結(jié)果出現(xiàn)在執(zhí)行程序中。二者的區(qū)別在于,前者是指令,程序

運(yùn)行時(shí)執(zhí)行,后者是運(yùn)算符,匯編時(shí)計(jì)算。

10.如下指令或程序是否有錯(cuò),若有錯(cuò),請(qǐng)指出錯(cuò)在哪里?

(1)KIEOU1024

MOVKI,AX

(2)MOVDS,100

MOV[1000],[2000]

(3)IMPDB?

MOVIMP,AX

(4)A1DB?

A2DB10

I

I

I

CMPAl,A2

(5)將1000送入XI單元,用如下程序:

XIDB?

I

I

I

MOVBX,XI

MOV[BX],1000

(l)MOVKI,AX錯(cuò)。因?yàn)镵I為立即數(shù),它不能作為目的操作數(shù)。

(2)這兩條指令都是錯(cuò)的。第一條立即數(shù)不能直接送給段寄存器;第二條兩個(gè)操作數(shù)不

能同時(shí)為內(nèi)存操作數(shù)。

(3)MOVIMP,AX錯(cuò)。兩操作數(shù)類型不匹配,IMP是一字節(jié)內(nèi)存單元,而AX寄存

器中為16位數(shù)據(jù)。

(4)CMPAl,A2錯(cuò)。兩個(gè)操便A1與A2不能同時(shí)為內(nèi)存操作數(shù)。

(5)M0V[BX],1000錯(cuò)。兩操作數(shù)類型不匹配,[BX]只定義了一字節(jié)單元,而1000

是16位數(shù)據(jù)。

11.8086匯編語(yǔ)言程序中段的類型有幾種?各段如何定義?段定義語(yǔ)句中,定位類型、

組合類型、類別各起什么作用?各有什么含義?

解8086匯編語(yǔ)言中,段的類型有三種,即代碼段、堆棧段、數(shù)據(jù)段(附加數(shù)據(jù)段可歸

屬于數(shù)據(jù)段)。各段可用段定義語(yǔ)句(SEGMENT與ENDS)和段名賦給段寄存器語(yǔ)句

(ASSUME)來(lái)定義。段定義語(yǔ)句中,定位類型表示此段的起始邊界要求,可允許4種段的起

始邊界,即PAGE、PARA、WORD或BYTE。它們分別表示段的起始值為以頁(yè)、節(jié)、字、

字節(jié)為邊界,若此項(xiàng)省略,則默認(rèn)值為PARA。組合類型用來(lái)告訴連接程序本段與其他段的

關(guān)系,分別為NONE、PUBLIC.COMMON.AT表達(dá)式、STACK或MEMORY。每一種

的含義請(qǐng)參看主教材。類別是連接程序(UNK)需要的。它可以是任何合法的名稱,必須用單

引號(hào)括起來(lái),連接程序只使同類別的段發(fā)生關(guān)聯(lián)。典型類別如‘CODE'、'STACK'。

12.使用DOS功能調(diào)用0AH從鍵盤(pán)輸入40個(gè)字符的字符串并將其送入一輸入緩沖

區(qū)。在按下Enter鍵后,顯示這些字符。

NAMEKBDINPUT

CODESEGMENT

ASSUMECS:CODE,DS:CODE

ORG100H

START:JMPBEGIN

BUFDB41

NUMBDB?

CHARSDB41DUP(?)

MSG1DB'Typeanything,followedbyenter.',ODH,OAH,'$'

MSG2DBODH,OAH,'ContentsoftheKBDinputbuf:',ODH,OAH,'$'

BEGIN:MOVAX,CS

MOVDS,AX

MOVDX,OFFSETMSG1

MOVAH,9

INT21H

MOVDX,OFFSETBUF

MOVAH,OAH

INT21H

MOVDX,OFFSETMSG2

MOVAH,9

INT21H

XORBX,BX

MOVBL,NUMB

MOVCHARS[BX],'$'

MOVDX,OFFSETCHARS

MOVAH,9

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

說(shuō)明

本題把數(shù)據(jù)區(qū)放在代碼段中,沒(méi)有單獨(dú)定義數(shù)據(jù)段。并且用ORG100H語(yǔ)句把程序起

始地址的偏移量放在100H開(kāi)始的單元,用JMPBEGIN指令跳過(guò)數(shù)據(jù)區(qū),這樣可以把該程

序經(jīng)匯編、連接后的執(zhí)行程序(.EXE)用EXE2BIN軟件生成.COM文件。

或:

DATASEGMENT

BUFDB41

NUMBDB?

CHARSDB41DUP(?)

MSG1DB'Typeanything,followedbyenter.",ODH,OAH,'$'

MSG2DBODH,OAH,'ContentsoftheKBDinputbuf:',ODH,OAH,

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMSG1

MOVAH,9

INT21H

MOVDX,OFFSETBUF

MOVAH,OAH

INT21H

MOVDX,OFFSETMSG2

MOVAH,9

INT21H

XORBX,BX

MOVBL,NUMB

MOVCHARS[BX],'$'

MOVDX,OFFSETCHARS

MOVAH,9

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

13.某軟件共可接收10個(gè)鍵盤(pán)命令(分別為A,B,C,…,J),完成這10個(gè)命令的程

序分別為過(guò)程P0,Pl,...,P9O編一程序從鍵盤(pán)接收命令,并轉(zhuǎn)到相應(yīng)的過(guò)程去執(zhí)行。要

求用兩種方法:

Q)用比較、轉(zhuǎn)移指令實(shí)現(xiàn);

(2)用跳轉(zhuǎn)表實(shí)現(xiàn)。

Q)用比較、轉(zhuǎn)移指令實(shí)現(xiàn)

CODESEGMENT

ASSUMECS:CODE

ORG100H

START:JMPBEGIN

MSGDB正rrorcharacter!',ODH,OAH,

BEGIN:MOVAX,CS

MOVDS,AX

MOVAH,1

INT21H

CMPAL,'A'

JZPSO

CMPAL,'B'

JZPSI

CMPAL,'C

JZPS2

CMPAL,'D'

JZPS3

CMPAL,'E'

JZPS4

CMPAL,'F

JZPS5

CMPAL,'G'

JZPS6

CMPAL,'H'

JZPS7

溫馨提示

  • 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)論