微機原理習題答案3_第1頁
微機原理習題答案3_第2頁
微機原理習題答案3_第3頁
微機原理習題答案3_第4頁
微機原理習題答案3_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微型計算機原理習題3(P117)參考答案(部分題號與教材有錯位,請注意)3.1 為什么要研究8086/8088微處理器及其系統(tǒng)?這比直接研究32位微處理器及其系統(tǒng)有何優(yōu)缺點? 解:盡管8086/8088后續(xù)的80286、80386、80486以及Pentium系列CPU結構和功能已發(fā)生很大變化,但從基本概念與結構以及指令格式上來講,他們?nèi)匀皇墙?jīng)典的8086/8088CPU的延續(xù)與提升。3.2 8086 CPU有多少根數(shù)據(jù)線和地址線?它能尋址多少內(nèi)存地址單元和I/O端口?8088CPU又有多少根數(shù)據(jù)線和地址線?為什么要設計8088CPU? 解:8086 CPU有16根數(shù)據(jù)線和20根地址線,可尋址

2、1MB存儲單元和64KB的I/O端口。8088 CPU 有16位內(nèi)部數(shù)據(jù)線和8條外部數(shù)據(jù)總線,20根地址線。8088 CPU 是8086 CPU的向下兼容版,這樣設計主要為了與INTEL原有的8位外圍接口芯片直接兼容。3.3 8086 CPU內(nèi)部按功能可分為哪兩大部分?他們各自的主要功能是什么? 解:從功能上講,8086可分為兩個部分,即總線接口單元(bus interface unit,BIU)和執(zhí)行單元(execution unit ,EU)。 總線接口單元(BIU)的功能是負責CPU與存儲器或I/O設備之間的數(shù)據(jù)傳送。 EU的功能只是負責執(zhí)行指令;執(zhí)行的指令從BIU的指令隊列緩沖器中取得

3、,執(zhí)行指令的結果或執(zhí)行指令所需要的數(shù)據(jù),都由EU向BIU發(fā)出請求,再由BIU經(jīng)總線控制電路對存儲器或外設存取。 3.4 8086 CPU內(nèi)部的總線接口單元BIU由哪些功能部件組成?他們的基本操作原理是什么? 解:BIU內(nèi)有4個16位的段地址寄存器CS、DS、SS和ES,16位指令指針I(yè)P,6字節(jié)指令隊列緩沖器,20位地址加法器和總線控制電路。 基本操作原理是BIU要從內(nèi)存取指令送到指令隊列緩沖器;CPU執(zhí)行指令時,總線接口單元要配合執(zhí)行單元從指定的內(nèi)存單元或者外設端口中取數(shù)據(jù),將數(shù)據(jù)傳送給執(zhí)行單元,或者把執(zhí)行單元的操作結果傳送到指定的內(nèi)存單元或外設端口中。3.5 什么叫微處理器的并行操作方式?

4、為什么說8086 CPU具有并行操作的功能?在什么情況下8086的執(zhí)行單元EU才需要等待總線接口單元BIU提取指令? 解:并行操作,就是CPU執(zhí)行完1條指令后就可以立即執(zhí)行下一條指令,而不需要像以往8位CPU那樣重復的進行先取指令和后執(zhí)行的指令串行操作。16位CPU的這種并行操作的特點,提高了總線的信息傳輸效率和整個系統(tǒng)的執(zhí)行速度。 只有當遇到轉(zhuǎn)移指令、調(diào)用指令或返回指令時,或者當某一條指令在執(zhí)行過程中,需要頻繁訪問內(nèi)存以至于總線接口單元沒有空閑從內(nèi)存將指令提取到指令隊列中時,才需要等待總線接口單元BIU提取指令。3.6 邏輯地址和物理地址有什么區(qū)別?為什么8086微處理器要引入“段加偏移”的

5、技術思想?段加偏移的基本含義又是什么?試舉例說明。 解: 邏輯地址由16位段地址和16位段內(nèi)偏移量(又稱有效地址)組成,程序中指令必須通過邏輯地址訪問內(nèi)存。物理地址是由20條地址線信號指示的內(nèi)存地址,在電路中必須使用這20條物理的地址信號線訪問內(nèi)存。物理地址=段地址×16+有效地址。參考教材: P54第311行 P56 “2。段寄存器”的第1段 P70 “3。3。5 段加偏移尋址機制允許重定位”段加偏移的基本含義是:將段寄存器內(nèi)容左移4位后與16位偏移地址相加。例:假設CS=FA00H,IP=0300H,這是物理地址為0FA300H。3.7 在微處理器中設置指令隊列緩沖器有什么作用?

6、8086與8088 CPU中的指令隊列有何區(qū)別? 解:指令隊列緩沖器在執(zhí)行指令的同時,可以從內(nèi)存中取下面一條或幾條指令,取來的指令就依次暫放在指令隊列中。 區(qū)別:8086指令隊列為6個字節(jié),8088為4字節(jié);8086指令隊列只要空出2個,而8088只要空出1個指令字節(jié)時,BIU便自動執(zhí)行取指操作,直到填滿為止。3.8 8086 CPU的基址寄存器BX和基址指針(或基址指針寄存器)BP有何區(qū)別?基址指針BP和堆棧指針SP在使用中有何區(qū)別? 解:基址寄存器BX在查表指令XLAT中存放表的起始地址,而基址指針BP用來存放堆棧地址。 指針寄存器SP和BP都用來指示存儲位于當前堆棧段中的數(shù)據(jù)所在的地址,

7、但SP和BP在使用上有區(qū)別。入棧和出棧指令是由SP給出棧頂?shù)钠频刂?,故稱為堆棧指針寄存器。而BP則是存放位于堆棧段中的一個數(shù)據(jù)區(qū)的基地址的偏移地址,故稱為堆?;分羔樇拇嫫鳌?3.9 段地址和段起始地址相同嗎?兩者是什么關系?8086的段起始地址就是段基址嗎?它是怎樣獲得的?解:不同。為了使8086/8088 CPU能夠?qū)ぶ?MB內(nèi)存空間,在其內(nèi)部設計了一組16位的段寄存器,用這些段寄存器的內(nèi)容作為段地址,再由段寄存器左移4位形成20位的段起始地址。 8086的段起始地址就是段基址。由段寄存器左移4位形成20位的段基址。3.10 微處理器在實模式下操作時,段寄存器的用途是什么? 解:為了使8

8、086/8088 CPU能夠?qū)ぶ?MB內(nèi)存空間,在其內(nèi)部設計了一組16位段寄存器,用這些段寄存器的內(nèi)容作為段地址,再由段寄存器左移4位形成20位的段起始地址,它們通常被稱為段基址;這樣,8086/8088就有可能尋址1MB存儲空間并將其分為若干個邏輯段,提供在內(nèi)存中的重定位功能。3.11 在實模式下,若段寄存器中裝入如下數(shù)值,試寫出每個段的起始地址和結束地址。 (1)1000H (2)1234H (3)E000H (4)AB00H 解:(1)起始地址:10000H 結束地址:10000H+FFFFH=1FFFFH(2)起始地址:12340H 結束地址:12340H+FFFFH=2233FH(3

9、)起始地址:E0000H 結束地址:E0000H+FFFFH=EFFFFH(4)起始地址:AB000H 結束地址:AB000H+FFFFH=BAFFFH3.12微處理器在實模式下操作,對于下列CS:IP組合,計算出要執(zhí)行的下條指令的存儲器地址。 (1)CS=1000H和IP=2000H (2)CS=2400H和IP=1A00(3)CS=1A00和IP=B000H (4)CS=3456H和IP=ABCDH解:(1)下條指令地址:10000H+2000H=12000H (2)下條指令地址:24000H+1A00H=25A00H (3)下條指令地址:1A000H+B000H=25000H (4)下條

10、指令地址:34560H+ABCDH=3F12DH 3.13 8086在使用什么指令時,用哪個存儲器保存記數(shù)值? 解:在使用無條件重復指令REP時,CX寄存器用來保存記數(shù)值; 在使用循環(huán)控制指令LOOP時,CX寄存器用來保存記數(shù)值。3.14 IP寄存器的用途是什么?它提供的是什么信息? 解:簡單地說,IP寄存器指示即將執(zhí)行的下一條指令的段內(nèi)偏移地址。一般情況下,CPU每取一個指令字節(jié),IP就自動加1,從而保證程序的順序運行。程序控制類指令改變IP值,從而改變程序的運行順序。3.15 8086的進位標志位有哪些運算指令來置位? 解:當執(zhí)行加法、減法、乘法指令、BCD調(diào)整指令、移位和循環(huán)指令都會影響

11、進位標志,但使CF 置位的運算指令只有NEG指令(STC不算運算指令)。 3.16 如果帶符號數(shù)FFH與01H相加,會產(chǎn)生溢出嗎? 解:0FFH+01H=0H,所以不會產(chǎn)生溢出。3.17 某個數(shù)包含有5個1,它具有什么奇偶性? 解:奇偶性為奇,標志PF=0 3.18 某個數(shù)為全0,它的零標志位為0嗎?(題目不好) 解:不為0,零標志ZF=13.19 用什么指令設置哪個標志位,就可以控制微處理器的INTR引腳? 解:用STI和CLI指令控制IF標志,就可以控制微處理器的INTR引腳。3.20 微處理器在什么情況下才執(zhí)行總線周期?一個基本的總線周期由幾個狀態(tài)組成?在什么情況下需要插入等待狀態(tài)? 解

12、:為了從存儲器中取得指令或者與一個存儲單元或I/O接口單元傳送數(shù)據(jù),需要它的總線接口單元執(zhí)行一個總線周期。一個總線周期由T1、T2、T3和T4這四個狀態(tài)。由于外設或存儲器的速度較慢,不能及時的配合CPU傳送數(shù)據(jù)。這時,外設或存儲器就會通過“READY”的信號線在T3狀態(tài)啟動之前向CPU發(fā)一個“數(shù)據(jù)未準備好”信號,表示他們還來不及同CPU之間傳送數(shù)據(jù),于是,CPU會在T3之后自動插入一個或多個附加的時鐘周期TW,這個TW就叫等待狀態(tài)。3.21 什么叫做非規(guī)則字,微處理器對非規(guī)則字是怎樣操作的? 解:對內(nèi)存中存放的字數(shù)據(jù),其低位字節(jié)在奇數(shù)地址開始存放,稱為非規(guī)則存放,存放的字叫非規(guī)則字。8086對

13、非規(guī)則字必須分兩次訪問。3.22 8086對1MB的存儲空間是如何按高位庫和低位庫來進行選擇和訪問的?用什么控制信號來實現(xiàn)對兩個庫的選擇? 解:8086的1MB存儲空間分為兩個512KB的存儲體,又稱存儲庫,分別叫高位庫和低位庫,低位庫與數(shù)據(jù)總線D7D0相連,該庫中每個單元的地址均為偶數(shù)地址,高位庫與數(shù)據(jù)總線D15D8相連,該庫中每個單元的地址均為奇數(shù)地址。用A0對低位庫和用BHE對高位庫實現(xiàn)選擇控制。3.23 堆棧的深度由哪個寄存器確定?為什么說一個堆棧的深度最大為64kB?在執(zhí)行一條入棧或出棧命令時,棧頂?shù)刂穼⑷绾巫兓?解:堆棧的深度由堆棧指針SP來確定。 因為存儲器中包括堆棧段在內(nèi)的每

14、一個邏輯段至多可包含64KB長的連續(xù)存儲單元,所以一個堆棧的深度最大為64KB。 執(zhí)行PUSH s指令時,先SPSP2,再SS:SPS 執(zhí)行POP d指令時,先dSS:SP,再SPSP+23.25 8086/8088CPU對RESET復位信號的復位脈沖寬度有何要求?復位后內(nèi)部寄存器的狀態(tài)如何? 解:RESET復位信號的復位脈沖寬度不得小于4個時鐘周期。復位后各個寄存器狀態(tài)如下:CS=0FFFFH,DS=ES=SS=0,F(xiàn)=0,指令隊列清空。3.26 ALE信號起什么作用?它在使用時能否被浮空?DT/R信號起什么作用?它在什么情況下被浮置為高阻狀態(tài)? 解:它是8086/8088提供給地址鎖存器8

15、282/8283的控制信號,高電平有效。ALE在使用時不能被浮空。 在使用8286/8287作為數(shù)據(jù)總線收發(fā)器時,DT/R信號用來控制8286/8287的數(shù)據(jù)傳送方向。在DMA方式時,它被置為高阻狀態(tài)。3.27 8086/8088CPU的哪些引腳采用了時分復用技術?哪些引腳具有兩種功能? 解:地址/數(shù)據(jù)總線AD15AD0,地址/狀態(tài)總線A19/S6A16/S3,BHE/S7采用了分時復用技術。 MN/MX、DT/R、M/IO、RQ/GT1、RQ/GT0具有兩種功能。3.28 8086/8088CPU的微機系統(tǒng)有哪兩種工作方式?它們由什么引腳來實現(xiàn)控制?這兩種工作方式的主要特點和區(qū)別如何? 解:

16、8086/8088 CPU微機系統(tǒng)有最大和最小兩種工作方式。他們由MN/MX引腳實現(xiàn)控制。 MN/MX接電源電壓,系統(tǒng)工作于最小方式,即單處理機系統(tǒng),適合于較小規(guī)模的應用。MN/MX接地,系統(tǒng)工作于最大方式,一般包含兩個或多個微處理器,這樣就要解決主處理器和協(xié)處理器之間的協(xié)調(diào)問題以及對總線的共享控制問題。最大方式和最小方式的主要區(qū)別是外加有8288總線控制器。3.29 當8086/8088按最大方式操作時,8288總線控制器主要提供什么功能?8086/8088 CPU在最大方式下工作時有哪些專用引腳?它們的主要作用是什么? 解:通過它對CPU發(fā)出的控制信號進行變換和組合,以得到對存儲器和I/O

17、端口的讀/寫信號和對鎖存器器8282及對總線收發(fā)器8286的控制信號,使總線控制功能更加完善。在最大方式下使用的專用引腳有:(1)QS1、QS0指令隊列狀態(tài)信號輸出 這兩個信號組合起來提供了本總線周期的前一個時鐘周期中指令隊列的狀態(tài),以便于外部對8086/8088內(nèi)部指令隊列的動作跟蹤。(2)LOCK 總線封鎖信號輸出 當LOCK為低電平時,系統(tǒng)中其他主部件就不能占有總線。(3)RQ/GT1、RQ/GT0總線請求信號輸入/總線 這兩個信號端可供CPU以外的兩個處理器用來發(fā)出使用總線的請求信號和接收CPU對總線請求信號的回答信號。(4)S0、S1、S2狀態(tài)信號,8288根據(jù)這三個狀態(tài)信號和CLK

18、時鐘信號組合輸出各種總線控制信號。3.30 為什么要研究指令格式?8086/8088微處理器有哪些基本的指令格式? 解:指令格式是按指令系統(tǒng)的特定規(guī)范與要求精心設計的,了解指令格式,對完整的掌握一個成功設計的指令系統(tǒng)是十分必要的。 基本指令格式有:無操作數(shù)指令、單操作數(shù)指令、雙操作數(shù)指令3.31 在指令格式中,MOD字段指定了什么信息?它和R/M字段確定的有效地址EA的計算方法共有多少種? 解:MOD字段給定指令的尋址方式,即規(guī)定是存儲器或寄存器的尋址類型,并確定在存儲器尋址類型時是否有位移量。 它和R/M字段確定的有效地址EA計算方法共有24種3.32 說明某些機器語言指令中的D位和W位是何

19、作用? 解:D表示來自/到寄存器的方向。D=1,表示由指令REG字段所確定的某寄存器為目標;D=0,則表示該寄存器為源。 W表示操作數(shù)為字或字節(jié)處理方式。W=1,表示為字;W=0,則為字節(jié)。3.33 假定指令是16位模式指令,如果指令寄存器字段(REG)的信息為001,W字段為0,試問尋址時選擇什么寄存器?(題目自相矛盾) 解: 16位模式與W字段為0相互矛盾!3.34 某機器語言16位模式指令的R/M=001,MOD=00,試問該指令指定了哪種存儲器尋址方式? 解:指定了BX+DI存儲器尋址方式3.35 何謂尋址方式?8086/8088微處理器有哪幾種主要的尋址方式? 解:尋址方式即尋找操作

20、數(shù)的方式。主要的尋址方式有:固定尋址、立即數(shù)尋址、寄存器尋址、存儲器尋址、串操作指令尋址、I/O端口尋址方式,其中存儲器尋址又可分為:基址尋址、變址尋址、基址加變址。此外,程序控制指令還有直接、相對、寄存器間接、存儲器間接等尋址方式。3.36 試寫出尋址存儲器操作時計算有效地址EA的通式。 解:EA=基址值(BX/BP)+變址值(SI/DI)+位移量Disp(0/8/16位)3.37 指出8086/8088下列指令源操作數(shù)的尋址方式。(1)MOV AX,1200H (2) MOV BX,1200H(3)MOV BX,SI (4) MOV BX,SI+1200H(5)MOV BX+SI,AL (

21、6) ADD AX,BX+DI+20H(7)MUL BL (8) JMP BX (9)IN AL,DX (10)INC WORD PTRBP+50H 解:(1)立即數(shù)尋址 (2)存儲器直接尋址 (3)變址寄存器間接尋址 (4)寄存器變址間接尋址 (5)基址加變址寄存器間接尋址 (6)基址加變址間接尋址(7)寄存器尋址 (8)寄存器尋址(9)端口間接尋址 (10)寄存器基址加變址間接尋址 3.38 指出8086/8088下列指令中存儲器操作數(shù)物理地址的計數(shù)表達式。 (1)MOV AL,DI (2)MOV AX,BX+SI (3)MOV 8BX+DI,AL (4)ADD AL,ES:BX (5)S

22、UB AX,2400H (6)ADC AX,BX+DI+1200H (7)MOV CX,BP+SI (8)INC BYTP PTRDI 解:(1)PA=DS×16+DI (2)PA=DS×16+(BX+SI) (3)PA=DS×16+(BX+DI+8) (4)PA=ES×16+BX (5)PA=DS×16+2400H (6)PA=DS×16+(BX+DI+1200H)(7)PA=SS×16+(BP+SI) (8)PA=DS×16+DI 3.39 指出8086/8088下列指令的錯誤何在? (1)MOV SI,IP

23、(2)MOV CS,AX (3)MOV BL,SI+2 (4)MOV 60H,AL (5)PUSH 2400H (6) INC BX (7)MUL60H (8)ADD 2400H,2AH (9)MOV BX,DI (10)MOV SI,AL 解:(1)IP不可與內(nèi)部寄存器之間實現(xiàn)直接數(shù)據(jù)傳送(2)代碼段寄存器CS不可與內(nèi)部寄存器之間實現(xiàn)直接數(shù)據(jù)傳送(3)應是SI+2指示的內(nèi)存單元的字節(jié)內(nèi)容(4)立即數(shù)60H不可做目的操作數(shù)(5)PUSH的源操作數(shù)只能為寄存器操作數(shù)或內(nèi)存操作數(shù)(6)間接尋址存儲器數(shù)據(jù)加1指令要用TYPE PTR類型操作符來標識數(shù)據(jù)類型(7)MUL 指令的源操作數(shù)只能為寄存器操作

24、數(shù)或內(nèi)存操作數(shù)(8)要用TYPE PTR類型操作符來標識數(shù)據(jù)類型(9)兩者不能同為存儲器操作數(shù)(10)AL為8位,SI為16位,數(shù)據(jù)類型不匹配 3.40 MOV CS,AX指令會帶來什么錯誤? 解:這條指令不存在。如果有的話,將可以直接僅改變代碼段的段基址而IP值不變,程序運行順序發(fā)生變化,變到那里去了?很難控制。3.41 閱讀下列程序段,指出每條指令執(zhí)行以后有關寄存器的內(nèi)容是什么? MOV AX,0ABCH ; AX= 0ABCH DEC AX ; AX= 0ABBH AND AX,00FFH ; AX= 00BBH MOV CL,4 ; CL= 4 SAL AL,1 ;AL= 76H,CF

25、=1 MOV CL,AL ;CL= 76H ADD CL,78H ;CL= 0EEH,CF=0 PUSH AX;AX=0076H POP BX;BX=0076H解:執(zhí)行完后,AX=0076H,CF=0,CL=0EEH3.42 指出RET和IRET兩條指令的區(qū)別,并說明各用在什么場合? 解:RET用于從過程返回,而IRET用于從中斷中返回。3.43 說明MOV BX,DATA和MOV BX,0FFSET DATA指令之間的區(qū)別。 解:MOV BX,DATA;DATA是字變量名,指令功能是把DATA變量的內(nèi)容BXMOV BX,0FFSET DATA;把DATA變量的段內(nèi)偏移地址BX3.44 給定D

26、S=1100H,BX=0200H,LIST=0250H和SI=0500H。試確定下面各條指令尋址存儲器的物理地址。(1)MOV LISTSI,EDX (2)MOV CL,LISTBX+SI(3)MOV CH,BX+SI (4)MOV DL,BX+100 解:(1)PA=11000+0500+0250=11750H (2)PA=11000+0200+0500+0250=11950H (3)PA=11000+0200+0500=11700H (4)PA=11000+0200+0100=11300H3.45 假定PC機存儲器低地址區(qū)有關單元的內(nèi)容如下所示。 (20H)=3CH,(21H)=00H,(

27、22H)=86H,(23H)=0EH且CS=2000H,IP=0010H,SS=1000H,SP=0100HFLAGS=0240H,這時若執(zhí)行INT 8指令,試問:(1)程序轉(zhuǎn)向從何處執(zhí)行(用物理地址回答)?(2)棧頂6個存儲單元的地址(用邏輯地址回答)及內(nèi)容分別是什么? 解:(1)PA=0E86×10H + 003CH = 0E89CH(2)LA=1000:00FAH1000:00FFH3.46 設SP=2000H,AX=3000H,BX=5000H,執(zhí)行下列片段程序后,問SP=?AX=?BX=? PUSH AX PUSH BXPOP AX 解:SP=1FFEH,AX=5000H,

28、BX=5000H3.47 某程序段為 2000H:304CH ABC:MOV AX,1234H 。 2000H:307EH JNE ABC 試問代碼段中跳轉(zhuǎn)指令的操作數(shù)為何值? 解:操作數(shù)為4CH(7E+2)=0CCH3.48 若AX=5555H,BX=FF00H,試問在下列程序段執(zhí)行后,AX=?BX=?CF=? AND AX,BX ;AX=5500H XOR AX,AX ;AX=0000H NOT BX 解:AX=0000H,BX=00FFH,CF=03.49 若CS=E000H,說明代碼段可尋址物理存儲地址空間的范圍。 解:代碼段可尋址物理存儲地址空間的范圍是:E0000HEFFFFH,共

29、64KB的空間。3.50 若DS=3000H,BX=2000H,SI=0100H,ES=4000H,計算出下述各條指令中存儲器操作數(shù)的物理地址。(1)MOV BX,AH (2) ADD AL,BX+SI+1000H(3)MOV AL,BX+SI (4)SUB AL,ES:BX 解:(1)PA=30000+2000=32000H (2)PA=30000+2000+0100+1000=33100H (3)PA=30000+2000+0100=32100H (4)PA=40000+2000=42000H3.51 試比較SUB AL,09H與CMP AL,09H這兩條指令的異同,若AL=08H,分別執(zhí)

30、行下述兩條指令后,SF=?CF=?OF=?ZF=? 解:在SUB指令中,將AL 09H的值賦給AL,而CMP指令只影響標志,不保存結果。 SUB AL,09H ;SF=1,CF=1,OF=0,ZF=0,AL=FF CMP AL,09 ;SF=1,CF=1,OF=0,ZF=0,AL=083.52 選用最少的指令,實現(xiàn)下述要求的功能。(1)AH的高4位清零(2)AL的高4位取反 (3)AL的高4位移到低4位,高4位清零 (4)AH的低4位移到高4位,低4位清零 解:(1)AND AH,0FH (2)XOR AL,0F0H(3)MOV CL,4SHR AL,CL (4)MOV CL,4SHL AH,

31、CL 3.53 設BX=6D16H,AX=1100H,寫出下列兩條指令執(zhí)行后BX寄存器中的內(nèi)容。MOV CL,06H ;CL=06HROL AX,CL ;AX=4004HSHR BX,CL ;BX=01B4H 解:BX=01B4H3.54 設初值AX=0119H,執(zhí)行下列程序段后AX=?MOV CH,AH ;CH=01HADD AL,AH ; AL=1AH,AF=0,CF=0DAA ;AL=20,AF=1,CF=0XCHG AL,CH ;AL=01H,CH=20HADC AL,34H ;AL=01H+34H=35HDAA ;AL=35HMOV AH,AL ;AH=35HMOV AL,CH ;A

32、L=20HHLT 解:AX=3520H3.55 設初值AX=6264H,CX=0004H,在執(zhí)行下列程序段后AX=?AND AX,AX ;AX=6264H,ZF=0JZ DONESHL CX,1 ;CX=0008H ROR AX,CL ;AX=6462HDONE:OR AX,1234H ;AX=7676H 解:AX=7676H3.56 寫出可使AX清零的幾條指令。 解:AND AX,0; MOV AX,0; XOR AX,AX。3.57 什么叫堆棧?說明堆棧中數(shù)據(jù)進出的順序以及壓入堆棧和彈出堆棧的操作過程。 解:堆棧中數(shù)據(jù)的進出順序為“先進后出” PUSH S操作過程,先SPSP2,再SS:S

33、PS POP D操作過程,先DSS:SP,再SPSP23.58 808680286微處理器中PUSH和POP指令在堆棧和寄存器或存儲單元之間總是傳送多少位數(shù)字? 解:傳送16位數(shù)字3.59 哪個段寄存器不能從堆棧中彈出? 解:SS段寄存器不能從堆棧中彈出。3.60 如果堆棧底部定位在存儲器位置02200H,試問SS和SP中將裝入什么值? 解:SS=0220H,SP=0000H3.61 帶有OFFSET的MOV指令與LEA指令比較,哪條指令的效率更高? 解:MOV指令與LEA指令的功能不同,應用的地方也不同,應該說沒有可比性。在二者都可用時,MOV指令的效率更高。帶有OFFSET的MOV指令不能

34、完全替代LEA指令。 3.62 若AX=1001H,DX=20FFH,當執(zhí)行ADD AX,DX指令后,請列出和數(shù)及標志寄存器中每個位的內(nèi)容(CF、AF、SF、ZF和OF)。 解:AX=3100H, CF=0;AF=1;SF=0;ZF=0;OF=0。3.63 假如想從200中減去AL中的內(nèi)容,用SUB 200,AL是否正確?如果不正確,請寫出正確的指令表示。 解:不可用立即數(shù)做目的操作數(shù) MOV BL,200 SUB BL,AL3.64 若DL=0F3H,BH=72H,當從DL減去BH后,列出差數(shù)及標志寄存器各位的內(nèi)容。 解:差數(shù)為81H,AF=0,SF=1,ZF=0,OF=03.65 當兩個1

35、6位數(shù)相乘時,乘積放在哪兩個寄存器中?并指出積的高有效位和低有效位分別防在哪個寄存器中?CF和OF兩個標志位是什么? 解:乘積放在DX,AX中,高位放在DX中,低位放在AX中,當DX0時,CF=OF=1,否則 CF=OF=0 。3.663.67 寫出一個程序段,求DL寄存器中一個8位數(shù)的3次方,起初將5裝入DL,要確保結果是16位的數(shù)字。 解1:16位二進制數(shù)最大可以是40的三次方,而402 = 1600 > 256,故:MOV AL,X;X可以是0至40的任意數(shù)MOV DL,AL; MUL DL;求X2 MOV DH,AH;保留X2的高8位MUL DL;X2的低8位再乘XMOV BX,

36、AX;保存X2的低8位與X的乘積MOV AL,DHMULDL;X2的高8位再乘X,乘積不會超出8位MOV CL,8SHLAX,CL;把X2的高8位與X的乘積左移8位(乘以256)ADDAX,BX;再加上X2的低8位與X的乘積= X3結果在AX中解2:如果X15,則152 255,故:MOV AL,X;X可以是0至15的任意數(shù)MOV DL,AL; MUL DL;求X2,且高8位AH=0 MUL DL;X2再乘X結果在AX中3.68 敘述IMUL WORD PTRSI指令的操作。 解:DX、AX(AX)×SI,即AX中的和SI、SI+1所指內(nèi)存單元中的兩個16位有符號數(shù)相乘,結果送DX和

37、AX中。3.69 敘述IMUL BX,DX,200H指令的操作。(題目有錯?。?解:3.70 當執(zhí)行8位數(shù)除法指令時,被除數(shù)放在哪個寄存器中?當執(zhí)行16位除法指令時,商數(shù)放在哪個寄存器中? 解:8位除法時,被除數(shù)放在AX中;16位除法時,商數(shù)放于AX中。3.71 執(zhí)行除法指令時,微處理器能檢測出哪種類型的錯誤?敘述它的處理過程。 解:若除法運算所得的商位數(shù)大于除數(shù)的位數(shù),即超出指令允許的商的范圍,則系統(tǒng)將其當作除數(shù)為0處理,自動產(chǎn)生類型0中斷,CPU將轉(zhuǎn)去執(zhí)行類型0中斷服務程序作適當處理,此時所得的商數(shù)和余數(shù)均無效。在進行類型0中斷處理時,先是將標志位進棧,IF和TF清0,接著是CS和IP的內(nèi)

38、容進棧;然后將0、1兩單元的內(nèi)容填入IP,而將2、3兩單元的內(nèi)容填入CS;進入0號中斷的處理程序。3.72 試寫出一個程序段,用CL中的數(shù)據(jù)除BL中的數(shù)據(jù),然后將結果乘2,最后的結果的存入DX寄存器中的16位數(shù)。 解:MOV AH,0 MOV AL,BL;裝入被除數(shù)DIV CL;除以CLMOVAH,0;忽略余數(shù)SHLAX,1;商乘以2 MOV DX,AX;轉(zhuǎn)存入DX3.73 BCD碼算術運算使用哪些指令?這些指令的功能是什么?在使用時對它們在指令系列中所放的位置有什么要求? 解:BCD碼算術運算使用DAA、DAS指令。DAA加法十進制調(diào)整指令,必須跟在ADD或ADC指令之后使用。DAS減法的十

39、進制調(diào)整指令,必須跟在SUB或SBB指令之后。3.74 ASCII碼算術運算使用哪些指令?這些指令的功能的什么? 解:非組合BCD(ASCII)碼算術運算使用AAA、AAS、AAM、AAD指令。AAA加法的ASCII碼調(diào)整指令;AAS減法的ASCII碼調(diào)整指令;AAM非組合BCD碼的乘法調(diào)整指令;AAD非組合BCD碼的除法調(diào)整指令。3.75 解釋AAM指令將二進制轉(zhuǎn)換為BCD碼的操作過程。 解:將AL寄存器中的結果除以10,所得的商數(shù)即為高位十進制數(shù)(十位)置入AH中,所得的余數(shù)即為低位十進制數(shù)(個位)置入AL中。3.76 設計一個程序段,將AX和BX中的8位BCD數(shù)加CX和DX中的8位BCD

40、數(shù)(AX和CX是最高有效寄存器),加法以后的結必須存入CX和DX中。 解:ADD DX,BX ADC CX,AX3.77 用AND指令實現(xiàn)下列操作。(1)BX“與”DX,結果存入BX (2)0AEH“與”DH(3)DI“與”BP,結果存入DI中 (4)1234H“與”AX(5)由BP尋址的存儲單元的數(shù)據(jù)“與”CX,結果存入存儲單元中。(6)AL和WAIT存儲單元中的內(nèi)容相“與”,結果存入WAIT。 解:(1)AND BX,DX (2)AND DH,0AEH(3)AND DI,BP (4)AND AX,1234H(5)AND BP,CX (6)AND WAIT,AL3.78設計一個程序段,將DH

41、中的最左三位清零,而不改變DH中的其他地位,結果存入BH中。 解:AND DH,1FH MOV BH,DH3.79 用“OR”指令實現(xiàn)下列操作。 (1)BL“或”DH,結果存入DH (2)0AEH“或”ECX (3)DX“或”SI,結果存入SI (4)1234H“或”EAX (5)由BP尋址的存儲單元的數(shù)據(jù)“或”CX,結果存入存儲單元中。(6)AL和WHEN存儲單元中的內(nèi)容相“或”,結果存入WHEN中 解:(1)OR DH,BL (2)OR ECX,0AEH(3)OR SI,DX (4)OR EAX,1234H(5)OR BP,CX (6)OR WHEN,AL3.80 設計一個程序段,將DI中的最右5位置1,而不改變DI中的其他位,結果存入SI中。 解:OR DI,001FH MOV SI,DI3.81 設計一個程序段,將AX中最右4位置1,將AX中的最左3位清零,并且把AX中的7、8、9位取反。 解:OR AX,000FH AND AX,1FFFH XOR AX,0380H3.82選擇正確的指令以實現(xiàn)下列任務。 (1)把DI右移3位,再把0移入最高位 (2)把AL中的所有位左移一位,

溫馨提示

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

評論

0/150

提交評論