《微機原理與接口技術(shù)》參考答案_第1頁
《微機原理與接口技術(shù)》參考答案_第2頁
《微機原理與接口技術(shù)》參考答案_第3頁
《微機原理與接口技術(shù)》參考答案_第4頁
《微機原理與接口技術(shù)》參考答案_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微機原理與接口技術(shù)習題參考答案習題21. 為何說8086CPU 是 16 位 CPU?答: 16 位指的是 8086CPU 的字長,而字長一般來說和運算器、寄存器、總線寬度一致。因為 8086CPU 的內(nèi)部寄存器、內(nèi)部運算部件以及內(nèi)部操作都是按16 位設(shè)計的,這決定了它的字長為 16 位。2. 8086CPU 由哪兩個單元組成?其中,指令隊列在哪個單元中,有何作用?答:總線接口單元( Bus Interface Unit , BIU )和執(zhí)行單元( Execution Unit , EU ) 。指令隊列在 BIU 中。它的作用是當 EU 在執(zhí)行指令時,空閑的 BIU 可以從內(nèi)存讀取后續(xù)指令到指

2、令隊列,這樣就可以將取指令工作和執(zhí)行指令工作重疊進行,從而提高 CPU 的工作效率,加快指令的執(zhí)行速度。3. 8086CPU 中 8位寄存器和 16 位寄存器是什么關(guān)系?答: 8086 的通用寄存器包括數(shù)據(jù)寄存器、指針寄存器和變址寄存器。其中數(shù)據(jù)寄存器包含 AX 、 BX、 CX、 DX 四個 16 位寄存器,但他們每個都可以分開作為兩個單獨的 8 位寄 存器使用。 8086 的指針寄存器和變址寄存器不可分割為 8 位寄存器。4. 8086CPU 中的 IP 寄存器有何用途?答: IP 寄存器是指令指針寄存器,用來存放下一條要執(zhí)行的指令在代碼段中的偏移地址。在程序運行過程中, IP 寄存器始終

3、指向下一條指令的首地址,與CS 寄存器聯(lián)合確定下一條指令的物理地址。 8086 就是通過 IP 寄存器來控制指令序列的執(zhí)行流程。5. 在標志寄存器中,用于反映運算結(jié)果屬性的標志位有哪些?它們每一位所表示的含義是什么?答:有CF、PF、AF、ZF、SF、OF。它們的含義如下:CF :進位標志。它記錄運算時從最高有效位產(chǎn)生的進位值或結(jié)果值。最高有效位有進位或有借位時CF=1 ,否則 CF=0 。PF:奇偶標志。它記錄運算結(jié)果的奇偶檢驗條件。當結(jié)果操作數(shù)中“1”的個數(shù)為偶數(shù)時 PF=1 ,否則 PF=0。AF :輔助進位標志。在字節(jié)運算時,由低半字節(jié)(字節(jié)的低4 位)向高半字節(jié)有進位或借位時, AF

4、=1 ,否則 AF=0 。ZF:零標志。運算結(jié)果為零時ZF=1,否則ZF=0。SF:符號標志。它記錄運算結(jié)果的最高位,即由符號數(shù)的符號。OF :溢出標志。在運算過程中,如果運算結(jié)果已經(jīng)超出了機器能表示的數(shù)值范圍(指有符號數(shù))稱為溢出,此時OF=1 ,否則 OF=0 。6. 分別完成下面的 8 位運算,并說明各主要標志位的狀態(tài),以及結(jié)果是否產(chǎn)生溢出(提示:需要分為有符號數(shù)和無符號數(shù)兩種情況) 。(1) 90H+3CH(2) 3CH-90H(3) 7DH-9CH答:(1)有符號:CCH主要標志 CF=0 PF=1 AF=0 ZF=0 SF=1 OF=0 無溢出無符號:CCH主要標志 CF=0 PF

5、=1 AF=0 ZF=0 SF=1 OF=0 無溢出(2)有符號:ACH 主要標志 CF=1 PF=1 AF=0 ZF=0 SF=1 OF=1 溢出 無符號:ACH 主要標志 CF=1 PF=1 AF=0 ZF=0 SF=1 OF=0 溢出(3)有符號:E1H 主要標志 CF=1 PF=1 AF=0 ZF=0 SF=1 OF=1 溢出 無符號:E1H 主要標志 CF=1 PF=1 AF=0 ZF=0 SF=1 OF=0 溢出7.假設(shè)下列各組數(shù)值均分配在10000H開始的連續(xù)存儲單元中,分別畫出各組數(shù)值在內(nèi)存中的存儲形式。字節(jié):2、2、B'、'b'和'0'

6、字:12H、1004H、-1 和 0;雙字:420H、12345678H 和 0。答:(1)22,'B''b'10 000H02H32H42H62H30H(2)12H1004H-1010000H12H04HFFH00H10001H00H10HFFH00H420H12345678H010001H20H78H00H10002H04H56H00H10003H00H34H00H10004H00H12H00H什么是物理空間?8086CPU的物理地址是多少位?其決定的物理空間有多大?8.(3)答:物理空間是指由編址單元(如字節(jié))大小和地址總線寬度決定的可尋址的存儲器地址空間

7、。8086CPU具有20條地址總線,所以它的物理地址是20bit。8086的存儲是按照字節(jié)存儲的,所以其物理空間為220 B=1MB 。9 .什么是邏輯空間? 8086的邏輯空間有何特點?其邏輯地址如何構(gòu)成?答:采用分段存儲管理方式,將物理空間分割,通過段映射構(gòu)建的由多個獨立的邏輯 段構(gòu)成的存儲空間即為邏輯空間。8086使用16位地址在段內(nèi)尋址,稱為段的偏移地址,因此其特點是段的最大長度 216=64KB。在8086中,將16位的段地址和16位的偏移地址合稱為邏輯地址,其中段地址舍棄了最低四位的0,故邏輯地址等于段地址乘以10H加偏移地址。10 .簡述面向邏輯空間編程比面向物理空間編程的優(yōu)勢。

8、答:可以解除程序設(shè)計對實際物理空間的依賴。具體表現(xiàn)在:程序設(shè)計時不需要了解存儲器的使用情況,操作系統(tǒng)或監(jiān)控程序會將程序分配在空閑 空間,不會和系統(tǒng)程序或其他程序沖突;第二,程序設(shè)計時采用的是邏輯空間的地址,存儲管理部件將自動、透明地進行邏輯空間地址到物理空間地址的轉(zhuǎn)換,即邏輯空間到物理空間的映射,所以,不同的空間分配對程序沒有影響;第三,邏輯空間是相對“觀察者”而言的,即不同的人面對的邏輯空間是獨立無關(guān)的,所以每個編程者都是在自己的邏輯空間上編程。11 . 8086CPU 是如何實現(xiàn)邏輯空間到物理空間的映射的?答:邏輯空間的段地址指明要訪問的存儲單元所處的段,偏移地址指明存儲單元的段內(nèi)地址。段

9、地址表示段在物理空間上的起始位置,偏移地址表示要訪問的存儲單元相對于起 始位置的偏移量。 12. 簡述段寄存器的作用。答:為了保證地址轉(zhuǎn)換的效率,訪問存儲器時,總是由段寄存器提供段址。 8086 在 BIU 中設(shè)有 4 個段寄存器(CS、 DS、 SS、 ES) , CPU 可以在某一時刻通過這 4 個段寄存器來訪問 4 個不同的段。在程序設(shè)計層面,可以通過指定段和段寄存器的關(guān)系來標識段,這樣 在實際編程時,絕大多數(shù)情況下邏輯地址只需要指定偏移地址。 13. 已知當前( CS) =7F00H , (IP) =017CH ,問下條指令的物理地址是什么?答: ( CS) *10H+ ( IP) =

10、7F00H*10H+017CH=7F000H+017CH=7F17CH14. 已知當前( DS) =5C00H , ( ES) =5D10H ,而數(shù)據(jù)的物理地址是63654H ,若分別使用DS和ES段寄存器訪問該數(shù)據(jù),問偏移地址分別是多少?答:若使用 DS,貝U ( IP) =63654H- (DS) *10H=63654H-5C000H=7654H 。 若使用 ES,貝 U (IP) =63654H- (ES) *10H=63654H-5D100H=6554H 。 15. 什么是 I/O 端口? 8086CPU 的端口空間是多大?需要使用地址總線的多少位訪問端口空 間?答: I/O 端口即輸

11、入輸出接口,是外部設(shè)備和主機交換信息的接口,在它們之間的通信中起到了轉(zhuǎn)換和緩沖數(shù)據(jù)的作用。 8086 的 I/O 端口空間大小為 216 =64KB 。需要 16 位,8086 使用地址總線的低16 位訪問 I/O 端口。16. 簡述 Intel 的 32位處理器如何對16 位處理器的寄存器進行擴展,有何好處。答: ( 1)將 16 位通用寄存器擴展16 位形成 32 位通用寄存器。同時還保留了原來的 16位寄存器和8 位寄存器。(2)將指令寄存器IP 擴展 16 位形成 32 為的 EIP 寄存器。( 3)段寄存器仍然是16 位的,但增加了 FS 和 GS 兩個段寄存器。(4)將寄存器Fla

12、gs 擴展 16 為形成 32 位的 EFLAGS 標志寄存器,增加了新的標志。32 位微處理器完整保留了 16 位微處理器的寄存器結(jié)構(gòu),可保證 16 位架構(gòu)的程序可 以不經(jīng)修改的運行在32 位架構(gòu)中,即向前兼容,是Intel 商業(yè)成功的重要保證。17. 簡述 32 位處理器的工作模式。答: ( 1)實模式。實模式下的工作原理與8086 相同,就相當于一個告訴的 8086 處理器。( 2 )保護模式。該模式有以下特點:支持多任務(wù);支持存儲器的分段管理和分頁管理,易于實現(xiàn)虛擬操作系統(tǒng);具有保護功能,包括存儲器保護、任務(wù)特權(quán)級保護和任務(wù)之間的保護。(3)虛擬8086模式。虛擬8086模式是為了在保

13、護模式下執(zhí)行8086程序而設(shè)計的。在虛擬8086模式下可執(zhí)行16位的軟件,同時虛擬 8086模式又可以以任務(wù)的形式與真 正的32位任務(wù)進行切換,共享資源。18. 簡述保護模式下存儲管理的特點。答:在保護模式下,微處理器支持分段存儲管理和分頁存儲管理。分段存儲管理完成 由多個邏輯段構(gòu)建的邏輯空間映射到線性空間的工作;程序設(shè)計面向邏輯空間進 行;如果不使用分頁存儲管理,則線性空間就是物理空間;分頁存儲管理將線性空 間按照一定的大小(4KB)劃分頁(邏輯頁),然后以頁為單位在物理空間上進行 分配(物理頁)和回收,并實現(xiàn)邏輯頁到物理頁的映射;分頁存儲管理對使用者是 透明的。習題31 .指令由哪兩部分構(gòu)

14、成?分別起什么作用?答:由操作碼和操作數(shù)組成。操作碼表示指令所要完成操作的功能和性質(zhì),操作數(shù)提 供該操作的對象。2 .存儲器尋址方式提供的是什么地址?它最終如何映射到實際的物理地址?答:由段址和偏移地址組成的邏輯地址。邏輯空間的段地址指明要訪問的存儲單元所 處的段,偏移地址指明存儲單元的段內(nèi)地址。段地址表示段在物理空間上的起始位置,偏移 地址表示要訪問的存儲單元相對于起始位置的偏移量。3 .簡述立即尋址和直接尋址、寄存器尋址和寄存器間接尋址的區(qū)別。答:立即尋址的指令所需的操作數(shù)直接存放在指令中,指令的操作數(shù)字段就是真正的 操作數(shù)。直接尋址是在指令中給出操作數(shù)所在內(nèi)存單元的段內(nèi)偏移量。寄存器尋址

15、的操作數(shù) 存放在寄存器中,指令的操作數(shù)字段是使用的寄存器。寄存器間接尋址方式中,寄存器內(nèi)存 放的是操作數(shù)的地址,而不是操作數(shù)本身,即操作數(shù)是通過寄存器間接得到的。4 .指出下列各種操作數(shù)的尋址方式。MOV AX, 420HMOV BX, SIMOV AX, 90MOV DI+90, AHMOV AL, BP+SI+20答:答案一(默認求源操作數(shù)尋址方式)1) MOV AX, 420H2) MOV BX, SI3) MOV AX, 904) MOV DI+90, AH5) MOV AL, BP+SI+20 答案二1) MOV AX, 420H立即尋址寄存器尋址直接尋址寄存器尋址相對基址變址尋址源

16、:立即尋址目:寄存器尋址- 3 -2) MOV BX, SI3) MOV AX, 904) MOV DI+90, AH源:寄存器尋址 源:直接尋址 源:寄存器尋址目:基址尋址目:寄存器尋址目:變址尋址5) MOV AL, BP+SI+20 源: (相對)基址變址尋址 目:寄存器尋址5 . 指出下列尋址方式中源操作數(shù)所使用的段寄存器。MOV AX, SI+20HMOV AL, 1000HMOV AX, ES:BXSIMOV AX, BP+1234H答: ( 1) DS ( 2) DS ( 3) ES ( 4) SS6 .已知寄存器(BX) =2010H、(DI) =0FFF0H和(BP) =42

17、0H,試分別計算出下列尋址方式 中源操作數(shù)的有效地址。MOV AX, 2345HMOV AX, BXMOV AX, ES:DI+200MOV AX, DS:BP+DIMOV AX, BX+DI+114H答:1) MOV AX,2345H2345H2) MOV AX,BX2010H3) MOV AX,ES:DI+2000B8H4) MOV AX,DS:BP+DI410H5) MOV AX,BX+DI+114H2114H7 . 使用類似 MOV 指令的雙操作數(shù)指令需要注意什么?答: ( 1) MOV 指令不需要經(jīng)過ALU 處理,所以對標志位沒有影響;( 2 ) MOV 指令是雙操作數(shù)指令,在使用時

18、有一些限制:立即數(shù)不能作為目的操作數(shù);CS 不能作為目的操作數(shù);段寄存器不能到段寄存器;立即數(shù)不能到段寄存器;內(nèi)存不能到內(nèi)存;8 . 8086 系統(tǒng)的堆棧是如何組織的?如何判斷堆棧滿或空?答: 8086 的堆棧采用存儲器方式實現(xiàn), 8086 將堆棧組織為一個邏輯段,稱為堆棧段。堆棧段的段址由寄存器SS 指定,堆棧指針由 SP 寄存器擔當。若SP 當前值等于SS 段址的內(nèi)的最小值,即 SP 為 0 時,堆棧滿;若 SP 當前值等于堆棧指定的 SP 初始值時,堆??铡? .已知(SS =0FF00H (SP) =00B0H,先執(zhí)行兩條將 8086H和0F20H入棧的PUSH指令, 再執(zhí)行一條POP

19、 指令。請畫出堆棧內(nèi)容變化過程示意圖(請標出存儲單元的物理地址) 。答: 執(zhí)行完兩條PUSH后:|0FF00H SS|20H|0FFAC十 SP|0FH|0FFADH|86H|0FFAEH|80H|0FFAFH再執(zhí)行一條POP后:|0FF00H SS|86H|0FFAEH SP|80H|0FFAFH10 .用一條指令實現(xiàn)將 BX與SI之和傳送給CX的功能。答: LEA CX , BX+SI11 .寫出下列指令中每條指令的執(zhí)行結(jié)果,并指出標志位CR ZF、OF、SF的變化情況。MOV BX,40ABHADDBL, 09CHMOV AL, 0E5HCBWADDSBBADCSUBBH, BX, AX

20、, BH,答: MOV BX,ADD BL , ;OF=1 , SF=0ALAX20H-940ABH ;將立即數(shù)40ABH傳給寄存器09CH ;將 9CH 與 ABH 相加,結(jié)果BX,對標志位無影響47H 存入 BL , CF=1 , ZF=0,MOV AL , 0E5H;將立即數(shù)E5H 傳給寄存器AL ,對標志位無影響CBW ;對 AL 進行符號擴展,即 AX 為 FFE5H ,對標志位無影響ADDBH,AL ;將AL中的數(shù)即E5H與BH中的數(shù)40H相力口,結(jié)果 25H存BH,;CF=1, ZF=0, OF=1, SF=0SBBBX,AX ;將8*中的數(shù)2547H減去AX中的數(shù)FFE5H,再

21、減去標志位;CF=1,即將結(jié)果 2561H 存入 BX 中,CF=1, ZF=0, OF=1, SF=0ADCAX,20H 將 AX 中的數(shù) FFE5H加 20H,再力口 CF=1,即得 0006H 存;入 AX, CF=1, ZF=0, OF=1, SF=0SUBBH,-9 ;將 BH中的數(shù) 25H力口上 F7H (補碼),即得 1BH存入 BH,CF=1,;ZF=0, ;OF=1, SF=012 . 簡述乘法指令和除法指令尋址方式的特點。答:都是隱含尋址指令。都分8 位和 16 位兩種情況,其中 8 位乘法的被乘數(shù)在AL , # ,中,指令給出 8 位乘數(shù),得到的 16 位結(jié)果存放在 AX

22、 中; 16 位乘法的被乘數(shù)在 AX 中,指 令給出 16 位被乘數(shù), 32 位結(jié)果在 DX:AX 中。 8 位除法的 16 位被除數(shù)在 AX 中,指令給出8 位除數(shù), 8 位商在 AL 中, 8 位余數(shù)在 AH 種; 16 位除法的 32 位操作數(shù)在DX:AX 中,指令給出 16 位操作數(shù), 16 位商在 AX 中, 16 位余數(shù)在 DX 中。乘法指令和除法指令都不允許立即數(shù)。13. 完成一個計算DL (無符號數(shù))三次方的指令序列。答: MOVAL , DLIMULDLMUL DL14. 按下列要求編寫指令序列。清除 DH 中的最低三位而不改變其他位,結(jié)果存入 BH 中;把 DI 中的最高

23、5 位置 1 而不改變其他位;把AX中的03位置1,79位取反,1315位置0;檢查BX 中的第2 、 5 和 9 位中是否有一位為1 ;檢查CX中的第1、6和11位中是否同時為1;檢查 AX 中的第 0 、2、 9 和 13 位中是否有一位為0;- # -檢查DX中的第1、4、11和14位中是否同時為 0;答: ( 1) MOVAND2) OR DI ,3) ORXORBH , F8HBH , DHFFF8HAND AX ,4) MOV DX , BXTESTDX ,TESTDX ,TESTDX ,AX , 000FHAX , 0380H1FFFH0004H;若 ZF=0,0020H;若 Z

24、F=0,0200H;若 ZF=0,2 位為15 位為19 位為15 ) XOR CX , 0824HJEYES 6) TEST DX , 0001H;若 ZF=1 ,貝U第 0 位為 0TESTDX,0002H;若 ZF=1,貝U第2 位為 0TESTDX ,0200H;若 ZF=1,貝U第9 位為 0TESTDX ,2000H;若 ZF=1,貝U第13 位為 0 7) 7) XOR DX , 4812HJE YES15. NOT指令和NEG指令有何不同?編寫指令序列將( DX: AX)中的雙字算數(shù)求反。答: NOT 指令是對操作數(shù)的按位求反,稱為邏輯求反。而NEG 指令是算數(shù)求反。NOT A

25、XNOT DXADDAX , 1ADCDX , 016. 使用移位指令將40 和-49 分別乘2 和除 2 ,請注意選擇合適的移位指令。答: MOVAX , 0028H; 將 40 存入 AXSHL AX , 1; ( AX ) *2MOV AX , 0028H;將 40 存入 AXSAR AX , 1; ( AX ) /2MOV AX, FFCFH;將-49 存入 AXSHL AX , 1; ( AX ) *2MOV AX , FFCFH;將-49 存入 AXSAR AX , 1; ( AX ) /217. 分析下面指令序列完成的功能。MOV CL,4SHLDX,CLMOV BL,4HSHL

26、AX,CLSHRBL, CLOR DL, BL答: MOV CL,4;將 4 存入 CLSHLDX,CL;( DX) *16MOV BL, 4H;將 4H 存入 BLSHLAX,CL;( AX) *16SHRBL, CL; (BL.)右移 4 位,為 0ORDL, BL;BL為0,取得DL的高四位18. 方向標志DF 的作用是什么?用于設(shè)置或消除該標志位的指令是什么?答:作用是控制串的處理方向。指令STD 設(shè)置 DF=1 , CLD 清除 DF 。19. 已知數(shù)據(jù)段中保存有100個字的數(shù)組,起始地址為0B00H。編寫指令序列實現(xiàn)將-1插入到第一個字。答:20. 什么是段間轉(zhuǎn)移?什么是段內(nèi)轉(zhuǎn)移?

27、它們的實現(xiàn)機制有何不同? 答:根據(jù)轉(zhuǎn)移指令和轉(zhuǎn)移指令要轉(zhuǎn)移到的目標位置之間的關(guān)系,把轉(zhuǎn)移分為段內(nèi)轉(zhuǎn)移和段間轉(zhuǎn)移。段內(nèi)轉(zhuǎn)移中,轉(zhuǎn)移的目標位置在當前代碼段內(nèi), CS 的內(nèi)容不變,只改變IP 的內(nèi)容;段間轉(zhuǎn)移中,轉(zhuǎn)移的目標地址不在本段,此時CS 和 IP 的內(nèi)容都需要修改。21. 條件轉(zhuǎn)移指令中,所謂的“條件”是什么,如何做到?如何使用?請舉例說明。答:所謂的條件就是某個標志位或某幾個標志位的狀態(tài)。單一條件的 5 個標志位ZF 、CF 、 OF、 SF 和 PF ,以及它們的否定。多個標志位的聯(lián)合還可以構(gòu)成復(fù)合條件。例如:CMP AX , 1 ;執(zhí)行(AX ) -1 不保存結(jié)果JZ Equal;如果

28、結(jié)果為零(ZF=1 )則轉(zhuǎn)移到 Equal,Equal:22. 假設(shè)AX和BX中的內(nèi)容是有符號數(shù),CX和DX中的內(nèi)容是無符號數(shù),試實現(xiàn):如果(DX) >( CX) ,則轉(zhuǎn)到EXCEED;如果(BX) > ( AX) ,則轉(zhuǎn)到EXCEE;D如果(CX) =0,則轉(zhuǎn)到ZERQ如果(BXQ - (AX)將產(chǎn)生溢出,則轉(zhuǎn)到 OVERFLOW如果(BX)< (AX),則轉(zhuǎn)到 NOTBIG如果(DX) < (CX),則轉(zhuǎn)到 NOTBIG;答:(1) CMPDX , CXJAEXCEED(2) CMPBX , AXJGEXCEED(3) CMPCX , 0JZ ZERO(4) CMP

29、BX , AXJO OVERFLOW(5) CMPBX , AXJLE NOTBIG(6) CMPDX , CXJBE NOTBIG23.已知數(shù)據(jù)段中保存有 100個字的數(shù)組,起始地址為0B00H。編寫指令序列實現(xiàn)將數(shù)組中的每個字加1。答:LEA SI, 0B00HMOVCX,100L1 : MOVAX ,SIINCAXMOVSI ,AXADDSI, 2LOOPL124 .簡述段內(nèi)調(diào)用和段間調(diào)用的主要區(qū)別。答:段內(nèi)調(diào)用的調(diào)用位置和子程序在同一段內(nèi),段間調(diào)用的調(diào)用位置和子程序不在同段內(nèi)。25 .已知指令CALL SUB供現(xiàn)段內(nèi)調(diào)用子程序 SUB1,請用JMP指令序列實現(xiàn)此調(diào)用功能。答: PUSH

30、 IPJMP SUB126 .子程序SUB1的最后一條指令是 RET指令實現(xiàn)段內(nèi)返回,它能否用JMP指令模擬?答: POP BX ;前提是調(diào)用時已經(jīng)將原來的 IP 值入棧JMP BX27. 如何得到中斷60H 的中斷服務(wù)程序的首地址?答: MOVAX,0MOV ES,AX ; 中斷向量表放在內(nèi)存最低端,段址為 0LDSSI,ES:60H*4;中斷向量放在中斷向量表“中斷號*4 ”位置,占 4 字節(jié),;低字是偏移地址,高字是段址,所以使用LDS 取長指針。28. 編寫指令序列完成將中斷1CH 指向新的中斷服務(wù)程序的功能,新的中斷服務(wù)程序首地址為 0FA00:100H。答:習題 41 簡述匯編語言

31、的優(yōu)缺點及應(yīng)用場合。答:匯編語言的優(yōu)點: 1 ) 、相比機器語言便于閱讀和理解、書寫和編程、調(diào)試和維護; 2) 、是計算機系統(tǒng)和邏輯功能的直接描述,便于理解計算機系統(tǒng); 3) 、匯編語言可以直接控制硬件,更能充分發(fā)揮硬件的特性;4) 、匯編語言程序目標代碼簡短,占用內(nèi)存少,執(zhí)行速度快。缺點: 1 ) 、匯編語言是低級語言,面向機器,不適于描述和反映現(xiàn)實問題,編程相對復(fù)雜和麻煩; 2 ) 、需要使用者掌握大量計算機相關(guān)知識,不利于計算機的推廣; 3 ) 、依賴特 定的計算機結(jié)構(gòu),缺乏通用性和可移植性。應(yīng)用場合: 1) 、底層的系統(tǒng)軟件。底層的系統(tǒng)軟件往往需要直接面對計算機系統(tǒng)或直接操作硬件,所以

32、多采用匯編語言; 2) 、高效程序。匯編語言與機器語言一一對應(yīng),其程序的時間代價和空間代價都比較小。2 什么是匯編過程?其中,匯編程序起什么作用? 答:匯編過程是指將匯編語言源程序轉(zhuǎn)化為目標程序的過程。匯編程序又稱匯編器,它將匯編語言書寫的程序翻譯成與之等價的機器語言程序。3 偽指令END 有何作用?答: END 偽指令的作用包括兩點: 1) 、標識程序結(jié)束。匯編程序在處理源程序時,碰到 END 時就終止匯編,所以在 END 之后的內(nèi)容對匯編程序沒有意義;2) 、 END 的標號是可選項,指示程序開始執(zhí)行的起始地址,即程序要執(zhí)行的第一條指令。如果多個模塊相連,只有主模塊的 END 語句需要使用

33、標號可選項。4 畫圖說明下列語句所分配的存儲空間及初始化數(shù)據(jù)情況。(1) B_VAR DB 'ABCD', 12, - 12, 3 DUP (?, 0, 2 DUP ( 1, 2)(2) W_VAR DW 'AB',256, - 1, 5 DUP (?, 1, 2)5 變量名、標號的屬性有哪些?答:變量名是存放數(shù)據(jù)的存儲單元的符號的地址。變量有三方面的屬性: 1 )段:變量所處的邏輯段;2 )偏移地址:變量的段內(nèi)地址;3)類型:變量所占的字節(jié)數(shù)。標號是指令語句的符號地址,代表該指令在內(nèi)存中的位置。標號也有三方面的屬性: 1)段:標號所處的邏輯段;2 )偏移地址:

34、標號的段內(nèi)地址;3 )類型:指出標號是在本段內(nèi)引用還是在其他段中引用。6 有數(shù)據(jù)段定義如下:DATA SEGMENTV1 DW ?V2 DB 16 DUP (?)V3 DD ?DSIZE EQU $ -V2DATA ENDS變量 V1 、 V2 、 V3 的地址是多少? DSIZE 的值是多少?答:段開始,計數(shù)器清零,變量V1 的偏移地址為 0 。為 V1 分配兩字節(jié),計數(shù)器加2,故變量 V2 的偏移地址為2。為V2 分配 16 個字節(jié),計數(shù)器加16,故變量V3 的偏移地址為18 。為 V3 分配 4 個字節(jié),計數(shù)器加4 變?yōu)?22, DSIZE 的值等于表達式$-V2 即 22-2=20。7

35、 試在數(shù)據(jù)段內(nèi)定義字節(jié)變量B1 和字變量 W1 ,它們共享20 個存儲單元。答: DATA UNIONB1 DB 20 DUP (?)W1 DW 10 DUP(?) DATA ENDS8 在定義一個字變量時,如果想保證其地址是偶地址,應(yīng)如何實現(xiàn)?這樣做,有何意義?答:可以使用偽指令EVEN ,它可以使下一變量或指令的地址成為偶數(shù)。這樣可以優(yōu)化存儲,保證數(shù)據(jù)按字邊界對齊,這樣對字數(shù)據(jù)的訪問速度最快。9指令MOV BX , 1 是否正確?為什么?如果有錯誤,應(yīng)如何修改?答:錯誤,無法確定BI 指向的是字還是字節(jié)。應(yīng)該加上PTR 指令進行強制類型說明,如:MOV WORD PTR BI,110簡述指

36、令MOV BX, V AR 和 MOV BX, OFFSET V AR 之間的區(qū)別( VAR 是已定義的字變量) 。答: MOV BX, VAR 是將變量 VAR 中的內(nèi)容傳送到寄存器BX 中,MOV BX, OFFSE VAR 是將變量 VAR 的偏移地址傳送到 BX 中。11已知數(shù)據(jù)段有變量定義如下,試寫出符合要求的語句或序列。VAR DW AB ,256,-1, 5 DUP (?, 1, 2)( 1)取 VAR 的段址到 AX 中;( 2)取 VAR 中 - 1 到 AX 中;( 3)取 VAR 中 - 1 的地址到 BX ;( 4)取 VAR 第 4 個字節(jié)內(nèi)容到 AL ;答: ( 1

37、 ) MOV AX, OFFSE VAR( 2 ) MOV AX, OFFSE VAR+4( 3 ) MOV AX, OFFSE VAR+4(4) MOV AL, OFFSEVAR+412 判斷下面各語句的正確性(其中 VAR 為數(shù)據(jù)段中定義的字變量)( 1) XOR BX, SIDI( 2) SUB SI, -91( 3) OUT 300H, AL( 4) JMP DWORD PTR BX( 5) MOV BX, SS:SP( 6) TEST AL, 8000H( 7) CMP BYTE PTR BX, BYTE PTR SI( 8) ANDV AR, OFFSET VAR( 9) SUB

38、SI, 1( 10) ADD BX, SS:V AR( 11) MOV AX, BX - SI( 12) MOV 25, BL( 13) SUB CX, $+10( 14) MOV DS, BP( 15) MOV AX, BX + V AR答: ( 1) XORBX,SIDI(2) SUBSI,-91( 3 )OUT300H,AL( 4 ) JMP DWORD PTR BX( 5 )MOVBX,SS:SP( 6 )TESTAL,8000H( 7) CMP BYTE PTR BX,BYTE PTR SI( 8 ) ANDVAR,OFFSETVAR( 9) SUBSI,1( 10) ADD BX,

39、SS:VAR( 11) MOV AX,BX-SI( 12) MOV 25,BL( 13) SUB CX,$+10( 14) MOV DS,BP( 15) MOV AX,BX+V AR13 編寫一個程序,統(tǒng)計在雙字變量DDVAR 的內(nèi)容中二進制位是1 的位數(shù),并存入變量COUNT 中。答: DATA SEGMENTX DD 0FFFFFFFHXL EQU WORD PTR XXH EQU WORD PTR X+2COUNT DW 0DATA ENDSSTACK SEGMENT STACKDW 100H DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE DS:D

40、ATA SS:STACKSTART: MOV AX,DATAMOV DS,AX;DATA 到 AXMOV DX,XLMOV BX,8000HMOV CX,16XLL:CALL COUNT0;調(diào)用 COUNTLOOP XLLMOV DX,XHMOV BX,8000HMOV CX,16XHH:CALL COUNT0LOOP XHHMOV AX,COUNTMOV BL,10DIV BLADD AL,'0'商在ALADD AH,'0'余數(shù) AHPUSH AXMOV DL,ALMOV AH,2INT 21HPOP AXMOV DL,AHMOV AH,2INT 21HMOV

41、 AX,4C00H ;返回 DOSINT 21HCOUNT0 PROC NEAR ;統(tǒng)計 1 的個數(shù)MOV AX,DXOR AX,BX ;將其中一位,置1CMP AX,DX ; 和原來比較JZ DONEK:SHR BX,1 ;右移一位RETDONE: INC COUNT;相等,則COUNT+1JMP KCOUNT0 ENDPCODE ENDSEND START14 .假設(shè)有三個字變量a、b和c,編寫一個程序,它可判斷它們能否構(gòu)成一個三角形,若能, CF 為 1,否則,CF 為 0 。15 編寫一個程序把字符串 String 兩端的空格刪除(字符串以 0 結(jié)束) 。答: DATA SEGMENT

42、STR DB " ABCDELP ",0N EQU $-DA TADATA ENDSSTACK SEGMENT STACKDW 20 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXCYCLE:LEA BX,STRAGAIN:CMP BYTE PTR BX,0JE EXITCMP BYTE PTR BX,20HJNE NEXTDELETE:PUSH BXMOV DL,BX+1MOV BX,DLINC BXCMP BX+1,0JZ NEXTJMP DELETENEXT:PO

43、P BXINC BXJMP AGAINEXIT:MOV SI,0CMP BYTE PTR SI,20HJE CYCLELEA BX,STRCOMPARE:CMP BYTE PTR BX,20HJE PRINTINC BXJMP COMPAREPRINT:MOV BX,'$'LEA DX,STRMOV AH,09HINT 21HMOV AH,07HINT 21HMOV AX,4C00HINT 21HCODE ENDSEND START16 假設(shè)從變量Buff 開始存放了 200 個字,編寫一個程序統(tǒng)計出其正數(shù)、 0 和負數(shù)的個數(shù),并把它們分別存入 N1 、 N2 和 N3 中。答

44、: DATA SEGMENTSAVE DB 3 DUP(?)NUM DW 100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DA TAMOV DS,AXMOV CX,100XOR BX,BXXOR DX,DXLEA SI,NUMSUB SI,2NEXT1:ADD SI,2CMP SI,0JNZ NZINC BL ; 存放零的個數(shù)JMP OKNZ:TEST SI,8000HJNZ NINC DH ; 存放正數(shù)的個數(shù)JMP OKN:INC DL ; 存放負數(shù)的個數(shù)OK:LOOP NEXT1MOV SA VE,DH ;

45、 將結(jié)果傳送到內(nèi)存保存MOV SA VE+1,DLMOV SA VE+2,BLMOV AH,4CHINT 21HCODE ENDSEND START17 .用雙重循環(huán)將下三角乘法表存入從Result開始的45字節(jié)中。18 簡述在子程序結(jié)構(gòu)中堆棧的作用。答:子程序在調(diào)用和返回時,使用堆棧來保存斷點和恢復(fù)斷點。對于段內(nèi)調(diào)用, CALL 指令調(diào)用子程序時首先保存斷點使IP 入棧,然后轉(zhuǎn)子程序。 RET 指令返回時要使IP 出?;謴?fù)斷點。對于段間調(diào)用,保存斷點時要使CS 和 IP 分別入棧,恢復(fù)斷點時使IP 和 CS 出棧。19 如何區(qū)分RET 指令是段內(nèi)返回還是段間返回?答:匯編程序在處理子程序時,

46、根據(jù)PROC 后的子程序類型的說明來確定子程序的類型屬性,也確定了是將RET 助記符翻譯為段內(nèi)返回還是段間返回。20在子程序中如果要使其所用寄存器對調(diào)用者是透明的,請舉例說明達到其目的的方法。答:在子程序中如果要使其所用的寄存器對調(diào)用者是透明的,就是要注意寄存器的保存和恢復(fù),以便當返回調(diào)用程序后仍然保持正確的狀態(tài)繼續(xù)執(zhí)行。例如,在子程序開始時,把它要用到的所有寄存器都入棧保存,在返回前再出?;謴?fù)。21 子程序參數(shù)傳遞主要有哪些方法?它們各有什么優(yōu)缺點?答:主要有三種方法: 1)通過寄存器傳遞;2)通過存儲器傳遞;3)通過堆棧傳遞。通過寄存器傳遞參數(shù)速度快,但參數(shù)個數(shù)受寄存器數(shù)量的限制,適用于參

47、數(shù)很少的情況。通過存儲器傳遞參數(shù),可以相互傳送較多的參數(shù)。通過寄存器和存儲器傳遞參數(shù)都具有全局性質(zhì),而通過堆棧傳遞的參數(shù)確是局部性的,它們的生命周期隨著子程序結(jié)束后堆棧的復(fù)原而結(jié)束,這樣在子程序中對參數(shù)進行修改對調(diào)用者沒有任何影響。22 分別編寫子程序?qū)崿F(xiàn)下列功能(所有變量都是字類型)。( 1) ABS( x)=|x|( 2) F(x)=3x2 + 5x- 8( 3) strlen(String) , (求字符串長度,字符串以 0結(jié)束)23 .給定一個正數(shù)n>1存放在NUM字變量,試編寫遞歸子程序計算FIB(n),結(jié)果保存到RESULT 變量中。Fibonacci 數(shù)定義如下:答: ST

48、ACK SEGMENT STACK 'STACK'DW 32 DUP(0)STACK ENDSDATA SEGMENTADB 8 DUP(0)OBFDB 3,0,3 DUP(0)DATA ENDSCODE SEGMENTBEGIN PROC FARASSUME SS:STACK,CS:CODE,DS:DATAPUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV DX,OFFSET OBFMOV AH,10INT 21HMOV AL,OBF+1CMP AL,1JA NEX2MOV CL,OBF+2AND CL,0FHJMP NEX1NEX2: MOV A

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論