微機(jī)原理與接口技術(shù)課后答案黃玉清版_第1頁
微機(jī)原理與接口技術(shù)課后答案黃玉清版_第2頁
微機(jī)原理與接口技術(shù)課后答案黃玉清版_第3頁
微機(jī)原理與接口技術(shù)課后答案黃玉清版_第4頁
微機(jī)原理與接口技術(shù)課后答案黃玉清版_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、習(xí)題一 概 述主要內(nèi)容:計算機(jī)系統(tǒng)的組成和各部分的作用,微型計算機(jī)組成,微處理器的結(jié)構(gòu);計算機(jī)中的信息表示; 微機(jī)系統(tǒng)的結(jié)構(gòu)特點(diǎn)。1.1 簡述微型計算機(jī)的組成。【答】微型計算機(jī)是由微處理器、存儲器、輸入/輸出接口電路和系統(tǒng)總線構(gòu)成的裸機(jī)系統(tǒng)。1.2 微處理器、微型計算機(jī)和微型計算機(jī)系統(tǒng)三者之間有什么不同?【答】將運(yùn)算器與控制器集成在一起,稱為微處理器。微處理器是微處理器的核心。微型計算機(jī)是由微處理器、存儲器、輸入/輸出接口電路和系統(tǒng)總線構(gòu)成的裸機(jī)系統(tǒng)。微型計算機(jī)系統(tǒng)是以微型計算機(jī)為主機(jī),配上系統(tǒng)軟件和外設(shè)之后而構(gòu)成的計算機(jī)系統(tǒng)。三者之間是有很大不同的,微處理器是微型計算機(jī)的一個組成部分,而微型

2、計算機(jī)又是微型計算機(jī)系統(tǒng)的一個組成部分。 1.3 CPU在內(nèi)部結(jié)構(gòu)上由哪幾部分組成?CPU應(yīng)具備什么功能?【答】CPU在內(nèi)部結(jié)構(gòu)上由算術(shù)邏輯部件(ALU);累加器和通用寄存器組;程序計數(shù)(指令指針)、指令寄存器和譯碼器;時序和控制部件幾部分組成。不同CPU的性能指標(biāo)一般不相同,但一般CPU應(yīng)具有下列功能:可以進(jìn)行算術(shù)和邏輯運(yùn)算;可保存少量數(shù)據(jù);能對指令進(jìn)行譯碼并執(zhí)行規(guī)定的動作;能和存儲器、外設(shè)交換數(shù)據(jù);提供整個系統(tǒng)所需要的定時和控制;可以響應(yīng)其它部件發(fā)來的中斷請求。1.4 累加器和其他通用寄存器相比有何不同?【答】累加器是比較特殊的通用寄存器。它在某些指令執(zhí)行前,可以保存一源操作數(shù),還在執(zhí)行后

3、又用來保存運(yùn)算結(jié)果,另外它一般也用來完成輸入/輸出指令。而通用寄存器則一般只用來保存參加運(yùn)算的數(shù)據(jù)、運(yùn)算的中間的結(jié)果以及用來保存地址。1.5 從傳輸?shù)男畔㈩愋投?,總線分為哪幾種類型?微型計算機(jī)采用總線結(jié)構(gòu)有什么優(yōu)點(diǎn)?【答】(1)分為地址總線,數(shù)據(jù)總線與控制總線三類,又稱三總線。(2)微型計算機(jī)的三總線結(jié)構(gòu)是一個獨(dú)特的結(jié)構(gòu)。采用總線結(jié)構(gòu),系統(tǒng)中各功能部件之間的相互關(guān)系,變成了各功能部件面向總線的單一關(guān)系。一個部件只要符合總線標(biāo)準(zhǔn),就可以連接到采用這種總線標(biāo)準(zhǔn)的系統(tǒng)中,使系統(tǒng)功能得到擴(kuò)展。 1.6 控制總線傳輸?shù)男盘柎笾掠心膸最?【答】控制總線用來傳輸控制信號,其中包括CPU輸出到存儲器和輸入/

4、輸出接口電路的控制信號,如讀信號、寫信號和中斷響應(yīng)信號等;還包括其它部件輸入到CPU的信號,比如,時鐘信號、中斷請求和準(zhǔn)備就緒信號。1.7數(shù)據(jù)總線和地址總線在結(jié)構(gòu)上有什么不同之處?如果一個系統(tǒng)的數(shù)據(jù)和地址合用一套總線或者合用部分總線,那么要靠什么來區(qū)分地址和數(shù)據(jù)?【答】從結(jié)構(gòu)上看數(shù)據(jù)總線是雙向的,而地址總線從結(jié)構(gòu)上看卻是單向的。如果一個系統(tǒng)的數(shù)據(jù)總線和地址總線合用一套總線或者合用部分總線,一般可利用時鐘,在總線上采用分時復(fù)用技術(shù)來區(qū)分地址和數(shù)據(jù),例如可在總線周期的若干個時鐘周期,約定某周期傳輸?shù)刂?、在另一周期傳輸?shù)據(jù)。1.8 將下列十進(jìn)制數(shù)轉(zhuǎn)換成8421BCD碼:1049 =0001 0000

5、 0100 1001 902=1001 0000 0010851.37=1001 0101 0001 . 0011 0111 0.6259=0000. 0110 0010 0101 1001 1.9 將下列各組數(shù)用八位的補(bǔ)碼相加:(+75)+(-6)+75補(bǔ)=0100 1011 -6 補(bǔ)=1111 1010+75補(bǔ)+ -6 補(bǔ)=1000 0110+1000 0110=0100 0101習(xí)題二 8086微處理器答案主要內(nèi)容:主要介紹80868088CPU內(nèi)部結(jié)構(gòu)。了解80X86CPU的特點(diǎn)。(1.2.1 8086 CPU在內(nèi)部結(jié)構(gòu)上由哪幾部分組成?其功能是什么? 【答】8086的內(nèi)部結(jié)構(gòu)分成兩部

6、分??偩€接口部件BIU,負(fù)責(zé)控制存儲器與I/O端口的信息讀寫,包括指令獲取與排隊(duì)、操作數(shù)存取等。執(zhí)行部件EU負(fù)責(zé)從指令隊(duì)列中取出指令,完成指令譯碼與指令的執(zhí)行行。2.2 8086的總線接口部件有那幾部分組成? 其功能是什么?【答】8086的總線接口部件主要由下面幾部分組成:4個段寄存器CS/DS/ES/SS,用于保存各段地址; 一個16位的指令指針寄存器IP,用于保存當(dāng)前指令的偏移地址; 一個20位地址加法器,用于形成20位物理地址;指令流字節(jié)隊(duì)列,用于保存指令;存儲器接口,用于內(nèi)總線與外總線的連接。2.3 8086的執(zhí)行單元(部件)由那幾部分組成?有什么功能?【答】8086的執(zhí)行單元部件主要

7、由下面幾部分組成:控制器、算數(shù)邏輯單元、標(biāo)志寄存器、通用寄存器組。(1)控制器,從指令流順序取指令、進(jìn)行指令譯碼,完成指令的執(zhí)行等。(2)算數(shù)邏輯單元ALU,根據(jù)控制器完成8/16位二進(jìn)制算數(shù)與邏輯運(yùn)算。(3)標(biāo)志寄存器,使用9位,標(biāo)志分兩類。其中狀態(tài)標(biāo)志6位,存放算數(shù)邏輯單元ALU運(yùn)算結(jié)果特征;控制標(biāo)志3位,控制8086的3種特定操作。(4)通用寄存器組,用于暫存數(shù)據(jù)或指針的寄存器陣列。2.4 8086內(nèi)部有哪些通用寄存器?【答】四個16位數(shù)據(jù)寄存器AX、BX、CX、DX,二個指針寄存器SP、BP, 二個變址寄存器SI、DI。這些寄存器使用上一般沒有限制,但對某些特定指令操作,必須使用指定寄

8、存器,可參考后面指令系統(tǒng)章節(jié)。2.5 8086內(nèi)部有哪些段寄存器?各有什么用途?【答】四個16位段寄存器:CS、DS、SS、ES,分別保存代碼段、數(shù)據(jù)段、堆棧段與擴(kuò)展段的段地址。2.6 8086CPU狀態(tài)標(biāo)志和控制標(biāo)志又何不同?程序中是怎樣利用這兩類標(biāo)志的? 8086的狀態(tài)標(biāo)志和控制標(biāo)志分別有哪些? 【答】(1)標(biāo)志分兩類:狀態(tài)標(biāo)志(6位),反映剛剛完成的操作結(jié)果情況??刂茦?biāo)志(3位),在8086特定指令操作中起控制作用。(2)利用狀態(tài)標(biāo)志可以掌握當(dāng)前程序操作的結(jié)果,例如了解是否產(chǎn)生進(jìn)位,是否溢出等。例如利用控制標(biāo)志可以控制程序的單步調(diào)試。(3)狀態(tài)標(biāo)志包括:包括零標(biāo)志ZF、符號標(biāo)志SF、奇偶

9、標(biāo)志PF、進(jìn)位標(biāo)志CF、輔助進(jìn)位標(biāo)志AF、溢出標(biāo)志OF??刂茦?biāo)志包括:單步運(yùn)行標(biāo)志TF、方向標(biāo)志DF與中斷允許標(biāo)志IF。2.7 8086/8088和傳統(tǒng)的計算機(jī)相比在執(zhí)行指令方面有什么不同?這樣的設(shè)計思想有什么優(yōu)點(diǎn)? 8086CPU執(zhí)行轉(zhuǎn)移指令時,指令隊(duì)列寄存器內(nèi)容如何變化?【答】(1)傳統(tǒng)的計算機(jī)一般按照取指令、指令譯碼與執(zhí)行指令的串行步驟工作。(2)在8086CPU中,指令的提取與執(zhí)行分別由總線接口部件BIU與執(zhí)行部件EU完成,兩個單元重疊并行工作,這種機(jī)制稱為流水線,這種工作方式有力的提高了CPU的工作效率。(3)8086CPU執(zhí)行轉(zhuǎn)移指令時,首先清空當(dāng)前指令隊(duì)列寄存器,然后從新地址取指

10、令重新填滿指令隊(duì)列。2.8 8086CPU的形成三大總線時,為什么要對部分地址線進(jìn)行鎖存?用什么信號控制鎖存?【答】 為了確保CPU對存儲器和I/O端口的正常讀/寫操作,要求地址和數(shù)據(jù)同時出現(xiàn)在地址總線和數(shù)據(jù)總線上。而在8086CPU中AD0AD15總線是地址/數(shù)據(jù)復(fù)用的,因此需在總線周期的前一部分傳送出地址信息,并存于鎖存器中,而用后一部分周期傳送數(shù)據(jù)。8086CPU中是通過CPU送出的ALE高電平信號來控制鎖存的。2.9 將兩數(shù)相加,即0100 1100加 0110 0101,CF、PF、AF、ZF、SF、OF各為何值?【答】0100 1100+0110 0101=10110001 CF=

11、0,PF=1,AF=1,ZF=0,SF=1,OF=12.10 存儲器的邏輯地址由哪幾部分組成?存儲器的物理地址是怎樣形成的?一個具有32位地址線的CPU,其最大物理地址為多少?【答】存儲器的邏輯地址由段地址與段內(nèi)偏移地址組成。存儲器的物理地址:將16位段地址左移4位后,加上16位段內(nèi)偏移地址,形成20位物理地址。一個具有32位地址線的CPU,其最大物理地址為=4*1024*1024*1024B=4GB。2.11 存儲器物理地址400A5H400AAH單元現(xiàn)有6個字節(jié)的數(shù)據(jù)分別為11H,22H,33H,44H,55H,66H,若當(dāng)前(DS)= 4002H,請說明它們的偏移地址值。如果要從存儲器中

12、讀出這些數(shù)據(jù),需要訪問幾次存儲器,各讀出哪些數(shù)據(jù)?【答】由于:物理地址=400A5H=段地址*16+偏移地址=40020H+偏移地址偏移地址=400A5-40020=85H 若以最少訪問次數(shù)而言,可以如下操作:從奇地址400A5H中讀出一個字節(jié)11H;從偶地址開始400A6H、400A7兩個單元讀出一個字3322H;從偶地址400A8H、400A9H兩個單元讀出一個字5544H;從偶地址400AAH中讀出一個字節(jié)66H。最少讀4次。2.12 在 8086中,邏輯地址FFFFH0001H、00A2H37F0H和B800H173FH的物理地址分別是多少?【答】(1)FFFFH*16+0001H=F

13、FFF0H+0001H=FFFF1H (2)00A20+37F0=4210H (3)B8000+173F=B973FH2.13 在 8088/8086中,從物理地址12388H開始順序存放下列三個雙字節(jié)的數(shù)據(jù),651AH, D761H和007BH,請問物理地址12388H1238DH6個單元中分別是什么數(shù)據(jù)?【答】物理地址12388H1238DH單元中的數(shù)據(jù)如下表:地址12388H12389H1238AH1238BH1238CH1238DH數(shù)據(jù)1AH65H61HD7H7BH00H2.14 8086/8088 CPU 有40條引腳,請按功能對它們進(jìn)行分類? 【答】 地址總線:AD0AD15,A1

14、6A19; 數(shù)據(jù)總線:AD0AD15;控制總線: ALE, , , , , , , HOLD, HLDA, INTR, , READY, RESET.2.15 80868088 CPU的地址總線有多少位?其尋址范圍是多少?【答】8086/8088CPU的地址總線均為20位,8086/8088CPU的尋址范圍為=1MB.2.16 8086/8088 有兩種工作方式,它們是通過什么方法來實(shí)現(xiàn)?在最大方式下其控制信號怎樣產(chǎn)生? 【答】引腳接至電源(+5V),則8086CPU處在最小組態(tài)(模式); 引腳接地,則8086CPU處在最大組態(tài)(模式)。在最大模式下,需要用外加電路來對CPU發(fā)出的控制信號進(jìn)行

15、變換和組合,以得到對存儲器和I/O端口的讀/寫信號和對鎖存器8282及對總線收發(fā)器8286的控制信號。2.17 8086 CPU工作在最小模式(單CPU)和最大模式(多CPU)主要特點(diǎn)是什么?有何區(qū)別?【答】最小模式接+5V,構(gòu)成小規(guī)模的應(yīng)用系統(tǒng),只有8086一個微處理器,所有的總線控制信號均為8086產(chǎn)生,系統(tǒng)中的總線控制邏輯電路,減少到最小; 不需總線控制器8288;適用于單一處理機(jī)系統(tǒng)。 最大模式接地,用于大型(中型)8086/8088系統(tǒng)中,系統(tǒng)總是包含有兩個或多個微處理器,其中一個主處理器就是8086或8088。其它的處理器稱協(xié)處理器,協(xié)助主處理器工作,需要總線控制器來變換和組合控制

16、信號, 需總線控制器8288; 適用于多處理機(jī)系統(tǒng)。2.18 8086/8088 I/O 的讀/寫周期時序與存儲器讀/寫周期的主要差異是什么?【答】在8086存儲器周期中,控制信號始終為高電平;而在I/O周期中,始終為低電平。2.19 CPU啟動時,有那些特征?如何尋找8086/8088系統(tǒng)的啟動程序?【答】在8088/8086系統(tǒng)中,CPU啟動后,處理器的標(biāo)志寄存器、指令指針寄存器IP、段寄存器DS、SS、ES和指令隊(duì)列都被清零,但是代碼段寄存器CS被設(shè)置為FFFFH。因?yàn)镮P=0000,而CS=FFFFH,所以,8088/8086將從地址FFFF0H開始執(zhí)行指令。通常,在安排內(nèi)存區(qū)域時,將

17、高地址區(qū)作為只讀存儲區(qū),而且在FFFF0H單元開始的幾個單元中放入一條無條件轉(zhuǎn)移指令,轉(zhuǎn)到一個特定的程序中,這個程序往往實(shí)現(xiàn)系統(tǒng)初始化、引導(dǎo)監(jiān)控程序或者引導(dǎo)操作系統(tǒng)等功能,這樣的程序叫做引導(dǎo)和裝配程序。2.20 8086和8088是怎樣解決地址線和數(shù)據(jù)線的復(fù)用問題的? ALE信號何時處于有效電平?【答】8086/8088采用時間分隔技術(shù)與地址鎖存技術(shù),通過地址鎖存允許信號ALE鎖存CPU送出的地址,有效解決地址線和數(shù)據(jù)線的復(fù)用問題。2.21 8086系統(tǒng)在最小模式時應(yīng)該怎樣配置?請畫出這種配置并標(biāo)出主要信號的連接關(guān)系.【答】8086在最小模式下的典型配置。見教材的圖2.7。 一片8284A,作

18、這時鐘發(fā)生器。3片8282或74LL373,用來作為地址鎖存器。2片8286/8287作為總線收發(fā)器。2.22 8086構(gòu)成系統(tǒng)分為哪兩個存儲體?它們?nèi)绾闻c地址、數(shù)據(jù)總線連接?【答】8086構(gòu)成系統(tǒng)分為偶地址存儲體和奇地址存儲體。偶地址存儲體:連接D7D0,A0=0時選通;奇地址存儲體:連接D15D8, =0,A0=1時選通。見教材圖2.11。2.23 信號和A0信號是怎樣的組合解決存儲器和外設(shè)端口的讀/寫操作的?這種組合決定了 8086系統(tǒng)中存儲器偶地址體及奇地址體之間應(yīng)該用什么信號區(qū)分?怎樣區(qū)分?【答】信號和A0的組合以及操作如下表。操 作引 腿00從偶地址開始讀/寫一個字10從偶地址單元

19、或端口讀/寫一個字節(jié)01從奇地址單元或端口讀/寫一個字節(jié)0110從奇地址開始讀/寫一個字 2.24 8086 CPU讀寫總線周期各包含多少個時鐘周期?什么情況下需要插入 TW 等待周期? 應(yīng)插入多少個Tw,取決于什么因素?什么情況下會出現(xiàn)空閑狀態(tài)Ti ?【答】8086CPU讀/寫總線周期包含4個時鐘周期。 當(dāng)CPU與慢速的存儲器或外設(shè)I/O端口交換信息,系統(tǒng)中就要用一個電路來產(chǎn)生READY信號,并傳遞給CPU的READY引腳。CPU在狀態(tài)的下降沿對READY信號進(jìn)行采樣。如果無效,那么,就會在之后插入等待狀態(tài)。插入的個數(shù)取決于CPU接收到高電平READY信號的時間。CPU在不執(zhí)行總線周期時,總

20、線接口部件就不和總線打交道,此時,進(jìn)入總線空閑周期。自測試: 1.選擇題:(1)某微機(jī)具有16M字節(jié)的內(nèi)存空間,其 CPU的地址總線應(yīng)有(E)條。 A26 B28 C20 D22 E24 (2) 80868088 CPU要求加到 RESET引腳上的復(fù)位正脈沖信號,其寬度至少要( 4 ) 個時鐘周期才能有效復(fù)位,如果是上電復(fù)位則要求正脈沖的寬度不少于( 50 )us 。 A4,50 B5,60 C4,70 D5,80 (3)當(dāng)RESET信號進(jìn)入高電平狀態(tài)時,將使80868088 CPU的( D )寄存器初始化FFFFH。 ASS BDS CES DCS (4) 80868088 CPU與慢速的存

21、儲器或I O接口之間,為了使傳送速度能匹配,要在(C)狀態(tài)之間插入若干等待周期Tw。 AT1 和T2 BT2 和T3 CT3 和T4 D隨機(jī)2. 填空題: (1) 80868088 CPU執(zhí)行指令中所需操作數(shù)地址由(尋址方式和地址寄存器)計算出( 16 )位偏移量部分送( IP ),由(段地址加上偏移量部分)最后形成一個( 20 )位的內(nèi)存單元物理地址。 (2) 80868088 CPU在總線周期的 T1 狀態(tài),用來輸出(20)位地址信息的最高( 4 )位,而在其它時鐘周期,則用來輸出(狀態(tài))信息。 (3) 80868088 CPU復(fù)位后,從(FFFF0H )單元開始讀取指令字節(jié),一般這個單元

22、在()區(qū)中,在其中設(shè)置一條(無條件轉(zhuǎn)移 )指令,使CPU對系統(tǒng)進(jìn)行初始化。 (4)8086系統(tǒng)的存儲體系結(jié)構(gòu)中,1M字節(jié)存儲體分( 兩 )個存儲體,每個存儲體的容量都是(512K )字節(jié),其中和數(shù)據(jù)總線D15D8相連的存儲體全部由(奇地址)單元組成,稱為高位字節(jié)存儲體,并用( 高電平 )作為此存儲體的選通信號。 (5)80868088系統(tǒng)中,可以有( )個段地址,任意相鄰的兩個段地址最短相距(16)個存儲單元,最長相距()存儲單元。(6)用段基值及偏移地址來指明一內(nèi)存單元地址稱為(物理地址 )。習(xí)題三 8086指令系統(tǒng)主要內(nèi)容: 8086指令系統(tǒng)。主要介紹8086的基本數(shù)據(jù)類型、尋址方式和指令

23、系統(tǒng),重點(diǎn)掌握8086指令系統(tǒng)的尋址方式、堆棧操作指令、算術(shù)運(yùn)算指令及其對標(biāo)志位的影響,串操作指令,控制傳送指令。1單選題:(1)執(zhí)行下面指令序列后,結(jié)果是(A)。MOV AL,82HCBWA、(AX)=0FF82H B、(AX)=8082H C、(AX)=0082H D、(AX)=0F82H(2)與MOV BX,OFFSET VAR指令完全等效的指令是( D )。A、MOV BX,VAR B、LDS BX,VARC、LES BX,VAR D、LEA BX,VAR(3)編寫分支程序,在進(jìn)行條件判斷前,可用指令構(gòu)成條件,其中不能形成條件的指令有( D )。A、CMP B、SUB C、AND D、

24、MOV(4)下面指令執(zhí)行后,改變AL寄存器內(nèi)容的指令是( D )。A、TEST AL,02HB、OR AL,ALC、CMP AL,BD、AND AL,BL(5)設(shè)DH=10H,執(zhí)行NEG DH指令后,正確的結(jié)果是( D )。A、(DH)=10H,CF=1B、(DH)=0F0H,CF=0C、(DH)=10H,CF=0D、(DH=0F0H,CF=1(6)設(shè)DS=8225H,DI=3942H,指令NEG BYTE PTRDI操作數(shù)的物理地址是( A )。A、85B92H B、86192H C、BB690H D、12169H(7)下列指令中,執(zhí)行速度最快的是( C )。A、MOV AX,100 B、M

25、OV AX,BX C、MOV AX,BX D、MOV AX,BX+BP28086 CPU執(zhí)行如下指令后的結(jié)果,以及標(biāo)志SF、AF、CF、OF的值。(1)MOV AL,0110 0100B SUB AL,58H ;(AL)=0CH,AF=1 DAS ;(AL)=06H, AF=1 ADD AL,89H ;(AL)=8FH, AF=0 DAA ;(AL)=95H,AF=1,SF=1結(jié)果: (AL)=95H, SF=1, AF=1, CF=0, OF=0(2)MOV AL,05H MOV BL,09H MUL BL ;(AX)=002DH, SF、AF、CF、OF=0AAA ; (AX)=0103H

26、 ;AAM ; ; (AX)=0405H結(jié)果: (AX)=0103H, CF=1 , SF=0、AF=1、OF=03分析執(zhí)行下列指令序列后的結(jié)果:MOVAL,10110101B ANDAL,00011111B;(AL)=0001 0101BORAL,11000000B;(AL)=1101 0101BXORAL,00001111B;(AL)=1101 1010BNOT AL ;(AL)=0010 0101B4假設(shè)(AL)=10101111B,CF=0,CL=2,寫出分別執(zhí)行下列指令后的結(jié)果以及標(biāo)志位CF、ZF、OF的值。(1)SHL AL,CL ;(AL)=1011 1100B, CF=0、ZF

27、=0、OF=1(2)SHR AL,CL ;(AL)=0010 1011B, CF=1、ZF=0、OF=0(3)SAR AL,CL ;(AL)=1110 1011B, CF=1、ZF=0、OF=0(4)ROL AL,CL ;(AL)=1011 1110B, CF=0、ZF=0、OF=1(5)RCR AL,CL ;(AL)=1011 1101B, CF=0、ZF=0、OF=1 5設(shè)(IP)= 3D8FH,(CS)=4050H,(SP)=0F17CH,當(dāng)執(zhí)行CALL 2000:0094H后,試求出IP、CS、SP的內(nèi)容,以及棧頂4個單元的內(nèi)容。【答】(CS)=2000H,(IP)=0094H, 棧頂

28、F178HF17BH連續(xù)4個單元的內(nèi)容:94, 3D,50,40。6設(shè)(DS)= 2000H,(BX)=1256H,(SI)=528FH,TABLE的偏移量=20A1H,(232F7H)=3280H,(264E5H)=2450H,執(zhí)行下述指令后IP的內(nèi)容?(1)JMP BX ;(IP)=1256H(2)JMP TABLEBX ; (IP)=3280H(3)JMP BXSI ;(IP)=2450H7設(shè)當(dāng)前的SP=1000H,執(zhí)行PUSHF指令后,SP=(0FFEH),若改為執(zhí)行INT 20H指令后,則SP=(0FFCH)。8設(shè)當(dāng)前(SS)=2010H,(SP)=FE00H,(BX)=3457H,

29、計算當(dāng)前棧頂?shù)奈锢淼刂窞槎嗌伲慨?dāng)執(zhí)行PUSH BX 指令后,棧頂?shù)刂泛蜅m?個字節(jié)的內(nèi)容分別是什么?【答】當(dāng)前棧頂指針(SP)=2FF00H,物理地址20100H+FE00H=2FF00H 當(dāng)執(zhí)行PUSH BX 指令后,棧頂指針(SP)=FE00-2=FDFEH,棧頂物理地址2FDFEH,棧頂2個字節(jié)的內(nèi)容分別3457H。9HLT指令用在什么場合?如CPU 在執(zhí)行HLT 指令時遇到硬件中斷并返回后,以下應(yīng)執(zhí)行哪條指令?【答】HLT用在使CPU處于暫停狀態(tài)而等待硬件中斷的場合。 在執(zhí)行HLT指令遇到硬件中斷并返回后將執(zhí)行HLT后面的一條指令。10為什么用増量指令或減量指令設(shè)計程序時,在這類指令后

30、面不用進(jìn)位標(biāo)志作為判斷依據(jù)?【答】増量指令或減量指令不影響進(jìn)位標(biāo)志CF。11中斷指令執(zhí)行時,堆棧的內(nèi)容有什么變化?中斷處理子程序的人口地址是怎樣得到的?【答】中斷指令執(zhí)行時,堆棧內(nèi)容變化如下:標(biāo)志寄存器被推入堆棧,且SP減2,然后CPU將主程序的下一條指令地址即斷點(diǎn)地址推入堆棧,即段值CS推入堆棧且SP減2,偏移量推入堆棧,且SP減2。中斷處理子程序的入口地址即中斷向量,對應(yīng)的中斷類型號的4倍即為中斷向量地址,在該地址處的4個字節(jié)內(nèi)容,高地址單元兩個字節(jié)為中斷入口地址的段地址,低地址單元兩個字節(jié)為中斷入口地址的偏移地址。12中斷返回指令I(lǐng)RET和普通子程序返回指令RET在執(zhí)行時,具體操作內(nèi)容什

31、么不同?【答】IRET從堆棧中依次彈出斷點(diǎn)處指令指針I(yè)P、代碼段CS內(nèi)容與標(biāo)志寄存器的值,而RET從堆棧中依次彈出斷點(diǎn)處指令指針I(yè)P值、代碼段CS內(nèi)容,不需要彈出標(biāo)志寄存器的值。13以下是格雷碼的編碼表:00000,10001,20011,30010,4011050111,60101,70100,81100,91101請用換碼指令和其它指令設(shè)計一個程序段,實(shí)現(xiàn)格雷碼往ASCII碼的轉(zhuǎn)換?!敬稹扛窭状aASCII碼數(shù)值000030H0000131H1001033H3001132H2010037H7010136H6011034H4011135H51000/1001/1010/1011/110038H

32、8110139H9TABLESEGMENTTAB_DA DB 30H,31H,33H,32H,37H,36H,34H,35H,0,0DB 0,0,38H,39HGRA DB 05H ASCII_DA DB ? TABLEENDSCODESEGMENTASSUME CS:CODE,DS:TABLESTART: MOV AX,TABLE MOV DS,AX MOV BX,OFFSET TAB_DA MOV AL,GRA XLATMOV ASCII_DA,ALCODEENDSENDSTART14將存放在0A00H單元和0A02H單元的兩個無符號數(shù)字節(jié)相乘,結(jié)果存放在地址為0A04H開始的單元中。【答

33、】參考程序:假設(shè)數(shù)據(jù)為字節(jié)MOVAL,0A00HMOVBL,0A02HMULBLMOV0A04,AX15編程計算(X+Y)*10)+Z)/X,X、Y、Z都是16位無符號數(shù),結(jié)果存在RESULT開始的單元?!敬稹繀⒖汲绦颍篗OVAX,XADD AX,YMOV BX,0AHMUL BX ;乘積在DX,AX中ADD AX,ZADC DX,0H ; 考慮進(jìn)位MOV BX,XDIV BX ;MOV RESULT, AXMOVRESULT+2, DXHLT16分別用一條語句實(shí)現(xiàn)下述指明的功能:(1)AX的內(nèi)容加1,要求不影響CF。( INC AX)(2)BX的內(nèi)容加1,要求影響所有標(biāo)志位。( ADDBX,

34、 1 )(3)棧頂內(nèi)容彈出送DI。( POP DI )(4)雙字變量AYD存放的地址指針?biāo)虴S和SI。( LES SI ,AYD )(5)將AX中數(shù),最高位保持不變,其余全部右移4位。( SAR AX, CL ;CL預(yù)置4)(6)將0400H單元中的數(shù),低4位置零,高4位保持不變。( AND BYTE PTR 0400H, 11110000B)(7)將BX中的數(shù),對高位字節(jié)求反,低位字節(jié)保持不變。(XOR BX ,0FF00H)(8)若操作結(jié)果為零轉(zhuǎn)向標(biāo)號GOON。( JZGOON )17檢測BX中第13位(D13),為0時,把AL置0,為1時,把AL置1?!敬稹繀⒖汲绦颍篢ESTBX,001

35、0 0000 0000 0000BJZZEROMOVAL,01HHLTZERO:MOVAL,0HLT18利用字串操作指令,將1000H10FFH單元全部清零?!敬稹繀⒖汲绦颍?CLDMOVDI,1000HMOVCX,100HMOVAL,0REPSTOSB19用串操作指令實(shí)現(xiàn),先將100H個字節(jié)數(shù)從2170H單元處搬到1000H單元處,然后從中檢索等于AL中字符的單元,并將此單元換成空格字符?!敬稹繀⒖汲绦颍?假設(shè)數(shù)據(jù)段與附加段的段寄存器值已經(jīng)設(shè)置為相同的數(shù)值。 CLD MOV CX,0100H MOV SI, 2170H MOV DI,1000H REP MOVSB MOV CX,0100H

36、MOV DI,1000H MOV AL, A ;假設(shè)要檢索的字符為A REPNZ SCASBJZ FOUNDJMP NOFOUNDFOUND: DEC DIMOV BYTE PTR DI, NOFOUND: HLT20用循環(huán)控制指令實(shí)現(xiàn),從1000H開始,存放有200個字節(jié),要查出字符#(ASCII碼為23H),把存放第一個#的單元地址送入BX中。【答】參考程序:MOV DI,1000HMOV CX,200MOV AL,# DON: CMP AL, DIJEFOUND INC DI LOOP DON JMP NOFOUND FOUND: MOV BX,DI NOFOUND:HLT自測題:1 下

37、列指令中,有語法錯誤的指令是( )。A、MOV BX,BX+2B、MOV 2,BXC、MOV 1000H,BXD、MOV BX,22 下列指令中,隱含使用AL寄存器的指令有( )條。MUL、DIV、HLT、XLAT、CBW、IN、PUSHFA、2條B、3條C、4條D、5條3 輸入輸出指令中,數(shù)據(jù)寄存器由( )寄存器指出。A、AL/AXB、BXC、CXD、DX4 8088可直接尋址的空間最大為( )。A、640KBB、1MBC、512MBD、2MB5. 內(nèi)存單元1999H:0010H的段內(nèi)偏移地址為(2),物理地址為(3);若(BP)=0010H,用指令MOV AL,BP取出該單元的內(nèi)容,段寄存

38、器(4)的值應(yīng)為1999H。習(xí)題四 匯編語言程序設(shè)計主要內(nèi)容:匯編語言程序設(shè)計。主要介紹匯編語言程序的設(shè)計方法與編程原理,重點(diǎn)掌握算術(shù)運(yùn)算程序、字符串處理程序、碼制轉(zhuǎn)換程序、子程序設(shè)計程序、常用DOS和BIOS功能調(diào)用程序、匯編語言常用偽指令。4.1 分析執(zhí)行下列指令序列后的結(jié)果: 1)MOVAX,1234H MOVBX,00FFH ANDAX,BX【答】(AX)=0034H2)MOVAL,01010101B ANDAL,00011111B;(AL)=00010101B ORAL,11000000B;(AL)=11010101B XORAL,00001111B;(AL)=11011010B N

39、OTAL【答】(AL)=00100101B3)MOVDL,05H MOVAX,0A00H MOVDS,AX MOVSI,0H MOVCX,0FH AGAIN:INCSI CMPSI,DL LOOPNEAGAIN HLT 本程序?qū)崿F(xiàn)了什么功能?【答】在以0A001H開始的15個單元中查找05H。4)MOVAX,DSEGADDR MOVDS, AX MOVES,AX MOVSI, OFFSET B1ADDR MOVDI,OFFSET B2ADDR MOVCX,N CLD REPMOVSB HLT 本程序?qū)崿F(xiàn)了什么功能?【答】 將B1ADDR中N個字節(jié)數(shù)據(jù)傳送到B2ADDR開始的15個存儲單元 。

40、5)MOVAX, 0H MOVDS,AX MOVES, AX MOVAL,05H MOVDI,0A000H MOVCX,0FH CLD AGAIN:SCASBLOOPNEAGAIN HLT本程序?qū)崿F(xiàn)了什么功能?【答】從地址0A000H開始的15個單元中查找字節(jié)型數(shù)據(jù)05H,用條件循環(huán)LOOPNZ,控制數(shù)據(jù)05H的查找。4.2 閱讀程序:1).CLD LEADI,0100H MOVCX, 0080H XORAX, AX REPSTOSW 本程序?qū)崿F(xiàn)了什么功能?【答】將DS中起始地址為0100H的128個字節(jié)單元清零。2).MOVAL, 08H SALAL,01H;(AL)=00010000H M

41、OVBL, AL MOVCL ,02H SALAL,CL;(AL)=01000000H ADDAL,BL;(AL)=01010000H 本程序?qū)崿F(xiàn)了什么功能? 【答】 將AL中的內(nèi)容乘以10。4.3 試分析下列程序完成什么功能? MOVDX,3F08HMOVAH,0A2HMOVCL,4 SHLDX,CL;(DX)=F080H MOVBL,AH SHLBL,CL;(BL)=20H SHRBL,CL;(BL)=02H ORDL,BL;(DL)=82H 【答】將DX中的低4位數(shù)據(jù)8H分離出來,將AH中的低4位數(shù)據(jù)2H分離出來,合并為82H存放在DL。4.4 已知程序段如下: MOVAX,1234H

42、MOVCL,4 ROLAX,CL DECAX MOVCX,4MULCX 試問:(1)每條指令執(zhí)行后,AX寄存器的內(nèi)容是什么?(2)每條指令執(zhí)行后,CF,SF及ZF的值分別是什么?(3)程序運(yùn)行結(jié)束時,AX及DX寄存器的值為多少? 【答】MOVAX,1234H; (AX)=1234H, CF=SF=ZF=0 MOVCL,4 ROLAX,CL; (AX)=2341H ,CF=1,SF=ZF=0 DECAX; (AX)=2340H,CF=1,SF=ZF=0 MOVCX,4;MULCX;(AX)= 8000H ,CF=ZF=0,SF=1,DX=04.5 試分析下列程序段: ADDAX,BX JNCL2

43、 SUBAX,BX JNCL3 JMPSHORTL5 如果AX、BX的內(nèi)容給定如下: AXBX (1)14C6H80DCH (程序轉(zhuǎn)向 L2)(2)B568H54B7H (程序轉(zhuǎn)向 SHORTL5 )問該程序在上述情況下執(zhí)行后,程序轉(zhuǎn)向何處? 【答】(1) 程序轉(zhuǎn)向 L2。(2) 程序轉(zhuǎn)向 SHORTL5。4.6 以下為某個數(shù)據(jù)段,試問各個變量分別占多少字節(jié),該數(shù)據(jù)段共占多少字節(jié)? DATASEGMENT VAR1DW9 ;2字節(jié)VAR2DD10 DUP(?),2 ;44字節(jié)VAR3DB2 DUP(?,10 DUP(?) ;22字節(jié)VAR4DB HOW ARE YOU' ;11字節(jié)DA

44、TA ENDS【答】該數(shù)據(jù)段共占79字節(jié)。4.7 下列語句在存儲器中分別為變量分配多少字節(jié)空間?并畫出存儲空間的分配圖。 VAR1DB10,2 ;2字節(jié)VAR2DW5DUP(?),0 ;12字節(jié)VAR3DBHOW ARE YOU?',$' ;13字節(jié)VAR4DD-1,1,0 ;2字節(jié)Var1Var2Var3Var410?FFH2?U00H?O00H?Y00H?01H?E00H?R00H?A00H?00H?W00H0O00H0H00H$4.8 編寫一段程序,比較兩個5字節(jié)的字符串OLDS和NEWS,若相同,在RESULT置0,否則置0FFH。【答】參考程序:DATA SEGMEN

45、T OLDSDB 1,2,3,4,5 NEWSDB 1,2,3,4,'A' N = $-NEWS RESULTDB 0DATAENDSCODESEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX ;初始化 MOV SI,OFFSET OLDS MOV DI,OFFSET NEWS MOV CX,N DON: MOV AL, SI CMP AL, DI JNZ NOEQU ;串不相等轉(zhuǎn) INC SI INC DI LOOP DON MOV AL,0 JMP OUTPUTNOEQU:MOV AL,0FFH OUTPUT

46、:MOV RESULT,ALSTOP:JMP STOP ;程序陷阱CODE ENDS END START4.9 編程求和Y=A1 + A2 + . + A100 。其中Ai為字節(jié)變量?!敬稹繀⒖汲绦颍篋ATASEGMENTTABLEDW 1111H,2222H,3333H,2222HCOUNT EQU $-TABLEYALDW ?YAHDW ?DATAENDS CODE SEGMENTMIANPROCFARPUSHDSMOVAX, 0PUSHAXMOVAX, DATAMOVDS, AXMOVDX,0XORAX, AX;清AXMOVBX, OFFSET TABLEMOVCX, 4LP: ADDA

47、X, BX;求和ADC DX,0 INCBXINCBX;指向下一個數(shù)LOOPLP;未加完,繼續(xù)MOVYAL,AX;存和MOVYAH,DXMAINENDPCODEENDSEND START4.10 內(nèi)存中以FIRST和SECOND開始的單元中分別存放著兩個16位組合的十進(jìn)制(BCD碼)數(shù),低位在前。編程序求這兩個數(shù)的組合的十進(jìn)制和,并存到以THIRD開始的單元。【答】參考程序:1325+9839=?DATA SEGMENTFIRSTDB 05H,02H,03H,01H ;SECONDDB 09H,03H, 08H,09H;THIRDDB 20 DUP (?)DATAENDSSTACKSEGMENTST1DB 100 DUP (SA)TOP1 EQU $ - ST1STACK ENDSCODESEGMENTASUMMECS:CODE,DS:DATA,SS:STACKMAINPROCFARSTART:MOVAX, DAT;初始化數(shù)據(jù)段MOVDS, AXMOVAX, STACK;初始化堆棧段MOVSS, AXMOVAX, TOP1MOVSP, AXMOVCX, 4;計算4次MOVBX, OFFSETDAT1;取數(shù)據(jù)地址MOVSI

溫馨提示

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

評論

0/150

提交評論