微型計算機原理應(yīng)用第四版答案_第1頁
微型計算機原理應(yīng)用第四版答案_第2頁
微型計算機原理應(yīng)用第四版答案_第3頁
微型計算機原理應(yīng)用第四版答案_第4頁
微型計算機原理應(yīng)用第四版答案_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第1章習(xí)題1.1 將下列二進制數(shù)轉(zhuǎn)換為十進制數(shù)和十六進制。(1)1101(2)=13=D(H)(2)11010(2)=26=1A(H)(3)110100(2)=52=34(H)(4)10101001(2)=169=A9(H)要點:從低位起,按每4位將對應(yīng)二進制轉(zhuǎn)換成十六進制。而不是通過十進制轉(zhuǎn)換。1.2 見上。1.3簡述3個門電路的基本元素在電路中對電平高低的作用。答:與、或、非。1.4 布爾代數(shù)有哪兩個特點?答:(1)值只有兩個;(2)只有與、或、反3種運算。1.5 布爾代數(shù)的“或運算”結(jié)果可用哪兩句話來歸納?其“與運算”又可歸納成哪兩句話“答:(1)“或運算”運算結(jié)果為有一真必為真,兩者皆

2、假才為假。(2)“與運算”有一假即為假,兩者皆真才為真。1.6 什么叫原碼、反碼及補碼?答:原碼就是一個數(shù)的機器數(shù)。反碼:將原碼每位取反,即為反碼。更準確的是:正數(shù)的反碼就等于它的原碼; 負數(shù)的反碼就是它的原碼除符號位外,各位取反。補碼:反碼加1就是補碼。更準確的是:正數(shù)的補碼就等于它的原碼; 負數(shù)的補碼就是它的反碼加1。 例:X1=100 1001 X2=100 1001則 : X1原 = 0100 1001 X1反 = 0100 1001X1補= 0100 1001 X2原 = 1100 1001 X2反 = 1011 0110 X2補 = X2反+1= 1011 01111.7 為什么需

3、要半加器和全加器,它們之間的主要區(qū)別是什么?答:(1)因為加法的第一位沒有進位,所以用半加器即可;而第二位起可能有進位,故需要考慮全加器;(2)兩者的區(qū)別是半加器為雙入雙出,全加器為三入雙出。1.8 用補碼法寫出下列減法的步驟:(1)1111(2)-1010(2)=?(2)=?(10)兩個數(shù)相減其實就是第一個數(shù)與第二個數(shù)的補碼相加。第一個數(shù)1111為正數(shù),其原碼為1111第二個數(shù)為1010),其機器碼(原碼)為:1010,反碼為0101,補碼為:0110兩者相加: 1111 + 0110 10101將最高位的進位1刪去,得結(jié)果為10101,即為5(10)這是按書上的簡單做法。按最正規(guī)的方法做如

4、下:若考慮兩個數(shù)屬于帶符號數(shù),第一個是正數(shù),補碼與原碼都為01111;第二個數(shù)是負數(shù),原碼為11010,反碼為10101,補碼為10101+1=10110第一個數(shù)與第二個數(shù)的補碼相加,即為: 01111 + 10110 100101將最高位的進位刪去,得結(jié)果為00101,即為5(10)建議用第二種方法為佳。答:(2)1100(2)-0011(2)=?(2)=?(2)答:按上述所講的正規(guī)方法做。第一個數(shù)的補碼=原碼=01100;第二個數(shù)的原碼(即機器碼)為10011,其反碼為11100,其補碼為11101;兩個數(shù)的補碼相加,即為: 01100 + 11101 = 101001將最高位的進位1刪去

5、,得結(jié)果為01001,即為9(10)1.9 做出101011(2)+011110(2)的門電路圖并求其相加的結(jié)果。答:相加結(jié)果為: 101011 + 011110 = 1001001得結(jié)果為1001001(2)。(注:相加時不去掉最高位的進位)門電路圖略去。1.10 做出第1.9題中兩數(shù)相減的門電路圖并求其相減的結(jié)果。答:若為101011-011110則第一個數(shù)為正數(shù),其補碼=原碼=0101011;第二個數(shù)為負數(shù),其原碼為1011110,反碼為1100001,補碼=反碼+1=1100001+1=1100010兩個數(shù)的補碼相加為: 0101011 + 1100010 = 1 0001101去掉最

6、高位的進位1,得結(jié)果為0001101,即為13(10)。例2: +0反 = 00000000 -0反 = 11111111即:數(shù)0的反碼也不是唯一的。第2章習(xí)題2.2 觸發(fā)器、寄存器及存儲器之間有什么關(guān)系?請畫出這幾種器件的符號。答:觸發(fā)器是存放一位二進制數(shù)字信號的基本單元。觸發(fā)器是計算機的記憶裝置的基本單元,也可以說是記憶細胞。觸發(fā)器可以組成寄存器,寄存器又可以組成存儲器。寄存器和存儲器統(tǒng)稱為計算機的記憶裝置。(2)其符號分別表示如下:2.4 累加器有何用處?畫出其符號。答:累加器作為ALU運算過程的代數(shù)和的臨時存儲處。2.5 三態(tài)輸出電路有何意義?其符號如何畫?答:三態(tài)輸出電路使得一條信號

7、傳輸線既能與一個觸發(fā)器接通,也可以與其斷開而與另外一個觸發(fā)器接通,從而使得一條信號線可以傳輸多個觸發(fā)器的信息。2.6 何謂L門及E門?它們在總線結(jié)構(gòu)中有何用處?答:(1)L門:高電平時使數(shù)據(jù)裝入、低電平時數(shù)據(jù)自鎖其中的電路 ;E門:E門即三態(tài)門,當(dāng)選通端E門為高電平時,可將信息從A端送到B端。(2)L門專管對寄存器的裝入數(shù)據(jù)的控制,而E門志管由寄存器輸出數(shù)據(jù)的控制。2.7 控制字是什么意義?試舉個例子說明。答:(1)控制字CON將各個寄存器的L門和E門的按次序排成一列,并且為了避免住處在公共總線中亂竄,規(guī)定在某一時鐘節(jié)拍,只有一個寄存器的L門為高電平,一個寄存器的E門為高電平,從而保證了E門為

8、高電平的寄存器的數(shù)據(jù)流入到L門為高電平的寄存器中去。(2)略去,詳見教材P31的表2-32.8 ROM和RAM各有何特點與用處?答:ROM是只讀存儲器,是用以存放固定程序的存儲器,一旦程序放進去之后,就不能再改變。也不能再寫入新的字節(jié),而只能讀出其中所存儲的內(nèi)容;RAM是隨機存儲器(又稱讀/寫存儲器),它與ROM的區(qū)別在于它不但能讀出存放在其中各個存儲單元的數(shù)據(jù),而且能夠隨時寫進新的數(shù)據(jù),或者改變原有數(shù)據(jù)。2.9 為什么要建立“地址”這個概念?答:因為一個存儲器可以包含數(shù)以千計的存儲單元,可以存儲很多數(shù)據(jù),為了便于存入和取出,需要對每個存儲單元確定一個固定地址。2.11 譯碼器有何用處?答:譯

9、碼器用來確定存儲單元的地址。地址譯碼器常用于計算機中對存儲單元地址的譯碼,即將一個地址代碼轉(zhuǎn)換成一個有效信號,從而選中對應(yīng)的單元。2.12 存儲地址寄存器(MAR)和存儲數(shù)據(jù)寄存器(MDR)各有何用處?答:MAR將所要尋找的存儲單元的地址暫存下來,以備下一條指令之用。MDR是將要寫入RAM中去的數(shù)據(jù)暫存起來,以等待控制器發(fā)出指令再將數(shù)據(jù)寫入RAM中去。P33 2,4,5,6,7,8,9,11,12第3章習(xí)題3.1 略去3.2 程序計數(shù)器PC的內(nèi)容是什么意義?答:程序計數(shù)器PC存儲的內(nèi)容是指令的地址碼。每次運行指令前,先復(fù)位到0,每取出執(zhí)行一條指令,PC加1.3.3指令寄存器IR從PROM接收到

10、指令字(8位)后的運行過程如何?起什么作用?答:(1)指令寄存器IR從PROM接收到指令字后,就立即將其高4位送到控制部件。(2)控制部件經(jīng)過分析后就發(fā)出控制指令,將IR的低4位數(shù)送到存儲地址寄存器MAR,MAR將此低4位數(shù)作為地址并用于訪問PROM。故第1次訪問PROM的是其指令區(qū),第2次訪問的是其數(shù)據(jù)區(qū)。3.4 略3.5 環(huán)形計數(shù)器有何用處?什么叫環(huán)形字?答:(1)環(huán)形計數(shù)器用來發(fā)出順序控制信號(即用來發(fā)出環(huán)形字),從而產(chǎn)生機器節(jié)拍。(2)環(huán)形字是其6位輸出端依次輪流為高電平,并且是在最位一位(左邊第1位)置1后又回到右邊第1位,從而形成環(huán)形置位。3.6 什么叫例行程序?什么叫機器周期、取

11、指周期和執(zhí)行周期?本章簡化式計算機的機器周期包括幾個時鐘周期(機器節(jié)拍)?機器周期是否一定是固定不變的?答:(1)例行程序:由廠家編好的執(zhí)行每個程序(在本章中即為每條指令)所需要的機器節(jié)拍(3個,見P49)(2)機器周期:執(zhí)行一條指令的時間。(3)取指周期:取一條指令所需的3個機器節(jié)拍。(4)執(zhí)行周期:執(zhí)行一條指令所需的機器節(jié)拍(一般也為3個機器節(jié)拍)(5)本章簡化式計算機的機器周期包括6個機器節(jié)拍。補充:機器節(jié)拍:即一個時鐘周期(時鐘一個高電平+一 個低電平)(6)不一定。只不過固定了在6個節(jié)拍完成一個機器周期的計算機被稱為固定周期的計算機。3.7 控制部件包括哪些主要環(huán)節(jié)?各有何用處?答:

12、(1)控制部件包括環(huán)形計數(shù)器、指令譯碼器、控制矩陣和其他控制電路。(2)環(huán)形計數(shù)器用來產(chǎn)生環(huán)形字,從而產(chǎn)生機器節(jié)拍; 指令譯碼器:將高四位組成的編碼信息譯成某一控制線為高電位。控制矩陣:用來產(chǎn)生控制字CON,即產(chǎn)生所有控制信號。其他控制電路包含時鐘脈沖發(fā)生器、運行/停車觸發(fā)器、“啟動”和“清除”按鈕。其作用見P54.3.8 子程序計數(shù)器有何用處?答:也是用來作為一個程序計數(shù)器的。3.9-3.11 略去3.12 指令寄存器IR是如何將其指令字段和地址字段分送出去的?這兩個字段的位數(shù)是否保持不變?答:(1)指令寄存器IR將8位指令字的高4位作為指令字段送到控制部件,而將低4位做為地址字段通過總線送

13、到存儲地址寄存器MAR中去。(2) 對,保持不變。這由制造廠家確定。第4章習(xí)題4.1 8086CPU與8088CPU有哪些相同之處?又有哪些區(qū)別?答:兩者的內(nèi)部結(jié)構(gòu)基本相同,內(nèi)部都采用16位字進行操作及存儲器尋址,兩者的軟件完全兼容,程序的執(zhí)行也完全相同,兩種處理器都封裝在相同的40腳雙列直插組件(DIP)中。但它們的外部性能有區(qū)別。8086是16位數(shù)據(jù)總線,而8088是8位數(shù)據(jù)總線,在處理一個16位數(shù)據(jù)字時,8088需要兩步操作而8086只需要一步。4.2 8086 CPU從功能上分為幾部分?各部分由什么組成?各部分的功能是什么?答:8086CPU從功能上分為總線接口部分BIU和執(zhí)行部件EU

14、兩部分。其中總線接口部分的功能是負責(zé)與存儲器、I/O端口傳送數(shù)據(jù),即BIU管理在存儲器中存取程序和數(shù)據(jù)的實際處理過程。執(zhí)行部件EU的功能負責(zé)指令的執(zhí)行。將指令譯碼并利用內(nèi)部的寄存器和ALU對數(shù)據(jù)進行所需的處理。BIU由4個段寄存器(CS、ES、DS、SS)、16位指令指針寄存器IP、20位的地址加法器和6字節(jié)的指令隊列組成。EU由4個通過寄存器(AX、BX、CX、DX)、4個專用寄存器(SI、DI、SP、BP)、標(biāo)志寄存器FR、算術(shù)邏輯部件ALU組成。4.3 8086 CPU有哪些寄存器組成?各有什么用途?標(biāo)志寄存器的各標(biāo)志位在什么情況下置位?答:8086 CPU由4個通用寄存器(AX、BX、

15、CX、DX)、4個專用寄存器(SI、DI、SP、BP)、標(biāo)志寄存器FR組成,共9個寄存器。4個通用寄存器既可作為16位寄存器用,也可作為8位寄存器使用。其中AX寄存器也常稱為累加器。其它寄存器的用途見教材。標(biāo)志寄存器有6個狀態(tài)標(biāo)志(SF、ZF、PF、CF、AF、OF)和3個控制標(biāo)志位(DF、IF、TF)。其具體置位見P75的表4-1.4.4 8086系統(tǒng)中的物理地址是如何得到的?假如CS=2000H,IP=2100H其物理地址應(yīng)是多少?答:8086系統(tǒng)中的物理地址是通過BIU中的20位地址加法器得到的。物理地址計算公式為CS段地址*16(即二進制左移4位,或者十六進制左移1位)+IP偏移地址。

16、按計算公式,本題中的物理地址為20000H+2100H=22100H。4.5 什么叫總線周期?8086CPU的一個總線周期包括多少時鐘周期,什么情況下要插入TW等待周期?插入多少個TW取決于什么因素?答:總線周期是CPU或其他總線控制設(shè)備訪問一次存儲器或I/O端口所需的時間。在總線周期中需要利用總路線。補充:指令周期:指令周期是機器執(zhí)行一條指令所需的時間。8086CPU的一個標(biāo)準總線周期包括4個時鐘周期。當(dāng)4個時鐘周期不能完成所規(guī)定的操作時,可以插入一個或多個等待時鐘周期TW。插入多少個TW取決于所訪問的存儲器或者I/O設(shè)備是否準備就緒,此信號由引腳READY發(fā)出。4.6 什么是最大模式?什么

17、是最小模式?用什么方法將8086/8088置為最大模式和最小模式?答:所謂最小模式,就是在系統(tǒng)中只有8086/8088一個微處理器。最大模式中,飲包含兩個或多個微處理器,其中主處理器是8086/8088,其他處理器是協(xié)處理器(如數(shù)值運算協(xié)處理器8087,輸入/輸出協(xié)處理器8089)。用硬件方法來決定8086/8088的工作模式,具體是通過引腳控制信號引腳來決定,其接+5伏,則為最小模式,接地為最大模式。4.7 什么是地址鎖存器?8086/8088系統(tǒng)中為什么要用地址鎖存器?鎖存的是什么信息?答:(1)地址鎖存器就是一個寄存器,它根據(jù)控制信號的狀態(tài),將總線上的地址代碼暫存起來,即用于“鎖定”一個

18、(系列)數(shù)字狀態(tài)的電路。簡答:地址鎖存器是用來鎖存/保存地址的一個寄存器(即一個普通的時序電路),是觸發(fā)器的原始形式。目的是某次傳送數(shù)據(jù)并不能一次完成所以鎖存地址以免CPU重復(fù)的傳送一個地址。原理:CPU送地址到鎖存器8282/8283之后,內(nèi)存在地址鎖存器中找地址,而不是向CPU要地址。(2)因為8060/8088系統(tǒng)采用的是地址/數(shù)據(jù)分時復(fù)用總線,即用同一總線傳輸數(shù)據(jù)又傳輸?shù)刂?,?dāng)微處理器與存儲器或IO交換信號時,首先由CPU發(fā)出存儲器地址,同時發(fā)出允許鎖存ALE給鎖存器,當(dāng)鎖存器接到該信號后將地址/數(shù)據(jù)總線上的地址鎖存在總線上,隨后才能傳輸數(shù)據(jù)。個人理解:因為在總線周期的前半部分,CPU

19、總是送出地址信號和BHE(總線高允許)信號,為了通知地址已經(jīng)準備好了,可以被所鎖存,CPU會送出高電平允許鎖存信號ALE。此時地址信號和BHE信號被鎖存。由于有了鎖存器對地址信號和BHE信號的鎖存,CPU在總線周期的后半部分,地址和數(shù)據(jù)都在總線上,確保了CPU對鎖存器和I/O接口的讀/寫操作。(3)鎖存的是復(fù)用總線上的地址信息。4.8 8086/8088系統(tǒng)中的8286是什么器件?起什么作用?答:(1)8286是總線驅(qū)動器(又稱總線收發(fā)器,雙向數(shù)據(jù)緩沖器)。(2)在一個系統(tǒng)所含的外設(shè)接口較多時,它用來增加數(shù)據(jù)總線的驅(qū)動能力。4.9 8086/8088系統(tǒng)中用時鐘發(fā)生器8284A產(chǎn)生哪些信號?答

20、:8284A產(chǎn)生恒定的時鐘信號、準備信號(READY)及復(fù)位信號(RESET)。4.10 8086最基本的操作是什么?答:是總線操作4.11 8086/8088系統(tǒng)中引入了哪些中斷?是如何引入的?答:8086共有256種類型的中斷。從產(chǎn)生中斷的方法,可以將其分為硬件中斷和軟件中斷兩大類,硬件中斷中的非屏蔽中斷是通過CPU的NMI引腳進入的,可屏蔽中斷是通過CPU的INTR引腳進入的,并且只有當(dāng)中斷允許標(biāo)志IF為1時,非屏蔽中斷才能進入。軟件中斷是CPU根據(jù)軟件中的某條指令或者軟件對標(biāo)志寄存器中某個標(biāo)志的設(shè)置而產(chǎn)生的。4.12 什么是可屏蔽中斷?什么是非屏蔽中斷?可屏蔽中斷是指受中斷標(biāo)志IF屏蔽

21、的中斷,由INTR引腳進入。非屏蔽中斷是不受中斷標(biāo)志IF屏蔽的中斷,由NMI引腳進入。4.13 什么是中斷向量?中斷向量表指的是什么?中斷向量表放在什么地方?答:(1)中斷向量是中斷處理子程序的入口地址,每個中斷類型對應(yīng)一個中斷向量。(2)中斷向量表是指在8086/8088微機系統(tǒng)的內(nèi)存中,專門留出的0段的000003FH區(qū)域,用于存放所有的256個中斷向量。(3)中斷向量表放在0段的000003FH區(qū)域。4.14 假如中斷類型為8,它的中斷服務(wù)入口地址是多少?答:中斷類型8*4=32,即十六進制20H,所以其中斷服務(wù)入口地址為20H.第5章習(xí)題5.1 分別指出下列指令中的源操作數(shù)和目的操作數(shù)

22、的尋址方式:(1)MOV SI, 200 ;源操作數(shù)為立即數(shù)尋址(2)MOV CX, DATASI ;源操作數(shù)為(3)ADD AX, BXDI ;源操作數(shù)為基址加變址的寄存器間接尋址(4)AND AX, BX 源操作數(shù)為寄存器尋址(5)MOV SI, AX ;源操作數(shù)為寄存器尋址(6)PUSHF ; 為寄存器尋址對于目的操作數(shù),前4小題均為寄存器尋址,(5)題為寄存器間接尋址。5.2 試述指令MOV AX, 2010H 和MOV AX, DS:2010H的區(qū)別中。答:前者為將十六進制數(shù)2010H送到寄存器AX中去; 后者為將數(shù)據(jù)段DS中偏移地址為2010H、2011H兩單元中的內(nèi)容送到AX中去

23、。5.3 寫出以下指令中內(nèi)存操作數(shù)的所在地址。(1)MOV AL, BX+5答:源操作數(shù)的地址為BX+5,默認段寄存器為數(shù)據(jù)段寄存器DS,又因BX為基址寄存器,所以尋址方式為數(shù)據(jù)段相對基址尋址;(2)MOV BP+5, AX答:目的操作數(shù)的地址為BP+5,默認段寄存器為堆棧段寄存器SS,又因BP為基址寄存器,所以尋址方式為堆棧段相對基址尋址;(3)INC BYTE PTR SI+3答:此句意思為將SI+3所指的存儲單元的內(nèi)容加1;PTR的意義是定義其后的內(nèi)容變量的新類型為字節(jié)屬性,具體用法見第7章P159. 內(nèi)存操作數(shù)的地址為SI+3,屬于相對變址尋址;(4)MOV DL, ES: BX+DI

24、答:源操作數(shù)為附加段基址加變址的尋址方式;(5)MOV BX, BX+SI+2答:源操作數(shù)的內(nèi)存地址為BX+SI+2,屬于數(shù)據(jù)段相對基址加變址尋址。5.4 判斷下列指令書寫是否正確:(1)MOV AL, BX 答:不對,一個8位,一個16位;(2)MOV AL,CL答:正確(3)INC BX答:正確(4)MOV 5, AL答:不對,目的操作數(shù)不能是立即數(shù)。(5) MOV BX, SI答:不對,兩個存儲單元之間不能直接傳送數(shù)據(jù);(6)MOV BL, F5H答:正確(7)MOV DX, 2000H答:正確(8)POP CS答:不對,段寄存器CS和立即數(shù)都不能作目的操作數(shù)(9) PUSH CS答:正

25、確。注:本部分可以用DEBUG中的-a指令進行調(diào)試以確認指令是否正確5.5 設(shè)堆棧指針SP的初值為2000H,AX=3000H,BX=5000H,試問:(1)執(zhí)行指令PUSH AX 后 SP=?答:執(zhí)行PUSH指令時,棧頂指針SP自動減2,所以SP=2000H-2= 1FFE H;(2)再執(zhí)行PUSH BX 及POP AX后SP=? AX=? BX=?答:執(zhí)行PUSH BX 后SP=1FFE H- 2;再執(zhí)行POP AX后SP=(1FEE H-2)+2=1FFE H;此時AX中的內(nèi)容為原BX中的內(nèi)容,故AX=5000H;而BX中的內(nèi)容沒有改動,即還是5000H.5.6 要想完成把2000H送

26、1000H中,用指令:MOV 1000H, 2000H是否正確 ?如果不正確,應(yīng)用什么方法?答:不正確,因為兩個存儲單元之間不能直接傳送數(shù)據(jù)。可以改為:MOV AX, 2000HMOV 1000H, AX5.7 假如想從100中減去AL中的內(nèi)容,用SUB 100,AL是否正確?如果不正確,應(yīng)用什么方法?答:不正確,因為立即數(shù)不能做為目的操作數(shù)??梢愿臑椋篗OV BL, 5AH ; 100的16進制數(shù)表達式為5AHSUB BL, AL5.8 用兩種方法寫出從88H端口讀入信息的指令。再用兩種方法寫出從42H口輸出100H的指令。答:法一:IN AL, 88H; 法二:MOV DL, 88H IN

27、 AL, DL(2) 法一:MOV AX, 0100H OUT 42H, AX; 將AX中的內(nèi)容輸出到42H、43H兩端口中,其中00H送42H端口中,01H送到43H端口中法二:MOV AX,0100H MOV DX, 42H OUT DX, AX5.9 假如AL=20H,BL=10H,當(dāng)執(zhí)行CMP AL,BL后,問:(1)若AL、BL中內(nèi)容是兩個無符號數(shù),比較結(jié)果如何?影響哪幾個標(biāo)志位? 第一個數(shù)AL為: 0002 0000第二個數(shù)BL為: 0001 0000 0001 0000答:對無符號數(shù),執(zhí)行CMP后影響 CF、ZF位。故執(zhí)行后標(biāo)志為分別為 ZF=0;CF=0;(2)若AL、BL中內(nèi)

28、容是兩個有符號數(shù),結(jié)果又如何?影響哪幾個標(biāo)志位?答:對有符號數(shù),執(zhí)行CMP指令后影響ZF和OF標(biāo)志位,不影響CF位。執(zhí)行后標(biāo)志位分別為ZF=0;OF=0第6章習(xí)題6.1讀下面程序段,請問:在什么情況下,本段程序的執(zhí)行結(jié)果是AH0? BEGIN: IN AL,5FH TEST AL,80H JZ BRCHl MOV AH,0 JMP STOP BRCHl: MOV AH,0FFH STOP: HLT解答:AL中的最高位為1時。6.2讀程序: START: IN AL,20H MOV BL,AL IN AL,30H MOV CL,AL MOV AX,0 ADLOP: ADD AL,BL ADC A

29、H,0 DEC CL JNZ ADLOP HLT 請問: (1)本程序?qū)崿F(xiàn)什么功能? (2)結(jié)果在哪里?解答:完成20H*30H,結(jié)果在AX中。6.3 請編一程序段完成AX*10的任務(wù)(要求不準用乘法指令做)答:MOV BX,AX MOV CL 2 SHL AX, CL ;此句實現(xiàn)了AX=AX*4 ADD AX,BX ;此句使得AX=5AX SHL AX ,1 ;此句實現(xiàn)了5AX*2=10AX法二:MOV BX,AXMOV CL, 4SHL AX,CLSHL BX,1ADD AX,BX6.4編程序使: (1)AX寄存器低4位清零。 (2)BX寄存器低4位置“1”。 (3)CX寄存器低4位變反。

30、 (4)用TEST指令測試DL寄存器位3、位6是否同時為0,若是,將0送DL;否則l送DH。解答 :(1) AND AX ,0FFF0H (2) OR BX ,000FH (3) XOR CX ,000FH 或者NOT CX(但這樣CX的高4位也會變反) (4)TEST DL ,48H JZ LOOP MOV DH,1 HLT LOOP :MOV DL ,0HLT6.5編一程序段,完成符號函數(shù)(-128x127): 1 (x0)y= 0 (x=0) -1 (x0)假設(shè)x的值存放在DATAl中,y的值存放在DATA2中。 解答: START :MOV AL ,DATA1 AND AL,AL JG

31、E BIGR MOV AL,81H ;即將-1給AL MOV DATA2,AL HLT BIGR: JE EQUL ;結(jié)果為0,轉(zhuǎn)EQUL MOV AL,1 MOV DATA2,AL HLT EQUL: MOV AL,OMOV DATA2,AL HLT6.6設(shè)AX寄存器中有一個16位二進制數(shù),編一程序,統(tǒng)計AX中“l(fā)”的個數(shù),統(tǒng)計結(jié)果送CX中。解答: START : MOV CX ,0 ;CX清零也可用XOR CX,CX實現(xiàn) LOOP1: CLC ;CF清零SUB AX,0 ;此句也可用CMP AX,O替代 JZ STP SAL AX,1 ;此句也可用SHL AX,1替代 JNC NOD IN

32、C CX NOD: JMP LOOP1 STP: HLT 67編一子程序利用XLAT指令把十六進制數(shù)轉(zhuǎn)換成ASCII碼。假設(shè)ASCII碼存放在以 DAT1為首地址的數(shù)據(jù)區(qū)中,對應(yīng)的16進制數(shù)放在以DAT2為首地址的數(shù)據(jù)區(qū)中,轉(zhuǎn)換結(jié)果送以DAT3為首地址的數(shù)據(jù)區(qū)中。解答: SUBPROC PROCSUBPROC :PUSH BX PUSH SIPUSH DIPUSH CXPUSH ALPUSH DS START:MOV BX,DATA1 ;將首地址DAT1送到BX中,作為表的首地址 MOV SI ,DAT2 MOV DI DAT3 MOV CX ,16 NEST:LODSB ;讀字節(jié)串,從地址為

33、SI的RAM讀16進制數(shù)到AX/AL XLAT ;用換碼指令XLAT將AX/AL中的16進制數(shù)轉(zhuǎn)換成;對應(yīng)的ASCII碼 STOSB ;寫字節(jié)串,從AX/AL寫到RAM,即將轉(zhuǎn)換成的ASCII碼送;到目標(biāo)地址DI處 LOOP NEST ;CX!=0,就轉(zhuǎn)向NEST,SI與DI都會自動增1 POP DS POP AL POP CX POP DI POP SI POP BX RETSUBPROC ENDP本題重點:(1)所有的串操作指令,如LODSB, STOSB等都用寄存器SI對源操作數(shù)進行間接尋址;都用寄存器DI為目的操作數(shù)進行間接尋址。(2)在每次循環(huán)后,地址指針SI和DI都會受到修改;(3

34、)XLAT指令的用法,見教材P118,用BX給定首地址,用AL/AX給定偏移地址,再用XLAT指令轉(zhuǎn)換。第7章習(xí)題7.2 假設(shè)學(xué)生某門課程的成績放在數(shù)據(jù)區(qū)中,請編一程序,統(tǒng)計該成績中小于60分的人數(shù),6090分的人數(shù),大于90分的人數(shù),并顯示在屏幕上。答:分析:假設(shè)學(xué)生成績放在以DATA1為首地址的數(shù)據(jù)區(qū)中。DATASEG SEGMENTDATA1 DB 100 DUP (?)STRING1 DB The student number of grade is bigger than 90STRING2 DB The student number of grade is between 60 a

35、nd 90STRING3 DB The student number of grade is less than 90 DATASEG ENDSSS1 SEGEMENT STACK DW 30 DUP(?)SS1 ENDSCODE SEGMENTASSUME CS: CODE, DS:DATASEG, SS:SS1START: MOV AX, DATASEG MOV DS, AXMOV SI, OFFSET DATA1MOV CL, 100(D); 將學(xué)生人數(shù)100賦給CLXOR BX, BXXOR AX, AXXOR DX, DXA1: MOV AX, SICMP AX, 90(D)JA L

36、1CMP AX, 60(D)JAE L2INC CH ;用CH保存小于60的人數(shù)JUMP A2L1: INC BH ;用BH保存大于90的人數(shù)JUMP A2L1: INC BL ;用BL保存60到90的人數(shù)JUMP A2A2: INC SILOOP A1;-在屏幕上輸出各類人數(shù)MOV DX, OFFSET STRING1MOV AH, 9INT 21HMOV DL, CH MOV AH, 2INT 21H; -輸出60-90的學(xué)生人數(shù)MOV DX, OFFSET STRING2MOV AH, 9MOV DL, BLMOV AH, 2INT 21H;-輸出小于60的學(xué)生人數(shù)MOV DX, OFF

37、SET STRING3MOV AH, 9MOV DL, BHMOV AH, 2INT 21H;-程序完成,返回操作系統(tǒng),結(jié)束MOV AH, 4CHINT 21HCODE ENDSEND START第八章習(xí)題8.1 編一初始化程序,使8255A的PC5端輸出一個負跳變。如果要求PC5端輸出一個負脈沖,則初始化程序又是什么情況?答:(1)設(shè)置PC5為負跳變(從1到0),即設(shè)置PC5引腳為0值,其控制字應(yīng)設(shè)置為:0000 1010(即0AH)。故其初始化程序為:MOV DX, 8255控制端口地址 MOV AL,0AH OUT DX, AL(2)負脈沖為(從0到-1),故其控制字為:0000 1011(即0BH)故其初始化程序為:MOV DX, 8255控制端口地址 MOV AL,0BH OUT DX, AL8.2 設(shè)8251A的控制和狀態(tài)端口地址為52H,數(shù)據(jù)輸入/輸出口地址為50H(輸出端口未用),輸入50個字符,將字符放在BUFFERR所指的內(nèi)存緩沖區(qū)中。請寫出這段程序。答:分析:(1)工作方式選擇本題沒有講清用同步或異步,故可自選,在此選擇異步傳送,波特率為16,偶校驗,停止位為2位;8個數(shù)據(jù)位。從而確定工作方式選擇字為:1111 1110,即為0FEH;(2)操作命令控制字選擇

溫馨提示

  • 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

提交評論