微型計算機技術第三版孫德文編課后習題答案全市公開課金獎市賽課一等獎課件_第1頁
微型計算機技術第三版孫德文編課后習題答案全市公開課金獎市賽課一等獎課件_第2頁
微型計算機技術第三版孫德文編課后習題答案全市公開課金獎市賽課一等獎課件_第3頁
微型計算機技術第三版孫德文編課后習題答案全市公開課金獎市賽課一等獎課件_第4頁
微型計算機技術第三版孫德文編課后習題答案全市公開課金獎市賽課一等獎課件_第5頁
已閱讀5頁,還剩124頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

微型計算機原理《微型計算機技術》《微型計算機技術及應用》,清華大學出版社,戴梅萼等編著。第1頁第一章微型計算機概論1.1微型計算機介紹1.1.1基本概念一、微處理器由一片或幾片大規模集成電路組成含有運算器和控制器功效中央處理器(CPU或MPU)二、微型計算機三、微型計算機系統第2頁

第3頁

運算器微處理器控制器存放器組微型計算機內部總線(片總線)(主機)內存放器(RAM和ROM)輸入/輸出接口(并行和串行)系統總線(內總線、微機總線)(AB、DB、CB)硬件定時電路(時鐘脈沖發生器)外存放器(磁盤、磁帶、光盤)外部設備輸入設備(鍵盤、鼠標等)微型輸出設備(CRT、打印機、繪圖儀等)計算機外圍設備專用電路(過程控制I/O通道)(A/D、D/A、數據終端等)系統外總線(通信總線)電源、面板和機架等軟件系統軟件應用軟件

考慮到總線微機系統,如圖1-3第4頁1.1.2微處理器發展簡況從1946年經歷了5代,從71年開始,微機是第四代,也已經歷了4代.第一代(1971~73)4位和低級8位微處理器集成度:2300管子/片,時鐘:1MHz如:Intel4004、Intel4040、Intel8008第二代(73~78)中、高檔8位微處理器集成度:5400管子/片,時鐘:2~4MHz如:Intel8080、MC6800、Z-80、Intel8085第三代(78~81)16位微處理器集成度:68000管子/片,時鐘:4~10MHz如:Intel8086、MC68000和68010、Z-8000第5頁

性能欲趕上中等小型機。第四代(81~)32位微處理器集成度:17萬~100萬管子/片,時鐘:20~,200MHz~如:Intel80386、Intel80486、Pentium(Pro、MMX、I~IV)、MC68020、MC68030、MC68040、Z80000第6頁1.1.3微型計算機分類概述(一)按數據總線位數劃分1、4位微機應用:2、8位微機3、16位微機4、32位微機5、位片式第7頁(二)按組裝形式和系統規模劃分1、單片機(微控制器、嵌入式計算機)微型計算機制作在一個芯片中,有時包含A/D、D/A轉換器。應用:智能化儀器儀表,控制領域。特點:體積小、功耗低。慣用:MCS-518系列,-96系列,MC6805。2、單板機微型計算機、小鍵盤、發光二極管顯示器、監控程序等安裝在一塊印刷電路板上。如:TP-801、TP-86第8頁

應用:生產過程實時控制、教學試驗。3、個人計算機(PersonalComputer)由微處理器芯片、存放器、接口裝在印刷電路上,加上插件板組成主機,再配上外部設備、系統軟件組成。特點:便于搬動,不需要維護,價格低,可供個人或家庭使用計算機。如:Altair8080、AppleII、IBM-PC/XT、IBM-PC/AT、IBM-PS/2、PC兼容機(PC286、386、486、Pentium等)應用:商業、家用、科學和教育領域。4、工程工作站和超級微型機第9頁第二章80X86微處理器結構重點介紹8086和80386結構特點、編程結構、引腳信號功效及總線時序。2.1從8086到PentiumIII2.1.1Intel8086微處理器基本結構16位,約29000個晶體管,頻率有5、8、10MHz。一、組成由總線接口部件BIU和執行部件EU組成。第10頁

1、總線接口部件BIU負責與存放器、I/O端口傳送數據。組成:16位段存放器(CS、DS、SS、ES)16位指令指針(IP)6個字節指令隊列地址形成邏輯(20位地址加法器)(I/O)總線控制邏輯功效:1)在EU執行指令過程中,BIU一直能從存放器中預先取出一些指令送到指令隊列中排隊,遵從先進先出次序。第11頁

2)依據EU請求,完成CPU與存放器或I/O設備之間數據傳送,形成20位內存物理地址。2、執行部件EU負責指令執行。組成:16位算術/邏輯單元ALU(加法器)16位狀態標志存放器4個通用存放器(AX、BX、CX、DX)AH和AL4個專用存放器(SP、BP、DI、SI)暫存(運算)存放器EU控制系統第12頁

注:1)存放器組和數據傳輸通路間可進行快速傳輸。2)EU不與系統總線相聯。功效:1)從BIU指令隊列中獲取指令、執行指令。2)向BIU發出請求,提供數據和所需訪問內存或I/O端口地址信息。3)對通用存放器和標志存放器進行管理,主要操作類型:1)算術/邏輯運算、串處理、BCD碼調整。2)計算尋址要求單元地址位移量,EU將這個16位位移量送BIU。第13頁

二、工作方式微處理器經過總線和外部部件交換信息,當執行一條指令時,普通要占用二次總線,總線非常忙,要提升微處理器利用率和整個系統執行速度,必須充分利用總線。并行工作方式:BIU和EU處于并行工作狀態,取指令與數據不占用額外時間,在執行指令時同時取下一條指令與數據,這么總線總不空閑。第14頁2.1.2Intel80286微處理器基本結構標準16位處理器,8086向上兼容。一、組成:4個部件地址部件AU:形成物理地址指令部件IU:譯碼,放已被譯碼指令隊列執行部件EU:執行指令總線部件BU:取代碼和讀寫數據,CPU與系統間高速接口,放預取隊列。二、并行工作方式指令可預取、預譯,提升吞吐率。第15頁

三、優點1、速度更加快2、地址空間更大,24位,虛存可達1GB。3、工作于兩種方式1)實方式(實地址方式)DOS應用程序占用全部系統資源。2)保護方式(保護虛地址方式)A、經過硬件控制多任務間快速切換,用四層特權支持操作系統和任務分離及程序和數據保密,含有多用戶和多任務處理功效。B、含有虛擬內存管理,經過軟件切換進入虛擬8086工作方式。第16頁2.1.3Intel80386微處理器基本結構1985年推出,32位微處理器,片內集成27.5萬只晶體管,速率從12.5MHz,高達50MHz。一、組成由三大部分六個部件組成。如圖2-3所表示。1、總線接口部件BIU中央處理部件與系統之間高速接口,對總線使用進行排優,進行總線傳送控制以充分利用總線寬度,并對80386和協處理器協調進行控制。第17頁

第18頁

2、中央處理部件CPU1)指令預取部件IPU16字節長,在總線空閑周期,讀4個字節,可存5條指令(平均3.5字節/條)。2)指令預譯碼部件IDU(譯碼器和譯碼指令隊列)3)執行部件EUALU、8個32位通用存放器、64位移位存放器、乘/除法器。采取流水線技術:1)指令提取和執行重合進行;第19頁

2)有效地址形成,邏輯地址往線性地址轉換,線性地址往物理地址轉換這三個動作重合進行。3、(集成)存放管理部件MMU1)分段部件SU:管理邏輯地址空間,將邏輯地址轉換為線性地址,面向程序員。為便于多任務實現指令與數據區重新定位及任務間隔離,以提供模塊性和保護性。各任務程序以段空間為目標分別編程。段長度可變,小于4GB,整個邏輯空間為16K個段=214=64MMB2)分頁部件PU:管理物理地址空間,將線性地址轉為物理地址。第20頁

段可分為頁面,頁小于等于4KB,取4KB。把活動任務當前所需少許頁面放在存放器中,提升存取效率。在禁止分頁或無PU時,物理地址=線性地址。第21頁二、主要性能1、靈活32位微處理器可8、16、32或位場等各種數據類型。2、存放空間32位地址總線232=4GB虛擬存放空間246=64TB存放器分段結構,段長可達4GB3、集成存放管理部件(1)支持虛擬存放器(2)可選擇片內分頁機構第22頁

(3)4級保護(4)與80286完全兼容4、目標代碼與8086系列微處理器兼容5、三種工作方式(1)實地址方式(2)保護方式支持硬件調度(3)虛擬8086方式允許在受保護和分頁系統中運行8086軟件,可同時模擬多個8086微處理器,使DOS程序能在保護方式下作為其中一個任務運行。第23頁

6、優化系統性能(1)指令流水線結構(2)含有片內地址轉換高速緩沖存放器(3)時鐘可達33MHz,總線周期僅2T(4)總線帶寬32MB/S7、經過80387協處理器支持高速數值處理8、完整系統開發工具9、高速CHMOSIII技術當系統閑置時,CPU將工作頻率降到0MHz,此時功耗極低。第24頁2.1.4Intel80486微處理器基本結構特點1989年問世,集成120萬晶體管,頻率可達50MHz,支持二級Cache,基本沿用80386體系結構,同80386相比,其特點:(1)采取RISC技術,同時以布線邏輯代替微代碼控制,在一個時鐘周期執行一條指令;(2)采取片內Cache、片內浮點運算協處理器FPU,引線縮短、片內數據總線加寬,CPU與FPU間采取高速總線傳輸,數據通路是64位和128位,且Cache與浮點存放器間可直接進行數據交換,無須經過80486,提升處理速度。第25頁

(3)采取突發式總線方式,使與一地址相關一組數據都可輸入/輸出,加速CPU與內存數據交換;(4)可模擬多個80286實現多層次多任務功效。第26頁2.1.5IntelPentium微處理器基本結構1993年推出,集成310萬只晶體管,頻率達150MHz,性能超出工作站和超級小型機,同等80486相比,結構上特點:(1)超標量流水線超標量:含多個指令執行部件和多條指令流水線。有U和V兩條指令流水線,各自有獨立ALU、地址生成邏輯和Cache接口,每條流水線分指令預取、指令譯碼、地址生成、指令執行和回寫5個步驟,這么每個時鐘周期內可執行兩條整數指令。第27頁

(2)重新設計浮點部件執行過程分8個流水步級,對MUL、LOAD及MOV、PUSH、DEC、INC等慣用指令不用微程序而由硬件來實現,提升速度。(3)獨立指令Cache和數據Cache降低爭用Cache沖突,采取32*8線寬,以支持64位總線,數據Cache有兩種接口分別與U和V流水線相連,可支持突發式讀寫操作(即向Cache寫數據和釋放回內存可同時進行),提升數據傳輸速度。(4)分支預測有兩條預取指令緩沖隊列,一個以次序方式預取,一個以轉移方式預取(稱分支目標緩沖器。第28頁

某條指令產生分支時,記下該指令和分支目標地址,以預測再次產生分支時路徑,確保流水線預取在執行前取完,而不落空。適合用于循環操作。(5)采取64位外部數據總線Pentium內部數據總線32位,但CPU和內存進行數據交換外部數據總線采取64位總線,提升數據傳輸速度,可達528MB/S。但功耗大15W,浮點運算能力低于一些RISC處理器。可見從16位到32位,主要從體系結構設計上有概念性更新。第29頁2.1.6PentiumPro微處理器(高能飛躍)1995年推出,比Pentium芯片增加內容:(1)一封裝內兩個芯片CPU內核有2個8KBL1Cache;256KBL2Cache,與CPU內核用全速總線相連,提升程序運行速度。(2)指令分解為微操作采取RISC技術,便于流水線并行執行,提升指令運行速度。(3)亂序執行和推測執行使指令流能最有效地利用內部資源。第30頁

(4)超級流水線和超標量技術14級超級流水線結構,3路超標量結構,提升并行處理能力,提升性能。第31頁2.1.7PentiumMMX微處理器IntelP55C(多能飛躍)MMX——MultiMediaextension多媒體擴展1997年推出,在Pentium微處理器中增加新數據類型,8個64位存放器和57條新指令,增加技術:一、引入新數據類型1)用緊縮表示緊縮字節——8個字節緊縮在一個64位數據中緊縮字——4個字緊縮在一個64位數據中緊縮雙字——2個雙字緊縮在一個64位數據中4字——64位第32頁

緊縮64位數據可存放在64通用存放器中,一次操作可處理8個數元,適合用于多媒體處理。例:圖象灰度級256級,用8位(1字節)表示一像素。2)技術采取SIMD(單指令多數據流)技術,在運行一條指令同時并行處理多個數據元素(32位),例:在一個T內處理4種類型或最多8組64位模擬/數字數據二、采取飽和運算(溢出處理)上溢或下溢結果被截取(飽和)至該類數據類型最大值或最小值。第33頁

例:兩16位帶符號數相加F000H+4000H=13000取FFFFH(而不是3000)適合用于圖形學處理。不然,若圖形最高值為黑,最小值為淡色,而一像素上溢則成了淡色。三、含有積和運算能力提升矢量點積和矩陣乘法運算速度。適合用于音頻和視頻圖像壓縮和解壓縮中。第34頁2.1.8PentiumII微處理器1997年5月推出,把多媒體增強技術(MMX技術)融入高能飛躍處理器。含有整數運算、浮點運算和多媒體信息處理功效。采取先進技術:一、多媒體增強技術1)單指令多數據流(SIMD)降低計算密集循環。2)增強了57條功效強大指令,便于處理聲音、圖像及視頻數據。第35頁

二、動態執行技術1)多分支跳轉預測2)數據流分析判定指令是否符合處理條件或他們決定于其它指令,以確定最正確處理次序,有效地執行指令。3)推測執行預先查找程序計數器和執行那些可能會運算指令,并進行排序,增加被執行指令數量。三、雙重獨立總線結構如圖2-6(b)兩條總線,提升吞吐量;第36頁

二級Cache,運行速度提升;流水線系統總線,可同時并行事務處理;帶寬性能是單一總線體系結構3倍。四、采取SEC插盒封裝技術第37頁2.1.9PentiumIII微處理器1999年2月推出,帶有70條附加浮點多媒體指令,分2階段發展。一、帶SSE指令集PentiumII微處理器增加了8個新128位單精度存放器,70條分三類:(1)~(3)p20增強音頻、視頻和3D圖形處理能力二、新一代PentiumIII微處理器(Coppermine)1999年10月推出,主頻733MHz,外頻133MHz第38頁

主要特征:(1)集成度高,發燒量少,功耗低;(2)256KB二級緩存內置,用256位寬帶數據通路;(3)采取先進緩存轉換結構,使處理器關鍵與二級Cache間理論數據帶寬達11.2GB/s;(4)采取先進系統緩沖器增加了許多緩沖器或隊列;(5)采取speedstep技術用電池時,降低電源功耗,延長運行時間;用外接電源時,全速與全電壓方式運行,提升系統靈活性。第39頁2.1.10Pentium4微處理器6月推出,重新設計內核體系結構.6月推出主頻3.8GHzPentium4/750.主要技術特征:(1)采取3條超標量流水線(2)改進了分支預測單元(3)采取跟蹤緩存和低延遲數據緩存(4)采取高級動態執行技術(5)采取64位四倍數據速率處理器前端總線技術第40頁

(6)增加了144條SSE2,引入新數據格式(128位SIMD整數運算和64位雙精度浮點運算)(7)采取超線程技術Pentium系列低端產品:Celeron芯片Pentium系列高端產品:Xeon芯片(用于服務器等)第41頁2.1.11PentiumM微處理器3月推出,主頻900MHz~2GHz.采取迅馳技術,全方面支持無線技術.如:PentiumM755(2GHz),……采取全新體系結構,技術特征:(1)適合于移動微處理器流水線(2)大容量L2Cache(1~2MB)(3)電源優化處理器系統總線(4)高級分支預測技術(5)專用堆棧管理器第42頁

(6)增強型speedstep技術(7)微指令操作融合(批量微指令處理)(8)嵌入雙頻無線連接功效支持IEEE802.11b/a協議.第43頁2.1.12Itanium微處理器11月推出,64位,關鍵技術是EPIC(顯式并行指令計算),其關鍵技術是:(1)斷定執行(2)推測裝入(3)高級裝入(數據推測)使用新型指令集,采取全新設計編譯器.結合CISC,RISC和EPIC三種結構,主要用于高端服務器領域.第44頁

Itanium芯片結構特點:在IA-64體系結構基礎上加超標量體系結構.(1)含有大量存放器128個64位存放器:通用和整數計算128個82位存放器:圖形和浮點運算64個1位斷定存放器128個64位專用存放器8個轉移存放器(2)含有多個執行單元2個整數/MMX執行單元2個浮點執行單元第45頁

2個存放管理執行單元3個轉移處理單元第46頁第三章習題講評3.1已知DS=091DH,SS=1E4AH,AX=1234H,BX=0024H,CX=5678H,BP=0024HSI=0012H,DI=0032H,(09226H)=00F6H,(09228H)=1E40H,(1E4F6H)=091DH。在以上給出環境下,試問以下指令或指令段執行后結果怎樣?(1)MOVCL,[BX+20H][SI]解:EA=BX+20H+SI=56H PA=DS*16+EA=91D0H+56H=9226H CL=(09226H)=F6H(2)MOV[BP][DI],CX解:EA=BP+DI=56H PA=SS*16+EA=1E4F6H(1E4F6H)=

5678H第47頁(3)LEABX,[BX+20H][SI]MOVAX,[BX+2]解:BX=BX+20H+SI=0056HEA=BX+2=58HPA=DS*16+EA=91D0H+58H=9228HAX=(09228H)=1E40H(4)LDSSI,[BX][DI] MOV[SI],BX解:EA=BX+DI=56H,PA=DS*16+EA=91D0H+56H=9226H

SI=(09226H)=00F6H,DS=(09228H)=1E40HEA=SI=00F6H,PA=DS*16+EA=1E400H+00F6H=1E4F6H(1E4F6H)=BX=0024H第48頁(5) XCHGCX,[BX+32H] XCHG[BX+20H][SI],AX解:EA=BX+32H=56H, PA=DS*16+EA=91D0H+56H=9226H

(09226H)=CX=5678H,CX=(09226H)=00F6H

EA=BX+20H+SI=56H,PA=DS*16+EA=91D0H+56H=9226H

AX=(09226H)=5678H

,(09226H)=AX=1234H第49頁3.2設DS=1000H,SS=H,AX=1A2BH,BX=1200H,CX=339AH,BP=1200H,SP=1350H,SI=1354H,(11350H)=0A5H,(11351H)=3CH,(11352H)=0FFH,(11353H)=26H,(11354H)=52H,(11355H)=OE7H,(126A4H)=9DH,(126A5H)=16H,(21350H)=88H,(21351H)=51H以下各指令都在此環境下執行,在以下各小題空格中填入對應各指令執行結果。 (1)MOVAX,1352H AX= 解:AX=1352H (2)MOVAX,[1352H];AX= 解:PA=DS*16+EA=10000H+1352H=11352H (11352H)=0FFH,(11353H)=26H

AX=26FFH (3)MOV0150H[BX],CH (11350H)=(11351H)= 解:EA=BX+0150H=1350H PA=DS*16+EA=10000H+1350H=11350H,CH=33H

(11350H)=33H,(11351H)值不變,(11351H)=3CH第50頁(4) MOVAX,0150H[BP]AX=____解:EA=BP+0150H=1350H PA=SS*16+EA=0H+1350H=21350H

AX=5188H(5)POPAX;AX=____,SP=____解:EA=SP=1350H PA=SS*16+EA=0H+1350H=21350H AX=5188H,SP=1350H+2H=1352H(6)ADD[SI],CX(11354H)=____,(11355H)=____,SF=____ZF=____,PF=____,CF=____,OF=____解:EA=SI=1354H,PA=DS*16+EA=10000H+1354H=11354HCX=339AH,(11354H)=52H,(11355H)=OE7H0E752H+339AH=11AECH->(11355H):(11354H)

(11354H)=0ECH,(11355H)=1AH第51頁(11354H)=0ECH,(11355H)=1AHCF=1,ZF=0,PF(低八位奇偶校驗):0ECH=11101100BPF=0SF(最高位狀態),1H=0001BSF=0 OF(溢出標志) 0E752H=1110011101010010B 339AH=11001110011010B

1110011101010010+1100111001101010001101011101100第52頁(7)SUBBH,0150H[BX][SI]BH=____,SF=____,ZF=____,PF=____,CF=____,0F=____解:EA=0150H+BX+SI=26A4H;PA=DS*16+EA=10000H+26A4H=126A4H;(126A4H)=9DH,BH=12HBH=75H,SF=0,ZF=0,PF=0,CF=1,OF=0(8)INCBYTEPTR0152H[BX](11352H)=____,(11353H)=____,CF=____解:EA=0152H+BX=1352H,PA=DS*16+EA=11352,(11352H)=0FFH,(11352H)=00H,(11353H)=26H,不影響CF(9)INCWORDPTR0152H[BX](11352H)=____,(11353H)=____,CF=____解:EA=0152H+BX=1352H,PA=DS*16+EA=11532,(11352H)=0FFH,(11353H)=26H (11352H)=00H,(11353H)=27H,不影響CF

第53頁(10)SARBYTEPTR0150H[BX],1(11350H)=____,CF=____,OF=____解:EA=BX+0150H=1350H PA=DS*16+EA=11350H,(11350H)=0A5H=10100101B 11010010B=0D2H,CF=1,OF=0(當移位數為1是,最高位不變則OF=0)(11)SALBYTEPTR0150H[BX],1(11350H)=____,CF=____,OF=____解:EA=BX+0150H=1350H,PA=DS*16+EA=11350, (11350H)=0A5H=10100101B01001010B=4AH,CF=1,OF=1第54頁3、3設以下各轉移指令第一字節在內存中地址為CS=H和IP=016EH,且環境均為DS=6000H,BX=16C0H,(616C0H)=46H,(616C1H)=01H,(616C2H)=00H,(616C3H)=30H,(61732H)=70H,(61733H)=17H。寫出以下各無條件轉移指令執行后CS和IP值。個指令左首16進制編碼是該指令機器碼。指令中目標地址用對應標號表示。(1)EBE7JMPSHOURTAGAIN(2)E90016JMPNEARPTROTHER(3)E3JMPBX(4)EA46010010JMPFARPROB(5)FF67JMPWORDPTR0072H[BX](6)FFEBJMPDWORDPTR[BX]第55頁解:(1)E7補碼為-19,IP目標=IP源+2+EA(即-19)=016EH+2-19=0157H因為段內尋址,所以cs=H不變(2)IP目標=IP源+3+EA=016EH+3+1600H=1771H因為段內尋址所以cs=H不變(3)IP=16C0H,因為段內尋址所以cs=H不變(4)段間尋址,有機器碼可看出IP=0146HCS=3000H(5)段內尋址,所以CS=H不變DS*16+0072H+BX=61732H(61732H)=70H,(61733H)=17H

IP=1770H(6)PA=DS*16+BX=60000H+16C0H=616C0H(616C0H)=46H(616C1H)=01HIP=0146H(616C2H)=00H(616C3H)=30HCS=3000H第56頁3.4閱讀以下各小題指令序列,在后面空格中填入該指令序列執行結果。(1)MOVBL,85HMOVAL,17HADDAL,BLDAAAL=____,BL=____,CF=____解:17H+85H=9CHALDAA壓縮BCD碼加法十進制調整指令。(AL低4位>9或AF=1,ALAL+06H,AF1;AF是輔助進位標志用以標志D3向D4進位AL高4位>9或CF=1,ALAL+60H,CF1;)AL=9CH+06H=0A2HAL=0A2H+60H=02H,BL=85HCF=1第57頁(2)MOVAX,BX;NOTAX;ADDAX,BX;lNCAXAX=____,CF=____解:lNC不影響標志位AX=0000H,CF=0(3)MOVAX,0FF60H;STC;MOVDX,96XORDH,0FFH;SBBAXDXAX=____,CF=____解:XOR命令會使CF0,OF0 96=60H,AX=0000H,CF=0(4)MOVBX,0FFFEH;MOVCL,2;SARBX,CLBX=____,CF=____解:0FFFEH=1111111111111110B 1111111111111111B,CF=0 1111111111111111B,CF=1第58頁3.5閱讀分析以下指令序列ADDAX,BXJNOLlJNOL2SUBAX,BXJNCL3JNOL4JMPL5(1)AX=14C6H,BX=80DCH解: ADDAX,BX OF=0,CF=0; L1(2)AX=0B568H,BX=5487H解: ADDAX,BX OF=0,CF=1; L1(3)AX=42C8H,BX=608DH解:ADDAX,BXCF=0,OF=1,AX=0AC55HSUBAX,BX;CF=0,OF=0;L3(4)AX=0D023H,BX=9FDOH解:ADDAX,BXOF=1,CF=1,AX=6FF3HSUBAX,BX;CF=1,OF=1;L5(5)AX=9FDOH,BX=0D023H解:ADDAX,BXOF=1,CF=1,AX=6FF3HSUBAX,BX;CF=1,OF=1;L5第59頁3.6ANDAL,ALJZBRCHlRCRAL,1JZBRCH2RCLAL,1INCALJZBRCH3上述程序運行后,試回答:(1)當AL=00H時,程序轉向BRCHl(2)當AL=01H時,程序轉向BRCH2(3)當AL=0FFH時,程序轉向BRCH3第60頁3.7完成以下操作,選取什么指令:(1)將AX內容減去0520H,和上次運算借位;SBBAX,0520H(2)將變量名TABL段地址送AX。MOVAXSEGTABL3.8D1DB20HDUP(?)D2DWD1請寫出用一條指令實現取D1偏移地址SI中三種方法。(A)LEASI,D1

(B)MOVSI,OFFSETD1

(C)MOVSI,D2

第61頁3.9程序段1程序段2MOVAX,147BHMOVAX,99D8HMOVBX,80DCHMOVBX,9847HADDAX,BXSUBAX,BXJNOL1JNCL3JNCL2JNOL4上述兩個程序段執行后,分別轉移到哪里?解:1)L12)L3第62頁3.10MOVBX,0FFHANDBX,0FFFHORBX,0F0FHXORBX,00FFH上述程序段運行后,BX=0F00H,CF=0

(注意:對于8086加法和減法操作,使用CF來標識將兩個操作數看成無符號數時計算是否發生了溢出,而OF則標識將兩個操作數看成有符號數時情況。計算CF位時,加法操作是直接將最高位進位賦給CF,而對于減法操作而言,轉換后補碼加法有進位表示實際進行減法沒有借位(即沒有溢出),所以需要將最高位進位取反以后賦給CF;對于OF位計算則是相同,經過將最高位進位和次高位進位進行異或運算,結果賦給OF(當然也能夠使用雙符號位來進行計算)。當然對于減法操作而言,我們也能夠簡單地認為:對于CF位,將減數與被減數都看成無符號數,假如減數>被減數,則CF=1,不然CF為0;對于OF位,若兩個數符號相反,而結果符號與減數相同則OF=1,其它情況OF=0。)第63頁3.11CMPAX,BXJGENEXTXCHGAX,BXNEXT:CMPAX,CXJGEDONEXCHGAX,CXDONE:….試回答:(1)上述程序段執行后,原有AX、BX、CX中最大數存放在哪個存放器中?最大數在AX中(2)這3個數是帶符號數還是無符號數?是帶符號數第64頁第4章匯編語言程序設計

習題解答

請打開書P176第65頁習題4.1畫出以下語句數據在存放器中存放情況:ARRAYBDB63,63H,’ABCD’,3DUP(?),2DUP(1,3)ARRAYWDW1234H,5,’AB’,’CD’,?,2DUP(1,3)3FH63H41H42H43H44HXXXXXX01H03H01H03H34H12H05H00H42H41H44H43HXXXX01H00H03H00H01H00H03H00H第66頁習題4.2程序中數據定義以下: DATA1DW? DATA2DB32DUP(?) DATA3DD? DLENGTHEQU$-DATA1此時DLENGTH值是多少?解答:DLENGTH=2(字)+32+4(雙字)=38第67頁習題4.3程序中數據定義以下: ARRAYDB‘ABCDEF’ RESULTDB? TABLEDW20DUP(?)則執行指令 MOVAX,TYPERESULT后,AX=1 MOVBX,TYPETABLE后,BX=2 MOVCX,LENGTHTABLE后,CX=20 MOVDX,LENGTHARRAY后,DX=1 MOVSI,SIZETABLE后,SI=2×20=40 MOVDI,SIZEARRAY后,DI=1第68頁習題4.4指令ANDAX,7315HAND0FFH中,兩個AND有什么差異?這兩個AND操作分別在什么時候執行?解答:(1)指令ANDAX,7315HAND0FFH中第一個AND是指令系統中邏輯“與”指令,而第二個AND是表示式中表示邏輯“與”關系。(2)指令ANDAX,7315HAND0FFH中第一個AND是在CPU執行指令操作時才會執行。而第二個AND是在匯編時就會將7315H和0FFH作邏輯“與”運算,得到結果0015H。然后執行第一個AND指令,完成AX內容與0015H邏輯“與”運算。第69頁習題4.5設BX=1034H,則執行以下指令: MOVAX,BXAND0FFH MOVCX,BXEQ1234H 后,AX和CX各多少?若BX=1234H,則結果怎樣?解答(1)BXAND0FFH=0034H (2)0034H→AX=0034H (3)BXEQ1234H=0000H (4)0000H→CX=0000H結果:AX=0034H;CX=0000H

若BX=1234H,則結果:AX=0034H;CX=FFFFH第70頁習題4.6設已知語句為: ORG0024H DATA1DW4,12H,$+4(0028H+04H=002CH)則執行指令MOVAX,DATA1+4后AX值是多少?解答:(1)DATA1+4=0024H+04H=0028H(2)[0028H]=002CH→AX=002CH0024H04H0025H00H0026H12H0027H00H0028H2CH0029H00H第71頁習題4.7已知數據定義語句為: BUFFERDB16DUP(0,2DUP(1))則其中字數據單元內容為0100H單元數是多少?解答:字數據單元內容為0100H單元數是16個00H01H01H00H01H01H…00H01H01H00H01H01H16DUP16組16組第72頁習題4.8要在以DA1為首地址數據區中依次存放以下數據;‘A’,‘B’,0,0,’C’,’D’,0,0請分別用DB,DW和DD語句實現。解答:(1)DA1DB‘A’,‘B’,0,0,’C’,’D’,0,0(2)DA1DW‘BA’,0,’DC’,0(3)DA1DD‘BA’,’DC’第73頁習題4.9試按以下要求在數據段中依次書寫各數據定義語句:(1)以DA1為首字節連續存放單元中存放20H個重復數據序列:2,3,10個4,一個7。(2)DA2為字符串變量,用字變量(DW)設置一字符串;‘STUDENTS’(按次次序存放在各單元中)。(3)用等值語句給符號COUNT賦值以DA1為首地址數據區共占有字節數,此等值語句必須放在最終一語句。解答:(1)DA1DB20HDUP(2,3,10DUP(4),7)(2)DA2DW‘TS’,‘DU’,‘NE’,’ST’,(3)COUNTEQUDA2-DA1第74頁習題4.10下面程序段是實現從鍵盤輸入十個一位10進制數后累加,最終累加和以非壓縮BCD碼形式存放在AH(高位)和AL(低位)中。試把程序段中所空缺指令填上。 XORBX,BX;BX清零

MOVCX,10

;傳送數據長度LOP:MOVAH,01H;中止INT21H01H號調用 INT21H;中止調用P172,鍵入值送入AL中 MOVAH,BH;將BH內容傳AH ADDAL,BL;BL與AL值相加,結果在AL中

AAA

;非壓縮BCD碼加法調整 MOVBX,AX;累加結果送BX LOOPLOP;CX-1→CX,判斷CX≠0,則轉第75頁習題4.11下面程序段功效是把DA1數據區0-9轉換為對應ASCⅡ碼.

DA1DB00H,01H,02H,03H,04H,05H,06H,07H,08H,09H

ASCIDB10DUP(?) CUNT=ASCI-DA1 LEASI,DA1;送數組DA1首地址偏移量到SI LEADI,ASCI;送數組ASCI首地址偏移量到DI

MOVCX,CUNT;送數組DA1長度LOP1: MOVAL,[SI];取數

ADDAL,30H;或者ORAL,30H;加30H變成ASCⅡ碼 MOV[DI],AL;轉換后存入數組ASCI INCSI;源數據地址加1 INCDI;目標數據地址加1 LOOPLOP1;CX-1→CX,判斷CX≠0,則轉第76頁習題4.12

BUFFDB‘ABD$QC%$A….XYZ’;定義數組BUFF CONTDBEQU$-BUFF;定義長度 … CLD;方向標志DF=0串操作增量 LEADI,BUFF;送數組BUFF首地址偏移量到DI MOVCX,CONT;送數組BUFF長度到CX MOVAL,’$’;送$ASCⅡ碼到AL XORDX,DX;DX清零NEXT:REPNZSCASB;P102,串掃描AL-[ES:DI],若CX≠0且ZF=0則重復執行;若CX=0或ZF=1,退出重復,停頓串操作 CMPCX,0;CX-0,CX內容與0比較 JZK1;P111,等于/為零,則轉移到K1 INCDX;DX加1 JMPNEXT;轉NEXTK1: … 上述程序運行后,DX中值表示意義是什么?答:上述程序運行后,DX中值表示是字符串中符號’$’個數第77頁習題4.13設A,B是長度為10字節數組,用串操作指令編寫程序實現AB兩數組內容相互交換.試完善程序.DATASEGMENT ADB1,2,3,4,5,6,7,8,9,0AH ORG0010H BDB0AH,9,8,7,6,5,4,3,2,1DATAENDS … LEASI,A LEADI,B MOVCX,10第78頁LOP: LODSB XCHGAL,[DI]

XCHGSI,DI DECDI STOSB

XCHGSI,DI INCDI LOOPLOP 第79頁習題4.14現有一子程序:SUB1: PROC TESTAL,80H(10000000B);AL值與80H相“與”,判斷正負 JEPLUS;假如AL首位為0(即為正),則轉移到PLUS;假如AL為負,則次序執行 TESTBL,80H;判斷BL值正負 JNEEXITO;假如BL首位為1(為負),則轉移到EXITO;假如BL為正,則次序執行 JMPXCHANGE;轉移到XCHANGEPLUS: TESTBL,80H;判斷BL值正負 JEEXITO;假如BL首位為0(即為正),則轉移到EXITO;假如BL為負,時次序執行XCHANGE: XCHGAL,BL;AL與BL交換EXITO: RET;返回主程序SUB1 ENDP試回答(1)子程序功效是什么? (2)如調用前AL=9AH,BL=77H,那么返回主程序時AL=?;BL=?解答:(1)子程序功效是判別AL和BL中數是否為異號數,當為異號時交換,不然不變。

(2)AL中數據最高位為1,BL中數據最高位為0,即兩個數為異號,所以要交換AL和BL中內容,即AL=77H,BL=9AH。

第80頁習題4.15編寫一程序段,將AL中第7和第0位,第6和第1位,第5和第2位,第4和第3位交換.MOV

CX,8;

MOV

AH,0;

K1:

SHR

AL,1;

P99

RCL

AH,1;

P100

DEC

CX;

JNZ

K1;

MOV

AL,AH

第81頁習題4.16試編寫一程序段,在CHAR為首26個單元中依次存放字母‘A’-‘Z’.CHAR

DB

26

DUP

(?)

START:

LEA

BX,

CHAR;

MOV

AL,

A’

MOV

CX,

26

LOP1:

MOV

[BX]

,

AL

INC

AL

INC

BX

LOOP

LOP1

HLT第82頁習題4.17設在數據段中有X,Y兩個變量(字節單元),試編寫程序段計算(只寫相關功效指令). X 當X≥0時Y= │X│當X<0時XDBX

YDBY

···MOVAL,X

CMPAL,0

JGEDONE

NEGAL

DONE:MOVY,AL第83頁習題4.18編寫程序段計算SUM=a1+a2+….+a20,已知a1-a20依次存放在以BUF為首址數據區,每個數據占兩個字節,和數SUM也為兩個字節.(要求用循環結構編寫,循環控制采取計數控制).此題勿需書寫源程序格式,只需要把題中要求相關指令序列書寫出來.MOV

AX,0;

MOV

BX,OFFSET

BUF;

MOV

CX,20;

LOP:ADD

AX,[BX];

INC

BX;

INC

BX;

LOOP

LOP;

MOV

SUM,AX;

第84頁習題4.19編寫一個完整源程序,將BUF字節單元存放兩位BCD碼,轉換成2個字節ASCⅡ碼,并分別存放在ASC和ASC+1字節單元中.比如(BUF字節單元)=58H,那么(ASC字節單元)=35H,(ASC+1字節單元)=38H第85頁DATASEGMENT

BCDDBXXH

ASCDB?,?

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVCL,4

MOVAL,BCD;取BCD碼數

SHRAL,CL;轉換高位

ADDAL,30H

MOVASC,AL

MOVAL,BCD

ANDAL,0FH;轉換低位

ADDAL,30H

MOVASC+1,AL

MOVAH,4CHINT21H

CODEENDS

ENDSTART第86頁習題4.20在A1單元開始定義了一個長度為N字符串,找出其中全部小寫字母并存放在以A2開始存放區中.統計出小寫字母個數,存放到SL單元中.請編寫一完整源程序.程序段以下: DATASEGMENT A1DB‘……’ NDBEQU$-A1 A2DBNDUP(?) SLDB? DATAENDS第87頁CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;給數據段段段地址賦值MOVCX,N;設置循環次數LEASI,A1;SI指向源字符串 LEADI,A2;DI指向目字符串MOVDL,0;小寫字母計數器清零L1:MOVAL,[SI];當前字符同小寫字母‘a’比較CMPAL,61HJLL2CMPAL,7AH;當前字符同小寫字母‘z’比較JGL2MOV[DI],AL;當前字符為小寫字母則將其移動到A2INCDIINCDL并將計數器DL加1第88頁L2:INCSI;SI指向源串中下一個字符LOOPL1MOVSL,DL;將DL值寫入到SL中MOVAH,4CH;返回系統INT21HCODEENDSENDSTART注意:在8086匯編中,存放器間接尋址、存放器相對尋址、基址變址尋址和相對基址變址尋址中只能使用BX、BP、SI和DI這4個存放器,不能使用AX、DX等其它存放器。這一點在編寫匯編程序時候需要注意。第89頁習題4.21設在DAT單元存放一個-9~+9字節數據,在SQRTAB數據區中存放0~9平方值,請用直接查表法編寫一子程序,在SQRTAB中查找出DAT單元中數據對應平方值送SQR單元.并寫出主程序調用方式.數據段以下:DATASEGMENTDATDBXXHSQRTABDB0,1,4,9,…,81SQRDB?DATAENDS第90頁DATA

SEGMENT

DATDB

XXH

SQRTAB

DB

0,1,4,9,…,81

SQR

DB?

DATA

ENDS

STACK

SEGMENTPARA

STACK

DW

20H

DUP(?)

STACK

ENDS

CODE

SEGMENT

ASSUME

CS:CODE,DS:DATA,SS:STACK

START:

MOV

AX,DATA

MOV

DS,AX

CALL

DTOS

MOV

AH,4CH

INT

21H第91頁DTOS

PROC

PUSH

AX

PUSH

BX

LEA

BX,SQRTAB

MOV

AL,DAT

TEST

AL,80H;判斷AL正負JE

NEXT

NEG

AL

NEXT:

XLAT

SQRTAB;AL←(BX+AL)MOV

SQR,AL

POP

BX

POP

AX

RET

DTOS

ENDP

CODE

ENDS

END

SRART第92頁習題4.22編寫能完成以下要求程序:測試字節數據STATUS,若其中位1、3、5有一位是“1”,程序就轉至ROUT2;若三位都是“1”,就轉向ROUT3;若這三位沒有一位是“1”,就轉向ROUT4.

第93頁MOVBL,0MOVCX3LOP:MOVAL,STATUSANDAL,01HADDBL,ALMOVAL,STATUSSHRAL,2LOOPLOPMOVAL,BLCMPAL,01HJEROUT2CMPAL,03HJEROUT3CMPBL,0HJEROUT4第94頁習題4.23STRING字符串最大長度為80個字符,字符串結束用字符$表示.編寫程序在該字符串中查找是否有空格字符(ASCII碼為20H),若有就將第一個空格在字符串中位置(00H~4FH)存入POST單元;若無空格則將-1存入POST.

第95頁LEABX,STRINGMOVCX,80LOP:MOVAL,[BX]CMPAL,‘$’JEDONECMPAL,20HJEPOSITIONINCBXLOOPLOPDONE:MOVPOST,0FFHHLTPOSITION:SUBBX,OFFSETSTRINGMOVPOST,BLHLT第96頁第5章內存放器及其接口習題解答第97頁習題5.1用以下芯片組成存放系統,需要多少RAM芯片?需要多少位地址作為片外地址譯碼?設系統為20位地址線,采取全譯碼。(1)512×4位RAM組成16KB存放系統;(2)1024×1位RAM組成128KB存放系統;(3)2K×4位RAM組成64KB存放系統;(1)64K×1位RAM組成256KB存放系統;第98頁解答:

芯片存放系統容量多少芯片片外譯碼線(20根地址)(1)512×4位16KB64片11根512×8位2片→1K×8位4片→16×4片=64片片內地址尋址512=29,片內地址尋址將用去9根線,片外譯碼線20-9=11根(2)1024×1位128KB1024片10根1024×8位8片→128K位×8位8片×128=1024片片內地址尋址1024=210,片內地址尋址將用去10根線,片外譯碼線20-10=10根(3)2K×4位64KB64片9根2K×8位2片→2K×32=64KB,2片×32=64片片內地址尋址2K=211,片內地址尋址將用去11根線,片外譯碼線20-11=9根(1)64K×1位256KB32片4根64K×8位8片→64K×8位×4=256KB→8片×4=32片片內地址尋址64K=216,片內地址尋址將用去16根線,片外譯碼線20-16=4第99頁習題5.2現有一個存放芯片容量為512×4位,若要它組成4KB存放容量,需要多少這么存放芯片?每塊芯片需要多少尋址線(片內尋址)?而4KB存放系統需要多少尋址線?解答:512×4位芯片2片→512×8位2組(4片)→1K×8→4×4=16片(1)需要16片512×4位能夠組成4KB存放容量(2)512=29需要9根地址線片內尋址(2)4KB=212,系統需要12根尋址線第100頁習題5.3有一個2716(2K)EPROM芯片譯碼電路,如圖所表示,請計算該芯片地址范圍。解答:地址范圍:A19…A16A15…

A12A11A10A9A8A7…

A4A3…

A011111111

00000000000011111111

111111111111A13A12A11范圍:(A11=0)FF000H—FF7FFH1

11(A11=1)FF800H—FFFFFH110AY0BY1C74LS138G1G2AY6G2BY7&&2716CSA11A12A13A14A15∶A19A10A9A8A7…A4A3…A0第101頁某一存放器系統如圖5-2所表示,回答他們存放容量是多少?RAM和存放器EPROM地址范圍各是多少?習題5.4A11A0-A10A0-A10A0-A10→211→2KB→6116A0-A11→212→4KB→2732第102頁

A19…A16A15…

A12A11A10A9A8A7…

A4A3…

A0

EPROM1111110100000000000011111101111111111111RAM11111001

00000000000011111001

111111111111EPROM范圍:FD000H-FDFFFHRAM范圍:A11=0時,F9000H-F97FFHA11=1時,F9800H-F9FFFH第103頁習題5.5

使用6116、2732和74LS138譯碼器組成一個存放容量為12KBROM(00000H-02FFFH),8KBRAM(03000H-04FFFH)存放系統。系統地址總線20位,數據總線8位。A19…A16A15…

A12A11A10A9A8A7…

A4A3…

A01#

ROM00000000000000000000Y0000000001111111111112#

ROM00000001000000000000Y100000001

溫馨提示

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

評論

0/150

提交評論