(完整版)微機(jī)原理及接口技術(shù)課后習(xí)題及參考答案_第1頁
(完整版)微機(jī)原理及接口技術(shù)課后習(xí)題及參考答案_第2頁
(完整版)微機(jī)原理及接口技術(shù)課后習(xí)題及參考答案_第3頁
(完整版)微機(jī)原理及接口技術(shù)課后習(xí)題及參考答案_第4頁
(完整版)微機(jī)原理及接口技術(shù)課后習(xí)題及參考答案_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第一章課后習(xí)題1.1把下列十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)、八進(jìn)制數(shù)、十六進(jìn)制數(shù)。①16.25②35.75③123.875④97/1281.2把下列二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)。①10101.01②11001.0011③111.01④1010.11.3把下列八進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)和二進(jìn)制數(shù)。①756.07②63.73③35.6④323.451.4把下列十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)。①A7.8②9AD.BD③B7C.8D④1EC1.5求下列帶符號十進(jìn)制數(shù)的8位補(bǔ)碼。①+127②-1③-0④-1281.6求下列帶符號十進(jìn)制數(shù)的16位補(bǔ)碼。①+355②-11.7計(jì)算機(jī)分那幾類?各有什么特點(diǎn)?1.8簡述微處理器、微計(jì)算機(jī)及微計(jì)算機(jī)系統(tǒng)三個(gè)術(shù)語的內(nèi)涵。1.980X86微處理器有幾代?各代的名稱是什么?1.10你知道現(xiàn)在的微型機(jī)可以配備哪些外部設(shè)備?1.11微型機(jī)的運(yùn)算速度與CPU的工作頻率有關(guān)嗎?1.12字長與計(jì)算機(jī)的什么性能有關(guān)?習(xí)題一參考答案1.1①16.25D=10000.01B=20.2Q=10.4H②35.75D=100011.11B=43.6Q=23.CH③123.875D=1111011.111B=173.7Q=7B.EH④97/128D=64/123+32/128+1/128=0.1100001B=0.604Q=0.C2H1.2①10101.01B=21.25D②11001.0011B=25.1875D③111.01B=7.25D④1010.1B=10.5D1.3①②63.73Q=110011.111011B=51.922D③35.6Q=11101.110B=29.75D④1.4①A7.8H=167.5D②9AD.BDH=2477.738D③B7C.8D=2940.551D④1ECH=492D1.5①[+127]補(bǔ)=01111111②[-1]補(bǔ)=③[-0]補(bǔ)=00000000④[-128]補(bǔ)1.6①[+355]補(bǔ)=②[-1]補(bǔ)=11111111111111111.7答:傳統(tǒng)上分為三類:大型主機(jī)、小型機(jī)、微型機(jī)。大型主機(jī)一般為高性能的并行處理系統(tǒng),存儲(chǔ)容量大,事物處理能力強(qiáng),可為眾多用戶提供服務(wù)。小型機(jī)具有一定的數(shù)據(jù)處理能力,提供一定用戶規(guī)模的信息服務(wù),作為部門的信息服務(wù)中心。微型機(jī)一般指在辦公室或家庭的桌面或可移動(dòng)的計(jì)算系統(tǒng),體積小、價(jià)格低、具有工業(yè)化標(biāo)準(zhǔn)體系結(jié)構(gòu),兼容性好。1.8答:微處理器是微計(jì)算機(jī)系統(tǒng)的核心硬件部件,對系統(tǒng)的性能起決定性的影響。微計(jì)算機(jī)包括微處理器、存儲(chǔ)器、I/O接口電路及系統(tǒng)總線。微計(jì)算機(jī)系統(tǒng)是在微計(jì)算機(jī)的基礎(chǔ)上配上相應(yīng)的外部設(shè)備和各種軟件,形成一個(gè)完整的、獨(dú)立的信息處理系統(tǒng)。1.9答:從體系結(jié)構(gòu)上可分為5代:4004:4位機(jī);8080/8085:8位機(jī);8086/8088/80286:16位機(jī);80386/80486:32位機(jī);Pentium系列機(jī):64位。第二章課后習(xí)題2.1、EU與BIU各自的功能是什么?如何協(xié)同工作?2.2、8086/8088微處理器內(nèi)部有那些寄存器,它們的主要作用是什么?2.3、8086對存儲(chǔ)器的管理為什么采用分段的辦法?2.4、在8086中,邏輯地址、偏移地址、物理地址分別指的是什么?具體說明。2.5、給定一個(gè)存放數(shù)據(jù)的內(nèi)存單元的偏移地址是20C0H,(DS)=0C00EH,求出該內(nèi)存單元的物理地址。2.6、8086/8088為什么采用地址/數(shù)據(jù)引線復(fù)用技術(shù)?2.7、8086與8088的主要區(qū)別是什么?2.8、怎樣確定8086的最大或最小工作模式?最大、最小模式產(chǎn)生控制信號的方法有何不同2.9、8086被復(fù)位以后,有關(guān)寄存器的狀態(tài)是什么?微處理器從何處開始執(zhí)行程序?2.10、8086基本總線周期是如何組成的?各狀態(tài)中完成什么基本操作?2.11、在基于8086的微計(jì)算機(jī)系統(tǒng)中,存儲(chǔ)器是如何組織的?是如何與處理器總線連接的?BHE#信號起什么作用?2.12、80X86系列微處理器采取與先前的微處理器兼容的技術(shù)路線,有什么好處?有什么不足?2.13、80386內(nèi)部結(jié)構(gòu)由哪幾部分組成?簡述各部分的作用。2.14、80386有幾種存儲(chǔ)器管理模式?都是什么?2.15、在不同的存儲(chǔ)器管理模式下,80386的段寄存器的作用是什么?2.16、描述符的分類及各描述符的作用。2.17、80386的分段部件是如何將邏輯地址變?yōu)榫€性地址的?2.18、803866中如何把線性地址變?yōu)槲锢淼刂???xí)題二參考答案1、答:EU是執(zhí)行部件,主要的功能是執(zhí)行指令。BIU是總線接口部件,與片外存儲(chǔ)器及I/O接口電路傳輸數(shù)據(jù)。EU經(jīng)過BIU進(jìn)行片外操作數(shù)的訪問,BIU為EU提供將要執(zhí)行的指令。EU與BIU可分別獨(dú)立工作,當(dāng)EU不需BIU提供服務(wù)時(shí),BIU可進(jìn)行填充指令隊(duì)列的操作。2、答:執(zhí)行部件有8個(gè)16位寄存器,AX、BX、CX、DX、SP、BP、DI、SI。AX、BX、CX、DX一般作為通用數(shù)據(jù)寄存器。SP為堆棧指針存器,BP、DI、SI在間接尋址時(shí)作為地址寄存器或變址寄存器??偩€接口部件設(shè)有段寄存器CS、DS、SS、ES和指令指針寄存器IP。段寄存器存放段地址,與偏移地址共同形成存儲(chǔ)器的物理地址。IP的內(nèi)容為下一條將要執(zhí)行指令的偏移地址,與CS共同形成下一條指令的物理地址。3、答:8086是一個(gè)16位的結(jié)構(gòu),采用分段管理辦法可形成超過16位的存儲(chǔ)器物理地址,擴(kuò)大對存儲(chǔ)器的尋址范圍(1MB,20位地址)。若不用分段方法,16位地址只能尋址64KB空間。4、答:邏輯地址是在程序中對存儲(chǔ)器地址的一種表示方法,由段地址和段內(nèi)偏移地址兩部分組成,如1234H:0088H。偏移地址是指段內(nèi)某個(gè)存儲(chǔ)單元相對該段首地址的差值,是一個(gè)16位的二進(jìn)制代碼。物理地址是8086芯片引線送出的20位地址碼,用來指出一個(gè)特定的存儲(chǔ)單元。5、答:物理地址:320F8H。6、答:考慮到芯片成本,8086/8088采用40條引線的封裝結(jié)構(gòu)。40條引線引出8086/8088的所有信號是不夠用的,采用地址/數(shù)據(jù)線復(fù)用引線方法可以解決這一矛盾,從邏輯角度,地址與數(shù)據(jù)信號不會(huì)同時(shí)出現(xiàn),二者可以分時(shí)復(fù)用同一組引線。7、答:8086有16條數(shù)據(jù)信號引線,8088只有8條;8086片內(nèi)指令預(yù)取緩沖器深度為6字節(jié),8088只有4字節(jié)。8、答:引線MN/MX#的邏輯狀態(tài)決定8086的工作模式,MN/MX#引線接高電平,8086被設(shè)定為最小模式,MN/MX#引線接低電平,8086被設(shè)定為最大模式。最小模式下的控制信號由相關(guān)引線直接提供;最大模式下控制信號由8288專用芯片譯碼后提供,8288的輸入為8086的S2#~S0#三條狀態(tài)信號引線提供。9、答:標(biāo)志寄存器、IP、DS、SS、ES和指令隊(duì)列置0,CS置全1。處理器從FFFFOH存儲(chǔ)單元取指令并開始執(zhí)行。10、答:基本總線周期由4個(gè)時(shí)鐘(CLK)周期組成,按時(shí)間順序定義為T1、T2、T3、T4。在T1期間8086發(fā)出訪問目的地的地址信號和地址鎖存選通信號ALE;T2期間發(fā)出讀寫命令信號RD#、WR#及其它相關(guān)信號;T3期間完成數(shù)據(jù)的訪問;T4結(jié)束該總線周期。11、答:8086為16位處理器,可訪問1M字節(jié)的存儲(chǔ)器空間;1M字節(jié)的存儲(chǔ)器分為兩個(gè)512K字節(jié)的存儲(chǔ)體,命名為偶字節(jié)體和奇字節(jié)體;偶體的數(shù)據(jù)線連接D7~D0,“體選”信號接地址線A0;奇體的數(shù)據(jù)線連接D15~D8,“體選”信號接BHE#信號;BHE#信號有效時(shí)允許訪問奇體中的高字節(jié)存儲(chǔ)單元,實(shí)現(xiàn)8086的低字節(jié)訪問、高字節(jié)訪問及字訪問。12、答:好處是先前開發(fā)的軟件可以在新處理器組成的系統(tǒng)中運(yùn)行,保護(hù)了軟件投資。缺點(diǎn)是處理器的結(jié)構(gòu)發(fā)展受到兼容的約束,為了保持兼容性增加了硅資源的開銷,增加了結(jié)構(gòu)的復(fù)雜性。13、答:80386內(nèi)部結(jié)構(gòu)由執(zhí)行部件(EU)、存儲(chǔ)器管理部件(MMU)和總線接口部件(BIU)三部分組成。EU包括指令預(yù)取部件、指令譯碼部件、控制部件、運(yùn)算部件及保護(hù)檢測部件,主要功能是執(zhí)行指令。存儲(chǔ)器管理部件包括分段部件、分頁部件,實(shí)現(xiàn)對存儲(chǔ)器的分段分頁式的管理,將邏輯地址轉(zhuǎn)換成物理地址??偩€接口部件作用是進(jìn)行片外訪問:對存儲(chǔ)器及I/O接口的訪問、預(yù)取指令;另外的作用是進(jìn)行總線及中斷請求的控制14、答:80386有三種存儲(chǔ)器管理模式,分別是實(shí)地址方式、保護(hù)方式和虛擬8086方式15、答:在實(shí)地址方式下,段寄存器與8086相同,存放段基地址。在保護(hù)方式下,每個(gè)段寄存器還有一個(gè)對應(yīng)的64位段描述符寄存器,段寄存器作為選擇器存放選擇符。在虛擬8086方式下,段寄存器的作用與8086相同。16、答:描述符分為三類:存儲(chǔ)器段描述符、系統(tǒng)段描述符、門描述符。存儲(chǔ)器段描述符由8字節(jié)組成,它用來說明一個(gè)段中保存信息的情況。32位段基地址和20位段界限值定位了該段在存儲(chǔ)空間中的位置,其它有關(guān)位決定訪問權(quán)限及段的長度單位。系統(tǒng)段描述符與存儲(chǔ)器段描述符大多數(shù)字節(jié)段相同,有關(guān)訪問權(quán)及屬性字節(jié)段有些不同。門描述符用來改變程序的特權(quán)級別、切換任務(wù)的執(zhí)行以及指出中斷服務(wù)程序的入口。17、答:分段部件根據(jù)段選擇符從全局描述符表或局部描述符表中取出對應(yīng)的段描述符。把段描述符32位段基地址與邏輯地址中的32位偏移量相加就形成了線性地址。18、答:分段部件形成的32位線性地址中高10位作為尋址頁目錄表的偏移量,與控制寄存器CR3中頁目錄表基地址共同形成一個(gè)32位的地址指向頁表中的一個(gè)頁項(xiàng),即為一個(gè)頁面描述符。該頁面項(xiàng)中高20位作為頁面基地址,線性地址的低12位為偏移量,相加后形成指向某一存儲(chǔ)單元的32位物理地址。若禁止分頁功能,線性地址就是物理地址。第三章課后習(xí)題3.1、8086/8088微處理器有哪些尋址方式?并寫出各種尋址方式的傳送指令2條(源操作數(shù)和目的操作數(shù)尋址)。3.2、有關(guān)寄存器和內(nèi)存單元的內(nèi)容如下:DS=2000H,SS=1000H,BX=0BBH,BP=02H,SI=0100H,DI=0200H,(200BBH)=1AH,(201BBH)=34H,(200CCH)=68H,(200CDH)=3FH,(10202H)=78H,(10203H)=67H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(201CCH)=56H,(201CDH)=5BH,(201BCH)=89H,(200BCH)=23H,試寫出下表中源操作數(shù)的尋址方式和寄存器AX的內(nèi)容。表3-7習(xí)題1指令源操作數(shù)尋址方式AX的內(nèi)容MOVAX,1200HMOVAX,BXMOVAX,[1200H]MOVAX,[BX]MOVAX,[BX+11H]MOVAX,[BX+SI]MOVAX,[BX+SI+11H]MOVAX,[BP+DI]3.3、指出下列語句的錯(cuò)誤。(1)MOV[SI],34H(2)MOV45H,AX(3)INC12(4)MOV[BX],[SI+BP+BUF](5)MOVBL,AX(6)MOVCS,AX(7)OUT240H,AL(8)MOVSS,2000H(9)LEABX,AX(10)XCHGAL,78H3.4、已知DS=2000H,(21000H)=2234H,(21002H)=5566H,試區(qū)別以下3條指令。MOVSI,[1000H]LEASI,[1000H]LDSSI,[1000H]3.5、簡述堆棧的性質(zhì)。如果SS=9B9FH,SP=200H,連續(xù)執(zhí)行兩條PUSH指令后,棧頂?shù)奈锢淼刂肥嵌嗌??SS,SP的值是多少?再執(zhí)行一條POP指令后,棧頂?shù)奈锢淼刂酚质嵌嗌伲縎S、SP的值又是多少?3.6、寫出將AX和BX寄存器內(nèi)容進(jìn)行交換的堆棧操作指令序列,并畫出堆棧變化過程示意圖。3.7、用兩條指令把FLAGS中的SF位置1。3.8、用一條指令完成下列各題。(1)AL內(nèi)容加上12H,結(jié)果送入AL。(2)用BX寄存器間接尋址方式把存儲(chǔ)器中的一個(gè)內(nèi)存單元加上AX的內(nèi)容,并加上CF位,結(jié)果送入該內(nèi)存單元。(3)AX的內(nèi)容減去BX的內(nèi)容,結(jié)果送入AX。(4)將用BX、SI構(gòu)成的基址變址尋址方式所得到的內(nèi)容送入AX。(5)將變量BUF1中前兩個(gè)字節(jié)的內(nèi)容送入寄存器SI中。3.9、下面的程序段執(zhí)行后,DX、AX的內(nèi)容是什么?MOVDX,0EFADHMOVAX,1234HMOVCL,4SHLDX,CLMOVBL,AHSHLAX,CLSHRBL,CLORDL,BL3.10、寫出下面的指令序列中各條指令執(zhí)行后的AX內(nèi)容。MOVAX,7865HMOVCL,8SARAX,CLDECAXMOVCX,8MULCXNOTALANDAL,10H3.11、如果要將AL中的高4位移至低4位,有幾種方法?請分別寫出實(shí)現(xiàn)這些方法的程序段。3.12、利用串操作指令,將AREA1起始的區(qū)域1中的200個(gè)字節(jié)數(shù)據(jù)傳送到以AREA2為起始地址的區(qū)域2(兩個(gè)區(qū)域有重疊)。3.13、寄存器BX中有4位0~F的十六進(jìn)制數(shù),編寫程序段,將其轉(zhuǎn)換為對應(yīng)字符(即ASCII碼),按從高到低的順序分別存入L1、L2、L3、L4這4個(gè)字節(jié)單元中。3.14、試將BUF起始的100個(gè)字節(jié)的組合BCD碼數(shù)字,轉(zhuǎn)換成ASCII碼,并存放在以ASC為起始地址的單元中。已知高位BCD碼位于較高地址中。3.15、請給出以下各指令序列執(zhí)行完后目的寄存器的內(nèi)容。(1)MOVBX,-78MOVSXEBX,BX(2)MOVCL,-5MOVSXEDX,CL(3)MOVAH,9MOVZXECX,AH(4)MOVAX,87HMOVZXEBX,AX3.16、請給出以下各指令序列執(zhí)行完后EAX和EBX的內(nèi)容。MOVECX,BSFEAX,ECXBSREBX,ECX3.17、給以TAB為首地址的100個(gè)ASCII碼字符添加奇偶校驗(yàn)位(bit7),使每個(gè)字節(jié)中的“1”的個(gè)數(shù)為偶數(shù),在順序輸出到10H號端口。3.18、編寫一段程序,要求在長度為100H字節(jié)的數(shù)組中,找出正數(shù)的個(gè)數(shù)并存入字節(jié)單元POSIT中,找出負(fù)數(shù)的個(gè)數(shù)并存入字節(jié)單元NEGAT中。習(xí)題三參考答案3.1答:尋址方式是指計(jì)算機(jī)在執(zhí)行指令時(shí)尋找操作數(shù)的方式。8086/8088微處理器有以下幾種尋址方式:①立即尋址。操作數(shù)(僅限源操作數(shù))直接放在指令中。例如:movcx,100;movah,20h。②寄存器尋址。操作數(shù)在CPU的內(nèi)部寄存器中。例如:moves,ax;movdl,bh。③直接尋址。指令中直接給出了操作數(shù)的偏移地址。例如:movax,[3000h];movbuf,100。④寄存器間接尋址。操作數(shù)的偏移地址放在寄存器bp,bx,si,di四個(gè)寄存器中的一個(gè)里。例如:movax,[si];mov[bx],cx。⑤寄存器相對尋址。操作數(shù)的有效地址為基址寄存器或變址寄存器的內(nèi)容與指令中指定的位移量之和。例如:movax,cnt[si];movstr[bx],ax。⑥基址變址尋址。操作數(shù)的有效地址是一個(gè)基址寄存器和一個(gè)變址寄存器的和。例如:movax,[si+bx];mov[bx+di],dx。⑦相對基址變址尋址。操作數(shù)的有效地址為一個(gè)基址寄存器、一個(gè)變址寄存器的內(nèi)容與指令中指定的位移量三者之和。例如:movax,cnt[bx][si];movcnt[bx][si],ax。3.2.答:指令源操作數(shù)尋址方式AX的內(nèi)容MOVAX,1200H立即尋址1200HMOVAX,BX寄存器尋址0BBHMOVAX,[1200H]直接尋址4C2AHMOVAX,[BX]寄存器間接尋址231AHMOVAX,[BX+11H]寄存器相對尋址3F68HMOVAX,[BX+SI]基址變址尋址8934HMOVAX,[BX+SI+11H]相對基址變址尋址5B56HMOVAX,[BP+DI]基址變址尋址6778H3.3答:(1)MOV[SI],34H;目的操作數(shù)必須指出是字節(jié)操作還是字操作,比如可改成MOVBYTEPTR[SI],34H(2)MOV45H,AX;目的操作數(shù)不能是立即數(shù)(3)INC12;操作數(shù)不能是立即數(shù)(4)MOV[BX],[SI+BP+BUF];兩個(gè)操作數(shù)不能同是存儲(chǔ)單元(5)MOVBL,AX;操作數(shù)不匹配(6)MOVCS,AX;CS不能作為目的操作數(shù)(7)OUT240H,AL;對于IN和OUT指令,端口號大于FFH時(shí),必須先將端口號放入DX寄存器中(8)MOVSS,2000H;段寄存器不能用立即數(shù)來賦值,可改成MOVSS,AX(9)LEABX,AX;源操作數(shù)必須是內(nèi)存,如LEABX,BUFFER(10)XCHGAL,78H;交換指令不能對立即數(shù)操作3.4答:MOVSI,[1000H];(SI)=2234HLEASI,[1000H];(SI)=1000HLDSSI,[1000H];(SI)=2234H,(DS)=5566H3.5答:先進(jìn)后出。9BBF0H-4=9BBECH9BBECH+2=9BBEEH3.6答:PUSHAXPUSHBXPOPAXPOPBX3.7答:MOVAX,7FHADDAX,13.8答:⑴ADDAL,12H⑵ADC[BX],AX⑶SUBAX,BX⑷MOVAX,[BX+SI]⑸MOVSI,BUF13.9答:DX=FAD1H,AX=2340H3.10答:AX=300H3.11答:①循環(huán)左移movcl,4rolal,cl②循環(huán)右移movcl,4roral,cl③右移movcl,4shral,cl3.12答:從末端開始傳送即可解決重疊問題。movcx,200movsi,offsetaera1addsi,200movdi,offsetaere2adddi,200std;DF=1,進(jìn)行地址減量repmovsb3.13答:MOVCL,4MOVAL,BL;處理最低位十六進(jìn)制數(shù)ANDAL,0FHCMPAL,0AHJCDIGT4ADDAL,7DIGT4:ADD,AL,30HMOVL4,ALMOVAL,BL;處理次低位十六進(jìn)制數(shù)SHRAL,CLCMPAL,0AHJCDIGT3ADDAL,7DIGT3:ADD,AL,30HMOVL3,ALMOVAL,BH;處理次高位十六進(jìn)制數(shù)ANDAL,0FHCMPAL,0AHJCDIGT2ADDAL,7DIGT2:ADD,AL,30HMOVL2,ALMOVAL,BH;處理最高位十六進(jìn)制數(shù)SHRAL,CLCMPAL,0AHJCDIGT1ADDAL,7DIGT1:ADD,AL,30HMOVL1,AL3.14答:LEASI,BUFLEABX,ASCMOVCH,100MOVCL,4AGAIN:MOVAL,[SI];處理低位BCD碼ANDAL,0FHADDAL,30HMOV[BX],ALINCBXMOVAL,[SI];處理高位BCD碼SHRAL,CLADDAL,30HMOV[BX],ALINCBXINCSIDECCHJNZAGAIN3.15答:(1)MOVBX,-78;(BX)=FFB2HMOVSXEBX,BX;(EBX)=FFFFFFB2H(2)MOVCL,-5;(CL)=FBHMOVSXEDX,CL;(EDX)=FFFFFFFBH(3)MOVAH,9;(AH)=9HMOVZXECX,AH(ECX)=00000009H(4)MOVAX,87H;(AX)=87HMOVZXEBX,AX;(EBX)=00000087H3.16答:MOVBSFEAX,ECX;(EAX)=00000003HBSREBX,ECX;(EBX)=0000001CH3.17答:MOVCX,100LEABX,TABAGN:MOVAL,[BX]ADDAL,0JPNEXTORAL,80HNEXT:OUT10H,ALINCBXLOOPAGN3.18答:假設(shè)數(shù)組的起始地址是BUFFERLEABX,BUFFERMOVDX,0MOVCX,100ONCE:MOVAL,[BX]TESTAL,80H;是正數(shù)還是負(fù)數(shù)JNZFUSHU;是負(fù)數(shù),跳轉(zhuǎn)CMPAL,0;是0嗎?JZNEXTINCDH;是正數(shù),則DH加1JMPNEXTFUSHU:INCDL;是負(fù)數(shù),則DL加1NEXT:INCBXDECCXJNZONCEMOVPOSIT,DHMOVNEGAT,DL第四章課后習(xí)題4.1、匯編語言有何特點(diǎn)?編寫匯編語言源程序時(shí),一般的組成原則是什么?4.2、.MODEL偽指令是簡化段定義源程序格式中必不可少的語句,它設(shè)計(jì)了哪幾種存儲(chǔ)模式,各用于創(chuàng)建什么性質(zhì)的程序?4.3、如何規(guī)定一個(gè)程序執(zhí)行的開始位置,主程序執(zhí)行結(jié)束應(yīng)該如何返回DOS,源程序在何處停止匯編過程?4.4、邏輯段具有哪些屬性?完整代碼段定義時(shí)的默認(rèn)屬性是什么?小型模式下的簡化代碼段定義具有的默認(rèn)屬性是什么?4.5、DOS支持哪兩種可執(zhí)行程序結(jié)構(gòu),編寫這兩種程序時(shí)需要注意什么?4.6、給出下列語句中,指令立即數(shù)(數(shù)值表達(dá)式)的值:(1)moval,23hAND45hOR67h(2)movax,1234h/16+10h(3)movax,254hSHL4(4)moval,’a’AND(NOT(‘b’一‘B’))(5)movax,(76543LT32768)XOR7654h4.7、畫圖說明下列語句分配的存儲(chǔ)空間及初始化的數(shù)據(jù)值:(1)byte_vardb‘BCD’,10,10h,’EF’,2dup(一l,?,3dup(4))(2)word_vardw1234h,一5,6dup(?)4.8、設(shè)置一個(gè)數(shù)據(jù)段,按照如下要求定義變量:(1)myl_b為字符串變量,表示字符串“PersonalComputer!”(2)my2_b為用十六進(jìn)制數(shù)表示的字節(jié)變量,這個(gè)數(shù)的大小為100(3)my3_w為100個(gè)未賦值的字變量(4)my4_c為100的符號常量(5)my5_c為字符串常量,代替字符串“PersonalComputer!”4.9、假設(shè)opw是一個(gè)字變量,opbl和opb2是兩個(gè)字節(jié)變量,指出下列語句中的具體錯(cuò)誤原因并改正錯(cuò)誤。(1)movbyteptr[bx],256(2)movbx,offsetopw[si](3)addopbl,opb2(4)movopbl,al+l(5)subal,opw(6)mov[di],1234h4.10、編制一個(gè)程序,把字變量X和Y中數(shù)值較大者存入MAX字單元;若兩者相等,則把-1存入MAX中。假設(shè)變量存放的是有符號數(shù)。4.11、設(shè)變量DAT為有符號16位數(shù),請編寫程序?qū)⑺姆枲顟B(tài)保存在sign字節(jié)單元,即:如果變量值大于等于0,保存0;如果變量值小于0,保存-1。4.12、X、Y和Z是3個(gè)有符號字節(jié)數(shù)據(jù),編寫一個(gè)比較相等關(guān)系的程序:(1)如果這3個(gè)數(shù)都不相等,則顯示N;(2)如果這3個(gè)數(shù)中有兩個(gè)數(shù)相等,則顯示X;(3)如果這3個(gè)數(shù)都相等,則顯示Y。4.13、編制程序完成12H,23H,F(xiàn)3H,6AH,20H,F(xiàn)EH,10H,C8H,25H和34H共10個(gè)無符號字節(jié)數(shù)據(jù)之和,并將結(jié)果存入字變量SUM中。4.14、求出主存從2000H:0開始的一個(gè)64KB物理段中共有的空格個(gè)數(shù),存入DX中。4.15、過程定義的一般格式是什么?子程序開始為什么常有PUSH指令,返回前為什么有POP指令?下面完成16位無符號數(shù)累加的子程序是否正確?若有錯(cuò),請改正。jiafaPROCpushaxxorax,axxordx,dxagain:addax,[bx]adcdx,0incbxincbxloopagainretENDPjiafa4.16、編寫一個(gè)程序,統(tǒng)計(jì)寄存器AX中二進(jìn)制數(shù)位“0”的個(gè)數(shù),結(jié)果以二位十進(jìn)制數(shù)形式顯示到屏幕上。4.17、子程序的參數(shù)傳遞有哪些方法?4.18、編寫一個(gè)求32位數(shù)據(jù)補(bǔ)碼的子程序,通過寄存器傳遞入口參數(shù)。4.19、所謂“校驗(yàn)和”是指不記進(jìn)位的累加,常用于檢查信息的正確性。編寫一個(gè)計(jì)算字節(jié)校驗(yàn)和的子程序。主程序提供入口參數(shù):數(shù)據(jù)個(gè)數(shù)和數(shù)據(jù)緩沖區(qū)的首地址。子程序回送求和結(jié)果這個(gè)出口參數(shù)。4.20、編制一個(gè)子程序,把一個(gè)16位二進(jìn)制數(shù)用4位16進(jìn)制形式在屏幕上顯示出來。4.21、在以BUF為首地址的字緩沖區(qū)中有3個(gè)無符號數(shù),編程將這3個(gè)數(shù)按升序排列,結(jié)果存回原緩沖區(qū)。4.22、在DAT字節(jié)單元中有一個(gè)有符號數(shù),判斷其正負(fù),若為正數(shù),則在屏幕上顯示“+”號;若為負(fù)數(shù),則顯示“-”號;若是0,則顯示0。4.23、編程求1~400中所有奇數(shù)的和,結(jié)果以十六進(jìn)制數(shù)形式顯示到屏幕上。4.24、在以DAT為首地址的字節(jié)緩沖區(qū)中存有100H個(gè)無符號字節(jié)數(shù)據(jù),編程求其最大值與最小值之和,結(jié)果存入RESULT字單元。4.25、在內(nèi)存單元CNT中有一個(gè)字?jǐn)?shù)據(jù),編程將其二進(jìn)制數(shù)顯示到屏幕上。4.26、在以STRG為首地址的緩沖區(qū)中有一組字符串,長度為100,編程實(shí)現(xiàn)將其中所有的英文小寫字母轉(zhuǎn)換成大寫字母,其它的不變。4.27、在以DAT為首地址的內(nèi)存中有100個(gè)無符號數(shù)(數(shù)的長度為字),編程統(tǒng)計(jì)其中奇數(shù)的個(gè)數(shù),結(jié)果以十進(jìn)制形式顯示到屏幕上。要求分別用子程序完成奇數(shù)個(gè)數(shù)統(tǒng)計(jì),用宏完成十進(jìn)制數(shù)顯示。4.28、編寫一段程序,使匯編程序根據(jù)SIGN的值分別產(chǎn)生不同的指令。如果SIGN=0,則用字節(jié)變量DATB中的無符號數(shù)除以字節(jié)變量SCALE;如果SIGN=1,則用字節(jié)變量DATB中的有符號數(shù)除以字節(jié)變量SCALE,結(jié)果都存放在字節(jié)變量RESULT中。習(xí)題四參考答案4.1答:匯編語言是計(jì)算機(jī)能夠提供給用戶使用的最快速有效的語言,它是以處理器指令系統(tǒng)為基礎(chǔ)的低級程序設(shè)計(jì)語言,采用助記符表示指令操作碼,采用標(biāo)識符表示指令操作數(shù)。利用匯編語言編寫程序的主要優(yōu)點(diǎn)是可以直接、有效地控制計(jì)算機(jī)硬件,因而容易創(chuàng)建代碼序列短小、運(yùn)行快速的可執(zhí)行程序。在對程序的空間和時(shí)間要求高的應(yīng)用領(lǐng)域,匯編語言的作用是不容置疑和無可替代的。然而,匯編語言作為一種低級語言也存在很多不足,例如,功能有限、編程難度大、依賴處理器指令,這也限制了它的應(yīng)用范圍。匯編語言源程序由若干語句組成,通常,這些語句可以分為3類,分別是:(1)指令語句;(2)宏指令語句;(3)偽指令語句。匯編語言也由段組成,8086/8088按照邏輯段組織程序,具有代碼段、數(shù)據(jù)段、附加段和堆棧段,段與段之間的順序可以任意排列。需要獨(dú)立運(yùn)行的程序必須包含一個(gè)代碼段,一個(gè)程序只有一個(gè)起始點(diǎn),且必須指示程序的起始點(diǎn)。4.2答:七種存儲(chǔ)模型:①Tiny所有數(shù)據(jù)和代碼都放在一個(gè)段內(nèi),其數(shù)據(jù)和代碼都是近訪問。Tiny程序可以寫成.COM文件格式,COM程序必須從0100H的存儲(chǔ)單元開始。這種模型一般用于小程序。②Small所有數(shù)據(jù)放在一個(gè)64KB的數(shù)據(jù)段內(nèi),所有代碼放在另一個(gè)64KB的代碼段內(nèi),數(shù)據(jù)和代碼也都是近訪問的。這是一般應(yīng)用程序最常用的一種模型。③Medium代碼使用多個(gè)段,一般一個(gè)模塊一個(gè)段,而數(shù)據(jù)則合并成一個(gè)64KB的段組。這樣,數(shù)據(jù)是近訪問的,而代碼則可遠(yuǎn)訪問。④Compact所有代碼都放在一個(gè)64KB的代碼段內(nèi),數(shù)據(jù)則可放在多個(gè)段內(nèi),形成代碼是近訪問的,而數(shù)據(jù)則可為遠(yuǎn)訪問的格式。⑤Large代碼和數(shù)據(jù)都可用多個(gè)段,所以數(shù)據(jù)和代碼都可以遠(yuǎn)訪問。⑥Huge與Large模型相同,其差別是允許數(shù)據(jù)段的大小超過64KB。⑦Flat允許用戶用32位偏移量,但DOS下不允許使用這種模型,只能在OS/2下或其他保護(hù)模式的操作系統(tǒng)下使用。MASM5版本不支持這種模型,但MASM6可以支持。4.3答:需要使用一個(gè)標(biāo)號,如start。對于有數(shù)據(jù)段的程序,簡化段定義下應(yīng)該這樣開始:start:movax,@datamovds,ax匯編語言程序設(shè)計(jì)過程中,有多種返回DOS的方法,但一般用DOS功能調(diào)用的4CH子功能來實(shí)現(xiàn)。應(yīng)用程序的終止代碼是:movax,4c00hint21h匯編結(jié)束是指匯編程序結(jié)束將源程序翻譯成目標(biāo)模塊代碼的過程。源程序的最后必須有一條end偽指令:end[標(biāo)號];其中,可選的標(biāo)號是程序指定的開始執(zhí)行點(diǎn),連接程序以此設(shè)置CS和IP。如:endstart4.4答:邏輯段具有4個(gè)屬性:(1)定位類型(align_type)說明段的起始地址應(yīng)有怎樣的邊界值;(2)組合類型(combine_type)說明程序連接時(shí)的段合并方法;(3)使用類型(use_type)只適用于386及其后繼機(jī)型,它用來指定尋址方式。(4)類別(‘class’)在引號中給出連接時(shí)組成段組的類型名。完整代碼段定義時(shí)的默認(rèn)屬性是:PARA、PRIVATE、USEl64.5答:COM和EXE程序結(jié)構(gòu)。EXE程序有獨(dú)立的代碼段、數(shù)據(jù)段和堆棧段,還可以有多個(gè)代碼段和多個(gè)數(shù)據(jù)段,程序長度可以超過64KB。COM程序只有一個(gè)邏輯段,其中包含數(shù)據(jù)區(qū)、代碼區(qū)和堆棧區(qū),程序代碼長度不超過64KB,程序從100H處開始執(zhí)行。4.6答:(1)moval,23hAND45hOR67h;67H(2)movax,1234h/16+10h;133H(3)movax,254hSHL4;2540H(4)moval,’a’AND(NOT(‘b’-‘B’));21H(5)movax,(76543LT32768)XOR7654h;89ABH4.7.答:(1)42H43H44H0AH10H45H46HFFH-04H04H04HFFH-04H04H04H(2)34H12HFBHFFH------------4.8答:(1)myl_bdb‘PersonalComputer!’(2)my2_bdb64H(3)my3_wdw100dup(?)(4)my4_cequ100(5)my5_cequ<PersonalComputer!>4.9答:(1)movbyteptr[bx],256;改正――movwordptr[bx],256(2)movbx,offsetopw[si];改正――movbx,offsetopw(3)addopbl,opb2;改正――addal,opb2(4)movopbl,al+l;改正――movopbl,al(5)subal,opw;改正――subal,opb1(6)mov[di],1234h;改正――movwordptr[di],1234h4.10答:.MODELSMALL.DATAXDW1234HYDW4321HMAXDW?.CODESTART:MOVAX,@DATAMOVDS,AXMOVAX,XCMPAX,YJNZNEQUMOVMAX,0FFFFHJMPSTOPNEQU:JCNEXTMOVMAX,XJMPSTOPNEXT:MOVMAX,YSTOP:MOVAX,4C00HINT21HENDSTART4.11答:.MODELSMALL.DATADATDW9234HSIGNDW?.CODESTART:MOVAX,@DATAMOVDS,AXMOVAX,DATCMPAX,0JZSTOPTESTAX,8000HJNZFUMOVSIGN,0JMPSTOPFU:MOVSIGN,0FFHSTOP:MOVAX,4COOHINT21HENDSTART4.12答:DISPLAYMACROMOVAH,2INT21HENDM.MODELSMALL.DATAXDW1230HYDW1234HZDW1234H.CODESTART:MOVAX,@DATAMOVDS,AXMOVAX,XMOVBX,YCMPAX,ZJNZN1CMPAX,BXJNZN2MOVDL,'Y'DISPLAYSTOP:MOVAX,4C00HINT21HN1:CMPAX,BXJNZN3N2:MOVDL,'X'DISPLAYJMPSTOPN3:CMPBX,ZJNZN4JMPN2N4:MOVDL,'N'DISPLAYJMPSTOPENDSTART4.13答:.MODELSMALL.DATADATDB12H,23H,0F3H,6AH,20H,0FEH,10H,C8H,25H,34HSUMDW?.CODESTART:MOVAX,@DATAMOVDS,AXMOVCX,10MOVDX,0LEABX,DATAGAIN:MOVAL,[BX]CBWMOVDX,AXINCBXLOOPAGAINMOVSUM,DXMOVAX,4C00HINT21HENDSTART4.14答:.MODELSMALL.CODESTART:MOVAX,2000HMOVDS,AXMOVSI,0MOVDX,0MOVCX,0FFFFHAGAIN:MOVAL,[SI]CMPAL,20HJNZNEXTINCDXNEXT:INCSILOOPAGAINMOVAX,4C00HINT21HENDSTART4.15.答:procnamePROC[attributesfield][USESregisterlist][,parameterfield]┇ProcnameENDPpush和pop的使用是為了保護(hù)子程序的調(diào)用的現(xiàn)場,比如寄存器的值。本例中要保護(hù)的寄存器是ax和dx。jiafaPROC;用CX,BX傳參數(shù)――數(shù)據(jù)的個(gè)數(shù)和數(shù)據(jù)的起始地址,結(jié)果放在字內(nèi)存單元SUM和SUM+1pushaxpushdxxorax,axxordx,dxagain:addax,[bx]adcdx,0incbxincbxloopagainmovsum,axmov[sum+1],dxpopdxpopaxretjiafaENDP4.16答:.MODELSMALL.CODESTART:MOVCX,16MOVBL,0;BL中放0的個(gè)數(shù)AGN:SHLAX,1;數(shù)0的個(gè)數(shù)JCNEXTINCBLNEXT:LOOPAGNMOVAL,BLDAAMOVDL,AL;顯示高位ANDDL,0F0HMOVCL,4SHRDL,CLADDDL,30HMOVAH,2INT21HMOVDL,AL;顯示低位ANDDL,0FHADDDL,30HMOVAH,2INT21HMOVDL,0DH;顯示回車MOVAH,2INT21HMOVDL,0AH;顯示換行MOVAH,2INT21HMOVAX,4C00HINT21HENDSTART4.17.答:1、用寄存器傳參數(shù)。2、用共享變量傳參數(shù)。3、用堆棧傳參數(shù)。4.18.答:設(shè)這個(gè)32位數(shù)放在DX.AX中,求補(bǔ)后的結(jié)果也放在DX.AX中。BUMAPROCPUSHBXPUSHCXXORBX,BXXORCX,CXSUBBX,AXMOVAX,BXSBBCX,DXMOVDX,CXPOPCXPOPBXRETBUMAENDP4.19答:設(shè)數(shù)據(jù)個(gè)數(shù)在CX中,數(shù)據(jù)緩沖區(qū)的首地址為BUF。出口參數(shù):校驗(yàn)和放在SUM字節(jié)單元。CHKSUMPROCPUSHAXPUSHBXDECCXLEABX,BUFMOVAL,[BX]AGN:ADDAL,[BX]INCBXLOOPAGNMOVSUM,ALPOPBXPOPAXRETCHKSUMENDP4.20答:設(shè)這個(gè)十六進(jìn)制的字放在數(shù)據(jù)段的TEMP字單元中。BTOHPROCPUSHAXPUSHBXPUSHCXPUSHDXMOVCL,4MOVBX,TEMPMOVDL,BH;最高位SHRDL,CLCMPDL,0AHJCN1ADDDL,7N1:ADDDL,30HMOVAH,2INT21HMOVDL,BH;次高位ANDDL,0FHCMPDL,0AHJCN2ADDDL,7N2:ADDDL,30HMOVAH,2INT21HMOVDL,BL;次低位SHRDL,CLCMPDL,0AHJCN3ADDDL,7N3:ADDDL,30HMOVAH,2INT21HMOVDL,BL;最低位ANDDL,0FHCMPDL,0AHJCN4ADDDL,7N4:ADDDL,30HMOVAH,2INT21HPOPDXPOPCXPOPBXPOPAXRETBTOHENDP4.21答:.MODELSMALL.DATABUFDW9273H,0F3H,6A20H.CODESTART:MOVAX,@DATAMOVDS,AXLEABX,BUFMOVAX,[BX]CMPAX,[BX+2]JBN1XCHGAX,[BX+2]MOV[BX],AXN1:MOVAX,[BX+2]CMPAX,[BX+4]JBN2XCHGAX,[BX+4]MOV[BX+2],AXN2:MOVAX,[BX]CMPAX,[BX+2]JBSTOPXCHGAX,[BX+2]MOV[BX],AXSTOP:;INT3MOVAX,4C00HINT21HENDSTART4.22答:DISPLAYMACROMOVAH,2INT21HENDM.MODELSMALL.DATADATDB9CH.CODESTART:MOVAX,@DATAMOVDS,AXMOVAL,DATCMPAL,0JZZEROJNSPOSIMOVDL,’-’DISPLAYSTOP:MOVAX,4C00HINT21HZERO:MOVDL,’0’DISPLAYJMPSTOPPOSI:MOVDL,’+’DISPLAYJMPSTOPENDSTART4.23答:.MODELSMALL.CODESTART:XORBX,0MOVCX,200MOVDX,1AGN:ADDBX,DX;求和INCDXINCDXLOOPAGNCALLBTOHMOVAX,4C00HINT21HBTOHPROCMOVCL,4MOVDL,BH;最高位SHRDL,CLCMPDL,0AHJCN1ADDDL,7N1:ADDDL,30HMOVAH,2INT21HMOVDL,BH;次高位ANDDL,0FHCMPDL,0AHJCN2ADDDL,7N2:ADDDL,30HMOVAH,2INT21HMOVDL,BL;次低位SHRDL,CLCMPDL,0AHJCN3ADDDL,7N3:ADDDL,30HMOVAH,2INT21HMOVDL,BL;最低位ANDDL,0FHCMPDL,0AHJCN4ADDDL,7N4:ADDDL,30HMOVAH,2INT21HRETBTOHENDPENDSTART4.24答:.MODELSMALL.DATADATDB……;準(zhǔn)備100個(gè)數(shù)RESULTDW?.CODESTART:MOVAX,@DATAMOVDS,AXMOVCX,99LEASI,DATMOVDL,[SI]MOVDH,DLINCSIMOVBX,SIAGN1:CMPDH,[SI];求出最大值JNBNEXT1MOVDH,[SI]NEXT1:INCSILOOPAGN1MOVCX,99AGN2:CMPDL,[BX];求出最小值JBNEXT2MOVDL,[BX]NEXT2:INCBXLOOPAGN2XORAX,AX;求和ADDDH,DLMOVAL,DHADCAX,0MOVRESULT,AX;int3MOVAX,4C00HINT21HENDSTART4.25答:DPLY0MACROMOVDL,30HMOVAH,2INT21HENDMDPLY1MACROMOVDL,31HMOVAH,2INT21HENDM.MODELSMALL.DATACNTDW0AB3FH;準(zhǔn)備數(shù).CODESTART:MOVAX,@DATAMOVDS,AXMOVBX,CNTMOVCX,16AGN:SHLBX,1JCNEXTDPLY0LOOPAGNNEXT:DPLY1LOOPAGNMOVAX,4C00HINT21HENDSTART4.26答:.MODELSMALL.DATASTRGDB……;準(zhǔn)備字符串.CODESTART:MOVAX,@DATAMOVDS,AXLEASI,STRGMOVCX,100AGN:MOVAL,[SI]CMPAL,61HJBN1CMPAL,7AHJAN1SUBAL,20HN1:INCSILOOPAGNMOVAX,4C00HINT21H4.27答:DISPLAYMACRO;將BL中的數(shù)以十進(jìn)制顯示MOVAL,BL;百位MOVAH,0MOVBH,100DIVBHMOVBL,AH;保留余數(shù)CMPAL,1JNZNOMOVDL,31HMOVAH,2INT21HNO:MOVAL,BL;十位MOVAH,0MOVBH,10DIVBHMOVBL,AH;保留余數(shù)MOVDL,ALADDDL,30HMOVAH,2INT21HMOVDL,BL;個(gè)位ADDDL,30HMOVAH,2INT21HENDM.MODELSMALL.DATADATDB……;準(zhǔn)備100無符號字?jǐn)?shù)據(jù).CODESTART:MOVAX,@DATAMOVDS,AXLEASI,DATMOVCX,100CALLTONGJIDISPLAYMOVAX,4C00HINT21HTONGJIPROC;統(tǒng)計(jì)起始地址為SI,長度為CX內(nèi)存中的奇數(shù)個(gè)數(shù),結(jié)果放在BLMOVBL,0AGN:MOVAL,[SI]TESTAL,01HJZNEXTINCBLNEXT:INCSILOOPAGNRETTONGJIENDPENDSTART4.28答:學(xué)習(xí)條件匯編的使用。MOVAL,DATBMOVBL,SCAlEIFESIGNMOVAH,0DIVBLENDIFIFSIGNCBWIDIVBLENDIFMOV[RESULT],AL;商MOV[RESULT+1],AH;余數(shù)第五章課后習(xí)題5.1、選擇題(1)EPROM雖然是只讀存儲(chǔ)器,但在編程時(shí)可向內(nèi)部寫入數(shù)據(jù)。()A.正確B.不正確(2)連接到64000h~6FFFFh地址范圍上的存儲(chǔ)器是用8k×8RAM芯片構(gòu)成的,該芯片要()片。A.8片B.6片C.10片D.12片(3)RAM6116芯片有2K×8位的容量,它的片內(nèi)地址選擇線和數(shù)據(jù)線分別是()A.A0~A15和D0~D15B.A0~A10和D0~D7C.A0~A11和D0~D7D.A0~A11和D0~D15(4)對存儲(chǔ)器訪問時(shí),地址線有效和數(shù)據(jù)線有效的時(shí)間關(guān)系應(yīng)該是()A.數(shù)據(jù)線較先有效B.二者同時(shí)有效C.地址線較先有效D.同時(shí)高電平(5)一臺(tái)微型機(jī),其存儲(chǔ)器首地址為2000H,末地址為5FFFH,存儲(chǔ)容量為()KB。A.8B.10C.12D.16(6)下列哪一種存儲(chǔ)器存取速度最快()?A.SRAMB.磁盤C.DRAMD.EPROM(7)用2164DRAM芯片構(gòu)成8086內(nèi)存的最小容量是()。A.16KBB.32KBC.64KBD.128KB5.2、微機(jī)硬件存儲(chǔ)器分成哪幾級?5.3、計(jì)算機(jī)的內(nèi)存和外存有什么區(qū)別?5.4、半導(dǎo)體存儲(chǔ)器有哪些優(yōu)點(diǎn)?5.5、RAM與CPU的連接主要有哪幾部分?5.6、EPROM存儲(chǔ)器芯片還沒有寫入信息時(shí),各個(gè)單元的內(nèi)容是什么?5.7、在對存儲(chǔ)器芯片進(jìn)行片選時(shí),全譯碼方式、部分譯碼方式和線選方式各有何特點(diǎn)?5.8、某ROM芯片有11根地址線,8根數(shù)據(jù)線,該芯片的存儲(chǔ)容量是多少?5.9、某ROM存儲(chǔ)容量為16K×1位,芯片應(yīng)該有多少根地址線,多少根數(shù)據(jù)線?5.10、SRAM靠_____________存儲(chǔ)信息,DRAM靠_____________存儲(chǔ)信息,為保證DRAM中內(nèi)容不丟失,需要進(jìn)行_______________操作。5.11、用2k×8的SRAM芯片組成16K×16的存儲(chǔ)器,共需SRAM芯片__________片,片內(nèi)地址和產(chǎn)生片選信號的地址分別為__________位。5.12、已知某微機(jī)控制系統(tǒng)中,RAM的容量為8K×8位,首地址為4800H,求其最后一個(gè)單元的地址。5.13、某以8088為CPU的微型計(jì)算機(jī)內(nèi)存RAM區(qū)為00000H~3FFFFH,若采用6264(8KX8)、62256(32KX8)、2164(8KX4)、21256(32KX4)各需要多少芯片?其各自的片內(nèi)和片間地址線分別是多少(全地址譯碼方式)?5.14、利用全地址譯碼將6264芯片接在8088系統(tǒng)總線上,地址范圍為BE000H~BFFFFH,試畫出連接電路圖。5.15、用兩片64K×8位的SRAM芯片,組成8086最小模式下的存儲(chǔ)器子系統(tǒng),要求起始地址為C0000H。試畫出連接圖,指出偶地址存儲(chǔ)體和奇地址存儲(chǔ)體,并對連接圖作詳細(xì)說明。5.16、計(jì)算機(jī)中為什么要采用高速緩存(Cache)?5.17、Cache有哪幾種組織方式?它們各有什么特點(diǎn)?5.18、在Cache系統(tǒng)中,同一個(gè)數(shù)據(jù)既可能存儲(chǔ)在Cache中,又有可能存儲(chǔ)在內(nèi)存中,這時(shí)數(shù)據(jù)的一致性如何解決?習(xí)題五參考答案5.1(1)(A)(2)(B)(3)(B)(4)(C)(5)(D)(6)(A)(7)(D)5.2答:寄存器、Cache、內(nèi)存、外存。5.3答:內(nèi)存:由DRAM構(gòu)成,CPU可以直接訪問,用來存放當(dāng)前正在使用或要經(jīng)常使用的程序或數(shù)據(jù),內(nèi)存的地址空間受CPU地址總線位數(shù)的限制,容量較小,讀寫速度快,價(jià)格相對較高。外存:一般由磁盤、光盤及U盤構(gòu)成,CPU不能直接訪問,需要專門的驅(qū)動(dòng)設(shè)備,讀寫速度較慢,容量較大,價(jià)格相對較低。5.4答:集成度高,存取速度快。計(jì)算機(jī)內(nèi)存一般都使用半導(dǎo)體存儲(chǔ)器。5.5答:數(shù)據(jù)線、地址線、片選線、讀寫控制線。5.6答:FFH5.7答:全譯碼方式:所有的系統(tǒng)地址線都參與對存儲(chǔ)單元的譯碼尋址。其中,低位地址線對片內(nèi)存儲(chǔ)單元進(jìn)行譯碼尋址(片內(nèi)譯碼),高位地址線對存儲(chǔ)芯片進(jìn)行譯碼尋址(片選譯碼),在此方式下,每個(gè)存儲(chǔ)單元的地址都是唯一的,無重復(fù)地址,但譯碼電路復(fù)雜,連線較多。部分譯碼方式:只有部分高位地址線參與對芯片的譯碼,對于被選中的芯片,這些未參與譯碼的高位地址可以是0也可以是1,因此,每個(gè)存儲(chǔ)單元對應(yīng)多個(gè)地址(地址重復(fù)),需要選取一個(gè)可用地址。此譯碼方式可簡化譯碼電路的設(shè)計(jì),但地址重復(fù),系統(tǒng)的部分地址空間被浪費(fèi)。線選方式:只有少數(shù)幾根高位地址線參與芯片的譯碼,且每根負(fù)責(zé)選中一個(gè)芯片(組),此方法構(gòu)成簡單,但地址空間嚴(yán)重浪費(fèi),有地址重復(fù)現(xiàn)象。5.8答:2KB。5.9答:14根地址線,1根數(shù)據(jù)線。5.10答:觸發(fā)器電路(6個(gè)晶體管)、電容、刷新5.11答:(16)、(11、35.12答:67FFH。5.13答:6264(8K×8):片內(nèi)13根和片間5根地址線。62256(32K×8):片內(nèi)15根和片間3根地址線。2164(8K×4):片內(nèi)13根和片間5根地址線。21256(32K×4):片內(nèi)15根和片間3根地址線。5.14答:一片6264的存儲(chǔ)容量是8K×8位,而地址范圍為BE000H~BFFFFH,所以只要一片。低13位地址線是片內(nèi)譯碼,高7位是片選譯碼(A19~A13為:1010111)。5.15答:低16位地址線是片內(nèi)譯碼,高4位是片選譯碼(A19~A16為:1100)。只有A19~A16為1100與A0=1同時(shí)出現(xiàn)才能選中偶地址存儲(chǔ)體;只有A19~A16為1100與=0同時(shí)出現(xiàn)才能選中奇地址存儲(chǔ)體。只有和IO/同時(shí)為0才能讀存儲(chǔ)器;只有和IO/同時(shí)為0才能寫存儲(chǔ)器。5.16答:為了解決CPU和內(nèi)存速度差距大的問題。5.17答:全相聯(lián):主存的一個(gè)塊可能放置到Cache的任何一塊。命中率最高,查找機(jī)制復(fù)雜,代價(jià)大。直接映像:主存的一個(gè)塊可能放置到Cache的唯一一塊。失效率最高,查找機(jī)制簡單,代價(jià)小。組相聯(lián):主存的一個(gè)塊可能映像到Cache的任何一組。命中率和查找機(jī)制介于前兩者之間。5.18答:有如下三個(gè)解決方法:①通寫式(writethrough)如果用這種方法,那么,每當(dāng)CPU把數(shù)據(jù)寫到Cache中時(shí),Cache控制器會(huì)立即把數(shù)據(jù)寫入主存對應(yīng)位置。所以,主存隨時(shí)跟蹤C(jī)ache的最新版本,從而,也就不會(huì)出現(xiàn)主存將新數(shù)據(jù)丟失的問題。此方法的優(yōu)點(diǎn)是簡單,缺點(diǎn)就是每次Cache內(nèi)容有更新,就有對主存的寫入操作,這樣,造成總線活動(dòng)頻繁,系統(tǒng)速度較慢。②緩沖通寫式(bufferedwritethrough)這種方式是在主存和Cache之間加一個(gè)緩沖器,每當(dāng)Cache中作數(shù)據(jù)更新時(shí),也對主存作更新,但是,要寫入主存的數(shù)據(jù)先存在緩沖器中,在CPU進(jìn)入下一個(gè)操作時(shí),緩沖器中的數(shù)據(jù)寫入主存,這樣,避免了通寫式頻繁寫主存而導(dǎo)致系統(tǒng)速度較低的缺點(diǎn)。不過用此方式,緩沖器只能保持一次寫入數(shù)據(jù),如果有兩次連續(xù)的寫操作,CPU還是要等待。③回寫式(writeback)用這種方式時(shí),Cache每一個(gè)塊的標(biāo)記中都要設(shè)置一個(gè)更新位,CPU對Cache中的一個(gè)塊寫入后,其更新位置1。當(dāng)Cache中的塊要被新的主存塊替換時(shí),如更新位為1,則Cache控制器先把Cache現(xiàn)有內(nèi)容寫入主存相應(yīng)位置,并把更新位清0,再作替換。所以,用回寫式時(shí),只要更新的塊不被替換,那么就不會(huì)寫入主存,這樣,真正寫入主存的次數(shù)可能少于程序的寫入次數(shù),從而,可以提高效率。但是,用這種方式,Cache控制器比較復(fù)雜。習(xí)題66.1、試說明一般中斷系統(tǒng)的組成和功能。6.2、什么是中斷類型碼、中斷向量、中斷向量表?在基于8086/8088的微機(jī)系統(tǒng)中,中斷類型碼和中斷向量之間有什么關(guān)系?6.3、什么是硬件中斷和軟件中斷?在PC機(jī)中兩者的處理過程有什么不同?6.4、試敘述基于8086/8088的微機(jī)系統(tǒng)處理硬件中斷的過程。6.5、在PC機(jī)中如何使用“用戶中斷”入口請求中斷和進(jìn)行編程?6.6、8259A中斷控制器的功能是什么?6.7、8259A初始化編程過程完成那些功能?這些功能由那些ICW設(shè)定?6.8、8259A在初始化編程時(shí)設(shè)置為非中斷自動(dòng)結(jié)束方式,中斷服務(wù)程序編寫時(shí)應(yīng)注意什么?6.9、8259A的初始化命令字和操作命令字有什么區(qū)別?它們分別對應(yīng)于編程結(jié)構(gòu)中那些內(nèi)部寄存器?6.10、8259A的中斷屏蔽寄存器IMR與8086中斷允許標(biāo)志IF有什么區(qū)別?6.11、80X86的中斷系統(tǒng)有哪幾種中斷類型?其優(yōu)先次序如何?6.12、什么是中斷向量表?若編制一個(gè)中斷服務(wù)程序,其中斷類型約定為80H,則它的入口地址(包括段地址和偏移地址)應(yīng)放置在中斷向量表中的哪幾個(gè)單元?6.13、簡述80X86CPU對可屏蔽中斷INTR的響應(yīng)過程。6.14、若8086系統(tǒng)采用單片8259A中斷控制器控制中斷,中斷類型碼給定為20H,中斷源的請求線與8259A的IR4相連,試問:對應(yīng)該中斷源的中斷向量表入口地址是什么?若中斷服務(wù)程序入口地址為4FE24H,則對應(yīng)該中斷源的中斷向量表內(nèi)容是什么,如何定位?6.15、試按照如下要求對8259A設(shè)定初始化命令字:8086系統(tǒng)中只有一片8259A,中斷請求信號使用電平觸發(fā)方式,全嵌套中斷優(yōu)先級,數(shù)據(jù)總線無緩沖,采用中斷自動(dòng)結(jié)束方式。中斷類型碼為20H~27H,8259A的端口地址為B0H和B1H。6.16、給定SP=0100H、SS=2010H、PSW=0240H,在存儲(chǔ)單元中已有內(nèi)容為(00084)=107CH、(00086H)=00A7H,在段地址為13C2H及偏移地址為0210H的單元中,有一條中斷指令I(lǐng)NT21H。試指出在執(zhí)行INT21H指令,剛進(jìn)入它的中斷服務(wù)程序時(shí),SS、SP、CS、IP、PSW的內(nèi)容是什么?棧頂?shù)?個(gè)字的內(nèi)容是什么(用圖表示)?6.17、中斷處理程序的入口處為什么通常需要使用STI指令?6.18、試編寫這樣一個(gè)程序段,它首先讀出8259A中IMR寄存器的內(nèi)容,然后屏蔽掉除IR1以外的其它中斷。設(shè)8259A的偶地址端口為20H,奇地址端口為21H。6.19、假設(shè)某80X86系統(tǒng)中采用一片8259A芯片進(jìn)行中斷管理。設(shè)8259A工作在全嵌套工作方式下,采用非自動(dòng)結(jié)束中斷命令,中斷請求采用邊沿觸發(fā)方式,IR0所對應(yīng)的中斷類型號為80H。8259A在系統(tǒng)中的端口地址為280H和281H,試編寫該系統(tǒng)中8259A的初始化程序段。習(xí)題六參考答案6.1、答:處理器內(nèi)部應(yīng)有中斷請求信號的檢測電路,輸出中斷響應(yīng)信號,保存斷點(diǎn)的邏輯,轉(zhuǎn)向中斷處理程序的邏輯,中斷返回邏輯。系統(tǒng)中要有一中斷控制器,管理多個(gè)中斷源,提供處理機(jī)所需的中斷處理信息。系統(tǒng)中請求中斷處理的I/O接口電路要有提供中斷請求信號及接收中斷響應(yīng)信號的邏輯。6.2、答:處理機(jī)可處理的每種中斷的編號為中斷類型碼。中斷向量是指中斷處理程序的入口地址,由處理機(jī)自動(dòng)尋址。中斷向量表是存放所有類型中斷處理程序入口地址的一個(gè)默認(rèn)的內(nèi)存區(qū)域。在8086系統(tǒng)中,中斷類型碼乘4得到向量表的入口,從此處讀出4字節(jié)內(nèi)容即為中斷向量。6.3、答:硬件中斷是通過中斷請求線輸入電信號來請求處理機(jī)進(jìn)行中斷服務(wù);軟件中斷是處理機(jī)內(nèi)部識別并進(jìn)行處理的中斷過程。硬件中斷一般是由中斷控制器提供中斷類型碼,處理機(jī)自動(dòng)轉(zhuǎn)向中斷處理程序;軟件中斷完全由處理機(jī)內(nèi)部形成中斷處理程序的入口地址并轉(zhuǎn)向中斷處理程序,不需外部提供信息。6.4、答:以INTR請求為例。當(dāng)8086收到INTR的高電平信號時(shí),在當(dāng)前指令執(zhí)行完且IF=1的條件下,8086在兩個(gè)總線周期中分別發(fā)出INTA#有效信號;在第二個(gè)INTA#期間,8086收到中斷源發(fā)來的一字節(jié)中斷類型碼;8086完成保護(hù)現(xiàn)場的操作,CS、IP內(nèi)容進(jìn)入堆棧,清除IF、TF;8086將類型碼乘4后得到中斷向量入口地址,從此地址開始讀取4字節(jié)的中斷處理程序的入口地址,8086從此地址開始執(zhí)行程序,完成了INTR中斷請求的響應(yīng)過程。6.5、答:PC機(jī)中分配給用戶使用的中斷是IRQ9,經(jīng)擴(kuò)展插槽B4引出,故把用戶的中斷請求線連接到B4上。在應(yīng)用程序中,利用25H號系統(tǒng)調(diào)用將中斷服務(wù)程序的入口地址寫入對應(yīng)0AH類型中斷對應(yīng)的中斷向量表中去。在應(yīng)用程序中把主片8259AD2屏蔽位清0,把從片8259AD1屏蔽位清0,使主片的IR2、從片的IR1可以輸入中斷請求。中斷服務(wù)程序結(jié)束前向主片8259A發(fā)中斷結(jié)束命令。應(yīng)用程序結(jié)束之前對主片的IR2和從片的IR1進(jìn)行屏蔽,關(guān)閉用戶中斷請求。6.6、答:8259A中斷控制器可以接受8個(gè)中斷請求輸入并將它們寄存。對8個(gè)請求輸入進(jìn)行優(yōu)先級判斷,裁決出最高優(yōu)先級進(jìn)行處理,它可以支持多種優(yōu)先級處理方式。8259A可以對中斷請求輸入進(jìn)行屏蔽,阻止對其進(jìn)行處理。8259A支持多種中斷結(jié)束方式。8259A與微處理器連接方便,可提供中斷請求信號及發(fā)送中斷類型碼。8259A可以進(jìn)行級連以便形成多于8級輸入的中斷控制系統(tǒng)。6.7、答:初始化編程用來確定8259A的工作方式。ICW1確定8259A工作的環(huán)境:處理器類型、中斷控制器是單片還是多片、請求信號的電特性。ICW2用來指定8個(gè)中斷請求的類型碼。ICW3在多片系統(tǒng)中確定主片與從片的連接關(guān)系。ICW4用來確定中斷處理的控制方法:中斷結(jié)束方式、嵌套方式、數(shù)據(jù)線緩沖等。6.8、答:在中斷服務(wù)程序中,在返回主程序之前按排一條一般中斷結(jié)束命令指令,8259A將ISR中最高優(yōu)先級位置0,結(jié)束該級中斷處理以便為較低級別中斷請求服務(wù)。6.9、答:8259A的工作方式通過微處理器向其寫入初始化命令字來確定。初始化命令字分別裝入ICW1~ICW4內(nèi)部寄存器。8259A在工作過程中,微處理器通過向其寫入操作命令字來控制它的工作過程。操作命令字分別裝入OCW1~OCW3內(nèi)部寄存器中。8259A占用兩個(gè)端口號,不同的命令字對應(yīng)不同的端口,再加上命令字本身的特征位及加載的順序就可以正確地把各種命令字寫入對應(yīng)的寄存器中。6.10、答:IF是8086微處理器內(nèi)部標(biāo)志寄存器的一位,若IF=0,8086就不響應(yīng)外部可屏蔽中斷請求INTR引線上的請求信號。8259A有8個(gè)中斷請求輸入線,IMR中的某位為1,就把對應(yīng)這位的中斷請求IR禁止掉,無法被8259A處理,也無法向8086處理器產(chǎn)生INTR請求。6.12、答:中斷服務(wù)程序第一條指令所在的地址稱為該中斷服務(wù)程序的中斷向量。存放在00200H、00201H、00202H、00203H四個(gè)內(nèi)存單元中,其中00200H、00201H兩個(gè)單元中存放的是偏移地址,00202H、00203H兩個(gè)單元中存放的是段地址。6.14、答:中斷向量表入口地址為:0段的0090H地址。對應(yīng)4FE24H中斷服務(wù)程序入口,在向量表中定位情況:(0090H)=24H、(0091H)=00H、(0092H)=E0H、(0093H)=4FH。6.15、答:ICW1=1BH(送B0H端口),ICW2=20H(送B1H端口),ICW4=03H(送B1H端口)6.16、答:SS=2010H,SP=00FAH,CS=00A7H,IP=107CH,PSW=0040H。棧頂三個(gè)字的內(nèi)容為:000FAH12H000FBH02H000FCHC2H000FDH13H000FEH40H000FFH02H6.17、答:因?yàn)樵贑PU響應(yīng)中斷時(shí),會(huì)把中斷允許標(biāo)志位設(shè)置為0,即禁止CPU再響應(yīng)可屏蔽中斷,在中斷處理程序的入口處使用STI指令開放中斷,允許響應(yīng)更高級的中斷,實(shí)現(xiàn)中斷嵌套。6.18、答:INAL,21HORAL,0FDHOUT21H,AL6.19、答:MOVAL,13HOUT280H,ALMOVAL,10HOUT21H,ALMOVAL,01HOUT21H,AL習(xí)題77.1、設(shè)8253三個(gè)計(jì)數(shù)器的端口地址為201H、202H、203H,控制寄存器端口地址200H。試編寫程序片段,讀出計(jì)數(shù)器2的內(nèi)容,并把讀出的數(shù)據(jù)裝入寄存器AX。7.2、設(shè)8253三個(gè)計(jì)數(shù)器的端口地址為201H、202H、203H,控制寄存器端口地址200H。輸入時(shí)鐘為2MHz,讓1號通道周期性的發(fā)出脈沖,其脈沖周期為1ms,試編寫初化程序段。7.3、設(shè)8253計(jì)數(shù)器的時(shí)鐘輸入頻率為1.91MHz,為產(chǎn)生25KHz的方波輸出信號,應(yīng)向計(jì)數(shù)器裝入的計(jì)數(shù)初值為多少?7.4、設(shè)8253的計(jì)數(shù)器0,工作在方式1,計(jì)數(shù)初值為2050H;計(jì)數(shù)器1,工作在方式2,計(jì)數(shù)初值為3000H;計(jì)數(shù)器2,工作在方式3,計(jì)數(shù)初值為1000H。如果三個(gè)計(jì)數(shù)器的GATE都接高電平,三個(gè)計(jì)數(shù)器的CLK都接2MHz時(shí)鐘信號,試畫出OUT0、OUT1、OUT2的輸出波形。7.5、試簡述微機(jī)系統(tǒng)中定時(shí)器/計(jì)數(shù)器的必要性和重要性,以及定時(shí)實(shí)現(xiàn)的常用方法。7.6、可編程定時(shí)器/計(jì)數(shù)器8253/8254有幾個(gè)通道?各通道有幾種工作方式?各種工作方式的主要特點(diǎn)是什么?8254與8253有什么區(qū)別?7.7、8253的初始化編程包括哪幾項(xiàng)內(nèi)容?它們在順序上有無要求,如何要求?7.8、何謂日時(shí)鐘?日時(shí)鐘運(yùn)行原理是什么?7.9、日時(shí)鐘定時(shí)中斷的作用是什么?修改日時(shí)鐘定時(shí)中斷的一般步驟和方法是什么?7.10、8253通道0的定時(shí)中斷是硬中斷(8號中斷),它不能被用戶調(diào)用,當(dāng)用戶對系統(tǒng)的時(shí)間進(jìn)行修改時(shí),需采用軟中斷INT1AH。試問這兩種中斷有何關(guān)系?習(xí)題七參考答案7.1答:MOVAL,80HOUT200H,ALINAL,203HMOVBL,ALINAL,203H,MOVBH,ALMOVAX,BX7.2答:要輸出脈沖周期為1ms,輸出脈沖的頻率是,當(dāng)輸入時(shí)鐘頻率為2MHz時(shí),計(jì)數(shù)器初值是使用計(jì)數(shù)器1,先讀低8位,后讀高8位,設(shè)為方式3,二進(jìn)制計(jì)數(shù),控制字是76H。設(shè)控制口的地址是200H,計(jì)數(shù)器0的地址是202H。程序段如下:MOVDX,200HMOVAL,76HOUTDX,,ALMOVDX,202HMOVAX,2000OUTDX,ALMOVAL,AHOUTDX,AL7.3答:=76.4應(yīng)向計(jì)數(shù)器裝入的初值是76。7.4答:計(jì)數(shù)器0工作在方式1,即可編程的單脈沖方式。這種方式下,計(jì)數(shù)的啟動(dòng)必須由外部門控脈沖GATE控制。因?yàn)镚ATE接了高電平,當(dāng)方式控制字寫入后OUT0變高,計(jì)數(shù)器無法啟動(dòng),所以O(shè)UT0輸出高電平。計(jì)數(shù)器1工作在方式2,即分頻器的方式。輸出波形的頻率f===666.7HZ,其周期為1.5ms,輸出負(fù)脈沖的寬度等于CLK的周期為0.5μs。計(jì)數(shù)器2工作在方式3,即方波發(fā)生器的方式。輸出頻率f==2000Hz的對稱方波。三個(gè)OUT的輸出波形如下:習(xí)題88.1、比較中斷與DMA兩種傳輸方式的特點(diǎn)。8.2、DMA控制器應(yīng)具有那些功能?8.3、8237A只有8位數(shù)據(jù)線,為什么能完成16位數(shù)據(jù)的DMA傳送?8.4、8237A的地址線為什么是雙向的?8.5、說明8237A單字節(jié)DMA傳送數(shù)據(jù)的全過程。8.6、8237A單字節(jié)DMA傳送與數(shù)據(jù)塊DMA傳送有什么不同?8.7、8237A什么時(shí)候作為主模塊工作,什么時(shí)候作為從模塊工作?在這兩種工作模式下,各控制信號處于什么狀態(tài),試作說明。8.8、說明8237A初始化編程的步驟。8.9、8237A選擇存儲(chǔ)器到存儲(chǔ)器的傳送模式必須具備那些條件?8.10、DMA傳送方式為什么能實(shí)現(xiàn)高速傳送?8.11、簡述8237A的主要功能。8.12、用DMA控制器8237A進(jìn)行內(nèi)存到內(nèi)存?zhèn)鬏敃r(shí),有什么特點(diǎn)?8.13、利用8237A的通道2,由一個(gè)輸入設(shè)備輸入一個(gè)32KB的數(shù)據(jù)塊至內(nèi)存,內(nèi)存的首地址為34000H,采用增量、塊傳送方式,傳送完不自動(dòng)初始化,輸入設(shè)備的DREQ和DACK都是高電平有效。請編寫初始化程序,8237A的首地址用標(biāo)號DMA表示習(xí)題八參考答案8.1、答:中斷方式下,外設(shè)需與主機(jī)傳輸數(shù)據(jù)時(shí)要請求主給予中斷服務(wù),中斷當(dāng)前主程序的執(zhí)行,自動(dòng)轉(zhuǎn)向?qū)?yīng)的中斷處理程序,控制數(shù)據(jù)的傳輸,過程始終是在處理器所執(zhí)行的指令控制之下。直接存儲(chǔ)器訪問(DMA)方式下,系統(tǒng)中有一個(gè)DMA控制器,它是一個(gè)可驅(qū)動(dòng)總線的主控部件。當(dāng)外設(shè)與主存儲(chǔ)器之間需要傳輸數(shù)據(jù)時(shí),外設(shè)向DMA控制器發(fā)出DMA請求,DMA控制器向中央處理器發(fā)出總線請求,取得總線控制權(quán)以后,DMA控制器按照總線時(shí)序控制外設(shè)與存儲(chǔ)器間的數(shù)據(jù)傳輸而不是通過指令來控制數(shù)據(jù)傳輸,傳輸速度大大高于中斷方式。8.2、答:DMA控制器應(yīng)有DMA請求輸入線,接收I/O設(shè)備的DMA請求信號;DMA控制器應(yīng)有向主機(jī)發(fā)出總線請求的信號線和接收主機(jī)響應(yīng)的信號線;DMA控制器在取得總線控制權(quán)以后應(yīng)能發(fā)出內(nèi)存地址、I/O讀寫命令及存儲(chǔ)器讀寫命令控制I/O與存儲(chǔ)器間的數(shù)據(jù)傳輸過程。8.3、答:I/O與存儲(chǔ)器間在進(jìn)行DMA傳送過程中,數(shù)據(jù)是通過系統(tǒng)的數(shù)據(jù)總線傳送的,不經(jīng)過8237A的數(shù)據(jù)總線,系統(tǒng)數(shù)據(jù)總線是具有16位數(shù)據(jù)的傳輸能力的。8.4、答:8237A的A0~A3地址線是雙向的,當(dāng)8237A被主機(jī)編程或讀狀態(tài)處于從屬狀態(tài),A0~A3為輸入地址信號,以便主機(jī)對其內(nèi)部寄存器進(jìn)行尋址訪問。當(dāng)8237A取得總線控制權(quán)進(jìn)行DMA傳送時(shí),A0~A3輸出低4位地址信號供存儲(chǔ)器尋址對應(yīng)單元用,A0~A3必需是雙向的。8.5、答:8237A取得總線控制權(quán)以后進(jìn)行單字節(jié)的DMA傳送,傳送完一個(gè)字節(jié)以后修改字節(jié)計(jì)數(shù)器和地址寄存器,然后就將總線控制權(quán)放棄。若I/O的DMA請求信號DREQ繼續(xù)有效,8237A再次請求總線使用權(quán)進(jìn)行下一字節(jié)的傳送。8.6、答:單字節(jié)傳送方式下,8237A每傳送完一個(gè)字節(jié)數(shù)據(jù)就釋放總線,傳送下一字節(jié)時(shí)再請求總線的控制權(quán)。塊傳送方式下8237A必須把整個(gè)數(shù)據(jù)塊傳送完才釋放總線。8.7、答:8237A取得總線控制權(quán)后,開始進(jìn)行DMA傳送過程,此時(shí)8237A作為主模塊工作。8237A在被處理器編程或讀取工作狀態(tài)時(shí),處于從模塊工作狀態(tài)。8237A處于從模塊時(shí),若CS#=0、HLDA=0說明它正被編程或讀取狀態(tài),IOR#與IOW#為輸入,A0~A3為輸入。8237A處于主模塊時(shí),輸出地址信號A0~A15(低8位經(jīng)A0~A7輸出,高8位經(jīng)DB0~DB7輸出)。8237A還要輸出IOR#、IOW#、MEMR#、MEMW#、AEN、ADSTB等有效信號供DMA傳送過程使用。8.8、答:(1)寫屏蔽字,阻止某通道的DMA請求。(2)寫命令字(8號地址),確定信號有效電平、優(yōu)先級方式、通道工作允許等。(3)寫模式字(B號地址),確定某通道傳送方式、傳送類型、地址寄存器變化方式等。(4)置0先/后觸發(fā)器。(5)設(shè)置地址寄存器、字節(jié)數(shù)寄存器的初值。(6)清除某通道屏蔽位,允許8237A響應(yīng)其DMA請求。8.9、答:必須使用8237A內(nèi)部的暫存器作為數(shù)據(jù)傳送的緩沖器。8237A通道0的地址寄存器存放存儲(chǔ)器的源地址、通道1的地址寄存器存放存儲(chǔ)器的目的地地址、字節(jié)計(jì)數(shù)器存放傳送的字節(jié)數(shù),建立通道0的軟件DMA請求來啟動(dòng)這一傳輸過程。8.13、答:設(shè)存儲(chǔ)器頁面寄存器內(nèi)容已被置為3。8237A初始化程序如下:MOVAL,06H;屏蔽通道2MOVDX,DMA+0AH;OUTDX,AL;MOVAL,80H;寫通道2命令字:DREQ、MOVDX,DMA+08H;DACK高電平有效,正常DUTDX,AL;時(shí)序、固定優(yōu)先級、允許8237A工作等。MOVAL,86H;寫通道2模式字:塊傳MOVDX,DMA+0BH;輸、寫傳輸、地址增、OUTDX,AL;禁止自動(dòng)預(yù)置等。MOVDX,DMA+0CH;置0先/后觸發(fā)器OUTDX,AL;MOVAL,00H;設(shè)通道2基地址為4000HMOVDX,DMA+04H;OUTDX,AL;MOVAL,40H;OUTDX,AL;MOVAL,0FFH;設(shè)通道2基字節(jié)數(shù)為MOVDX,DMA+05H;7FFFH(32767D)OUTDX,AL;MOVAL,7FH;OUTDX,AL;MOVAL,02H;清除通道2屏蔽。MOVDX,DMA+0AH;OUTDX,AL;MOVAL,06H;通道2發(fā)DMA請求MOVDX,DMA+09H;OUTDX,AL;習(xí)題99.1、填空題(1)8255A端口C按位置位/復(fù)位控制字的()位用來指定置位或復(fù)位的端口C的具體位置。(2)8255A端口C按位置位/復(fù)位控制字的()位決定對端口C的某一位置位或復(fù)位。(3)8255A端口A工作在方式2時(shí),使用端口C的()作為CPU和外部設(shè)備的聯(lián)絡(luò)信號。(4)8255A與CPU連接時(shí),地址線一般與CPU的地址總線的()連接。(5)8255A控制的最高位的D7=()時(shí),表示該控制字為方式控制字。(6)8255A的端口A的工作方式是方式控制字的()位決定。(7)8255A的端口B的工作由方式控制字的()位決定。(8)Intel8255A是一個(gè)()端口。(9)8255A內(nèi)部只有端口()沒有輸入鎖存功能。9.2、8255A的方式0一般使用在什么場合?在方式0時(shí),如果使用應(yīng)答信號進(jìn)行聯(lián)絡(luò),

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論