版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、微機(jī)原理與接口技術(shù)習(xí)題參考答案習(xí)題21. 為何說8086CPU 是 16 位 CPU?答: 16 位指的是 8086CPU 的字長,而字長一般來說和運(yùn)算器、寄存器、總線寬度一致。因?yàn)?8086CPU 的內(nèi)部寄存器、內(nèi)部運(yùn)算部件以及內(nèi)部操作都是按16 位設(shè)計(jì)的,這決定了它的字長為 16 位。2. 8086CPU 由哪兩個(gè)單元組成?其中,指令隊(duì)列在哪個(gè)單元中,有何作用?答:總線接口單元( Bus Interface Unit , BIU )和執(zhí)行單元( Execution Unit , EU ) 。指令隊(duì)列在 BIU 中。它的作用是當(dāng) EU 在執(zhí)行指令時(shí),空閑的 BIU 可以從內(nèi)存讀取后續(xù)指令到指
2、令隊(duì)列,這樣就可以將取指令工作和執(zhí)行指令工作重疊進(jìn)行,從而提高 CPU 的工作效率,加快指令的執(zhí)行速度。3. 8086CPU 中 8位寄存器和 16 位寄存器是什么關(guān)系?答: 8086 的通用寄存器包括數(shù)據(jù)寄存器、指針寄存器和變址寄存器。其中數(shù)據(jù)寄存器包含 AX 、 BX、 CX、 DX 四個(gè) 16 位寄存器,但他們每個(gè)都可以分開作為兩個(gè)單獨(dú)的 8 位寄 存器使用。 8086 的指針寄存器和變址寄存器不可分割為 8 位寄存器。4. 8086CPU 中的 IP 寄存器有何用途?答: IP 寄存器是指令指針寄存器,用來存放下一條要執(zhí)行的指令在代碼段中的偏移地址。在程序運(yùn)行過程中, IP 寄存器始終
3、指向下一條指令的首地址,與CS 寄存器聯(lián)合確定下一條指令的物理地址。 8086 就是通過 IP 寄存器來控制指令序列的執(zhí)行流程。5. 在標(biāo)志寄存器中,用于反映運(yùn)算結(jié)果屬性的標(biāo)志位有哪些?它們每一位所表示的含義是什么?答:有CF、PF、AF、ZF、SF、OF。它們的含義如下:CF :進(jìn)位標(biāo)志。它記錄運(yùn)算時(shí)從最高有效位產(chǎn)生的進(jìn)位值或結(jié)果值。最高有效位有進(jìn)位或有借位時(shí)CF=1 ,否則 CF=0 。PF:奇偶標(biāo)志。它記錄運(yùn)算結(jié)果的奇偶檢驗(yàn)條件。當(dāng)結(jié)果操作數(shù)中“1”的個(gè)數(shù)為偶數(shù)時(shí) PF=1 ,否則 PF=0。AF :輔助進(jìn)位標(biāo)志。在字節(jié)運(yùn)算時(shí),由低半字節(jié)(字節(jié)的低4 位)向高半字節(jié)有進(jìn)位或借位時(shí), AF
4、=1 ,否則 AF=0 。ZF:零標(biāo)志。運(yùn)算結(jié)果為零時(shí)ZF=1,否則ZF=0。SF:符號標(biāo)志。它記錄運(yùn)算結(jié)果的最高位,即由符號數(shù)的符號。OF :溢出標(biāo)志。在運(yùn)算過程中,如果運(yùn)算結(jié)果已經(jīng)超出了機(jī)器能表示的數(shù)值范圍(指有符號數(shù))稱為溢出,此時(shí)OF=1 ,否則 OF=0 。6. 分別完成下面的 8 位運(yùn)算,并說明各主要標(biāo)志位的狀態(tài),以及結(jié)果是否產(chǎn)生溢出(提示:需要分為有符號數(shù)和無符號數(shù)兩種情況) 。(1) 90H+3CH(2) 3CH-90H(3) 7DH-9CH答:(1)有符號:CCH主要標(biāo)志 CF=0 PF=1 AF=0 ZF=0 SF=1 OF=0 無溢出無符號:CCH主要標(biāo)志 CF=0 PF
5、=1 AF=0 ZF=0 SF=1 OF=0 無溢出(2)有符號:ACH 主要標(biāo)志 CF=1 PF=1 AF=0 ZF=0 SF=1 OF=1 溢出 無符號:ACH 主要標(biāo)志 CF=1 PF=1 AF=0 ZF=0 SF=1 OF=0 溢出(3)有符號:E1H 主要標(biāo)志 CF=1 PF=1 AF=0 ZF=0 SF=1 OF=1 溢出 無符號:E1H 主要標(biāo)志 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的邏輯空間有何特點(diǎn)?其邏輯地址如何構(gòu)成?答:采用分段存儲管理方式,將物理空間分割,通過段映射構(gòu)建的由多個(gè)獨(dú)立的邏輯 段構(gòu)成的存儲空間即為邏輯空間。8086使用16位地址在段內(nèi)尋址,稱為段的偏移地址,因此其特點(diǎn)是段的最大長度 216=64KB。在8086中,將16位的段地址和16位的偏移地址合稱為邏輯地址,其中段地址舍棄了最低四位的0,故邏輯地址等于段地址乘以10H加偏移地址。10 .簡述面向邏輯空間編程比面向物理空間編程的優(yōu)勢。
8、答:可以解除程序設(shè)計(jì)對實(shí)際物理空間的依賴。具體表現(xiàn)在:程序設(shè)計(jì)時(shí)不需要了解存儲器的使用情況,操作系統(tǒng)或監(jiān)控程序會(huì)將程序分配在空閑 空間,不會(huì)和系統(tǒng)程序或其他程序沖突;第二,程序設(shè)計(jì)時(shí)采用的是邏輯空間的地址,存儲管理部件將自動(dòng)、透明地進(jìn)行邏輯空間地址到物理空間地址的轉(zhuǎn)換,即邏輯空間到物理空間的映射,所以,不同的空間分配對程序沒有影響;第三,邏輯空間是相對“觀察者”而言的,即不同的人面對的邏輯空間是獨(dú)立無關(guān)的,所以每個(gè)編程者都是在自己的邏輯空間上編程。11 . 8086CPU 是如何實(shí)現(xiàn)邏輯空間到物理空間的映射的?答:邏輯空間的段地址指明要訪問的存儲單元所處的段,偏移地址指明存儲單元的段內(nèi)地址。段
9、地址表示段在物理空間上的起始位置,偏移地址表示要訪問的存儲單元相對于起 始位置的偏移量。 12. 簡述段寄存器的作用。答:為了保證地址轉(zhuǎn)換的效率,訪問存儲器時(shí),總是由段寄存器提供段址。 8086 在 BIU 中設(shè)有 4 個(gè)段寄存器(CS、 DS、 SS、 ES) , CPU 可以在某一時(shí)刻通過這 4 個(gè)段寄存器來訪問 4 個(gè)不同的段。在程序設(shè)計(jì)層面,可以通過指定段和段寄存器的關(guān)系來標(biāo)識段,這樣 在實(shí)際編程時(shí),絕大多數(shù)情況下邏輯地址只需要指定偏移地址。 13. 已知當(dāng)前( CS) =7F00H , (IP) =017CH ,問下條指令的物理地址是什么?答: ( CS) *10H+ ( IP) =
10、7F00H*10H+017CH=7F000H+017CH=7F17CH14. 已知當(dāng)前( 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è)備和主機(jī)交換信息的接口,在它們之間的通信中起到了轉(zhuǎn)換和緩沖數(shù)據(jù)的作用。 8086 的 I/O 端口空間大小為 216 =64KB 。需要 16 位,8086 使用地址總線的低16 位訪問 I/O 端口。16. 簡述 Intel 的 32位處理器如何對16 位處理器的寄存器進(jìn)行擴(kuò)展,有何好處。答: ( 1)將 16 位通用寄存器擴(kuò)展16 位形成 32 位通用寄存器。同時(shí)還保留了原來的 16位寄存器和8 位寄存器。(2)將指令寄存器IP 擴(kuò)展 16 位形成 32 為的 EIP 寄存器。( 3)段寄存器仍然是16 位的,但增加了 FS 和 GS 兩個(gè)段寄存器。(4)將寄存器Fla
12、gs 擴(kuò)展 16 為形成 32 位的 EFLAGS 標(biāo)志寄存器,增加了新的標(biāo)志。32 位微處理器完整保留了 16 位微處理器的寄存器結(jié)構(gòu),可保證 16 位架構(gòu)的程序可 以不經(jīng)修改的運(yùn)行在32 位架構(gòu)中,即向前兼容,是Intel 商業(yè)成功的重要保證。17. 簡述 32 位處理器的工作模式。答: ( 1)實(shí)模式。實(shí)模式下的工作原理與8086 相同,就相當(dāng)于一個(gè)告訴的 8086 處理器。( 2 )保護(hù)模式。該模式有以下特點(diǎn):支持多任務(wù);支持存儲器的分段管理和分頁管理,易于實(shí)現(xiàn)虛擬操作系統(tǒng);具有保護(hù)功能,包括存儲器保護(hù)、任務(wù)特權(quán)級保護(hù)和任務(wù)之間的保護(hù)。(3)虛擬8086模式。虛擬8086模式是為了在保
13、護(hù)模式下執(zhí)行8086程序而設(shè)計(jì)的。在虛擬8086模式下可執(zhí)行16位的軟件,同時(shí)虛擬 8086模式又可以以任務(wù)的形式與真 正的32位任務(wù)進(jìn)行切換,共享資源。18. 簡述保護(hù)模式下存儲管理的特點(diǎn)。答:在保護(hù)模式下,微處理器支持分段存儲管理和分頁存儲管理。分段存儲管理完成 由多個(gè)邏輯段構(gòu)建的邏輯空間映射到線性空間的工作;程序設(shè)計(jì)面向邏輯空間進(jìn) 行;如果不使用分頁存儲管理,則線性空間就是物理空間;分頁存儲管理將線性空 間按照一定的大?。?KB)劃分頁(邏輯頁),然后以頁為單位在物理空間上進(jìn)行 分配(物理頁)和回收,并實(shí)現(xiàn)邏輯頁到物理頁的映射;分頁存儲管理對使用者是 透明的。習(xí)題31 .指令由哪兩部分構(gòu)
14、成?分別起什么作用?答:由操作碼和操作數(shù)組成。操作碼表示指令所要完成操作的功能和性質(zhì),操作數(shù)提 供該操作的對象。2 .存儲器尋址方式提供的是什么地址?它最終如何映射到實(shí)際的物理地址?答:由段址和偏移地址組成的邏輯地址。邏輯空間的段地址指明要訪問的存儲單元所 處的段,偏移地址指明存儲單元的段內(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答:答案一(默認(rèn)求源操作數(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,試分別計(jì)算出下列尋址方式 中源操作數(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 處理,所以對標(biāo)志位沒有影響;( 2 ) MOV 指令是雙操作數(shù)指令,在使用時(shí)
18、有一些限制:立即數(shù)不能作為目的操作數(shù);CS 不能作為目的操作數(shù);段寄存器不能到段寄存器;立即數(shù)不能到段寄存器;內(nèi)存不能到內(nèi)存;8 . 8086 系統(tǒng)的堆棧是如何組織的?如何判斷堆棧滿或空?答: 8086 的堆棧采用存儲器方式實(shí)現(xiàn), 8086 將堆棧組織為一個(gè)邏輯段,稱為堆棧段。堆棧段的段址由寄存器SS 指定,堆棧指針由 SP 寄存器擔(dān)當(dāng)。若SP 當(dāng)前值等于SS 段址的內(nèi)的最小值,即 SP 為 0 時(shí),堆棧滿;若 SP 當(dāng)前值等于堆棧指定的 SP 初始值時(shí),堆棧空。9 .已知(SS =0FF00H (SP) =00B0H,先執(zhí)行兩條將 8086H和0F20H入棧的PUSH指令, 再執(zhí)行一條POP
19、 指令。請畫出堆棧內(nèi)容變化過程示意圖(請標(biāo)出存儲單元的物理地址) 。答: 執(zhí)行完兩條PUSH后:|0FF00H SS|20H|0FFAC十 SP|0FH|0FFADH|86H|0FFAEH|80H|0FFAFH再執(zhí)行一條POP后:|0FF00H SS|86H|0FFAEH SP|80H|0FFAFH10 .用一條指令實(shí)現(xiàn)將 BX與SI之和傳送給CX的功能。答: LEA CX , BX+SI11 .寫出下列指令中每條指令的執(zhí)行結(jié)果,并指出標(biāo)志位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,對標(biāo)志位無影響47H 存入 BL , CF=1 , ZF=0,MOV AL , 0E5H;將立即數(shù)E5H 傳給寄存器AL ,對標(biāo)志位無影響CBW ;對 AL 進(jìn)行符號擴(kuò)展,即 AX 為 FFE5H ,對標(biāo)志位無影響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、減去標(biāo)志位;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 (補(bǔ)碼),即得 1BH存入 BH,CF=1,;ZF=0, ;OF=1, SF=012 . 簡述乘法指令和除法指令尋址方式的特點(diǎn)。答:都是隱含尋址指令。都分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. 完成一個(gè)計(jì)算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位中是否同時(shí)為1;檢查 AX 中的第 0 、2、 9 和 13 位中是否有一位為0;- # -檢查DX中的第1、4、11和14位中是否同時(shí)為 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. 方向標(biāo)志DF 的作用是什么?用于設(shè)置或消除該標(biāo)志位的指令是什么?答:作用是控制串的處理方向。指令STD 設(shè)置 DF=1 , CLD 清除 DF 。19. 已知數(shù)據(jù)段中保存有100個(gè)字的數(shù)組,起始地址為0B00H。編寫指令序列實(shí)現(xiàn)將-1插入到第一個(gè)字。答:20. 什么是段間轉(zhuǎn)移?什么是段內(nèi)轉(zhuǎn)移?
27、它們的實(shí)現(xiàn)機(jī)制有何不同? 答:根據(jù)轉(zhuǎn)移指令和轉(zhuǎn)移指令要轉(zhuǎn)移到的目標(biāo)位置之間的關(guān)系,把轉(zhuǎn)移分為段內(nèi)轉(zhuǎn)移和段間轉(zhuǎn)移。段內(nèi)轉(zhuǎn)移中,轉(zhuǎn)移的目標(biāo)位置在當(dāng)前代碼段內(nèi), CS 的內(nèi)容不變,只改變IP 的內(nèi)容;段間轉(zhuǎn)移中,轉(zhuǎn)移的目標(biāo)地址不在本段,此時(shí)CS 和 IP 的內(nèi)容都需要修改。21. 條件轉(zhuǎn)移指令中,所謂的“條件”是什么,如何做到?如何使用?請舉例說明。答:所謂的條件就是某個(gè)標(biāo)志位或某幾個(gè)標(biāo)志位的狀態(tài)。單一條件的 5 個(gè)標(biāo)志位ZF 、CF 、 OF、 SF 和 PF ,以及它們的否定。多個(gè)標(biāo)志位的聯(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ù),試實(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個(gè)字的數(shù)組,起始地址為0B00H。編寫指令序列實(shí)現(xiàn)將數(shù)組中的每個(gè)字加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指令序列實(shí)現(xiàn)此調(diào)用功能。答: PUSH
30、 IPJMP SUB126 .子程序SUB1的最后一條指令是 RET指令實(shí)現(xiàn)段內(nèi)返回,它能否用JMP指令模擬?答: POP BX ;前提是調(diào)用時(shí)已經(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。答:習(xí)題 41 簡述匯編語言
31、的優(yōu)缺點(diǎn)及應(yīng)用場合。答:匯編語言的優(yōu)點(diǎn): 1 ) 、相比機(jī)器語言便于閱讀和理解、書寫和編程、調(diào)試和維護(hù); 2) 、是計(jì)算機(jī)系統(tǒng)和邏輯功能的直接描述,便于理解計(jì)算機(jī)系統(tǒng); 3) 、匯編語言可以直接控制硬件,更能充分發(fā)揮硬件的特性;4) 、匯編語言程序目標(biāo)代碼簡短,占用內(nèi)存少,執(zhí)行速度快。缺點(diǎn): 1 ) 、匯編語言是低級語言,面向機(jī)器,不適于描述和反映現(xiàn)實(shí)問題,編程相對復(fù)雜和麻煩; 2 ) 、需要使用者掌握大量計(jì)算機(jī)相關(guān)知識,不利于計(jì)算機(jī)的推廣; 3 ) 、依賴特 定的計(jì)算機(jī)結(jié)構(gòu),缺乏通用性和可移植性。應(yīng)用場合: 1) 、底層的系統(tǒng)軟件。底層的系統(tǒng)軟件往往需要直接面對計(jì)算機(jī)系統(tǒng)或直接操作硬件,所以
32、多采用匯編語言; 2) 、高效程序。匯編語言與機(jī)器語言一一對應(yīng),其程序的時(shí)間代價(jià)和空間代價(jià)都比較小。2 什么是匯編過程?其中,匯編程序起什么作用? 答:匯編過程是指將匯編語言源程序轉(zhuǎn)化為目標(biāo)程序的過程。匯編程序又稱匯編器,它將匯編語言書寫的程序翻譯成與之等價(jià)的機(jī)器語言程序。3 偽指令END 有何作用?答: END 偽指令的作用包括兩點(diǎn): 1) 、標(biāo)識程序結(jié)束。匯編程序在處理源程序時(shí),碰到 END 時(shí)就終止匯編,所以在 END 之后的內(nèi)容對匯編程序沒有意義;2) 、 END 的標(biāo)號是可選項(xiàng),指示程序開始執(zhí)行的起始地址,即程序要執(zhí)行的第一條指令。如果多個(gè)模塊相連,只有主模塊的 END 語句需要使用
33、標(biāo)號可選項(xiàng)。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 變量名、標(biāo)號的屬性有哪些?答:變量名是存放數(shù)據(jù)的存儲單元的符號的地址。變量有三方面的屬性: 1 )段:變量所處的邏輯段;2 )偏移地址:變量的段內(nèi)地址;3)類型:變量所占的字節(jié)數(shù)。標(biāo)號是指令語句的符號地址,代表該指令在內(nèi)存中的位置。標(biāo)號也有三方面的屬性: 1)段:標(biāo)號所處的邏輯段;2 )偏移地址:
34、標(biāo)號的段內(nèi)地址;3 )類型:指出標(biāo)號是在本段內(nèi)引用還是在其他段中引用。6 有數(shù)據(jù)段定義如下:DATA SEGMENTV1 DW ?V2 DB 16 DUP (?)V3 DD ?DSIZE EQU $ -V2DATA ENDS變量 V1 、 V2 、 V3 的地址是多少? DSIZE 的值是多少?答:段開始,計(jì)數(shù)器清零,變量V1 的偏移地址為 0 。為 V1 分配兩字節(jié),計(jì)數(shù)器加2,故變量 V2 的偏移地址為2。為V2 分配 16 個(gè)字節(jié),計(jì)數(shù)器加16,故變量V3 的偏移地址為18 。為 V3 分配 4 個(gè)字節(jié),計(jì)數(shù)器加4 變?yōu)?22, DSIZE 的值等于表達(dá)式$-V2 即 22-2=20。7
35、 試在數(shù)據(jù)段內(nèi)定義字節(jié)變量B1 和字變量 W1 ,它們共享20 個(gè)存儲單元。答: DATA UNIONB1 DB 20 DUP (?)W1 DW 10 DUP(?) DATA ENDS8 在定義一個(gè)字變量時(shí),如果想保證其地址是偶地址,應(yīng)如何實(shí)現(xiàn)?這樣做,有何意義?答:可以使用偽指令EVEN ,它可以使下一變量或指令的地址成為偶數(shù)。這樣可以優(yōu)化存儲,保證數(shù)據(jù)按字邊界對齊,這樣對字?jǐn)?shù)據(jù)的訪問速度最快。9指令MOV BX , 1 是否正確?為什么?如果有錯(cuò)誤,應(yīng)如何修改?答:錯(cuò)誤,無法確定BI 指向的是字還是字節(jié)。應(yīng)該加上PTR 指令進(jìn)行強(qiáng)制類型說明,如: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 個(gè)字節(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 編寫一個(gè)程序,統(tǒng)計(jì)在雙字變量DDVAR 的內(nèi)容中二進(jìn)制位是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)計(jì) 1 的個(gè)數(shù)MOV AX,DXOR AX,BX ;將其中一位,置1CMP AX,DX ; 和原來比較JZ DONEK:SHR BX,1 ;右移一位RETDONE: INC COUNT;相等,則COUNT+1JMP KCOUNT0 ENDPCODE ENDSEND START14 .假設(shè)有三個(gè)字變量a、b和c,編寫一個(gè)程序,它可判斷它們能否構(gòu)成一個(gè)三角形,若能, CF 為 1,否則,CF 為 0 。15 編寫一個(gè)程序把字符串 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 個(gè)字,編寫一個(gè)程序統(tǒng)計(jì)出其正數(shù)、 0 和負(fù)數(shù)的個(gè)數(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 ; 存放零的個(gè)數(shù)JMP OKNZ:TEST SI,8000HJNZ NINC DH ; 存放正數(shù)的個(gè)數(shù)JMP OKN:INC DL ; 存放負(fù)數(shù)的個(gè)數(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)用和返回時(shí),使用堆棧來保存斷點(diǎn)和恢復(fù)斷點(diǎn)。對于段內(nèi)調(diào)用, CALL 指令調(diào)用子程序時(shí)首先保存斷點(diǎn)使IP 入棧,然后轉(zhuǎn)子程序。 RET 指令返回時(shí)要使IP 出?;謴?fù)斷點(diǎn)。對于段間調(diào)用,保存斷點(diǎn)時(shí)要使CS 和 IP 分別入棧,恢復(fù)斷點(diǎn)時(shí)使IP 和 CS 出棧。19 如何區(qū)分RET 指令是段內(nèi)返回還是段間返回?答:匯編程序在處理子程序時(shí),
46、根據(jù)PROC 后的子程序類型的說明來確定子程序的類型屬性,也確定了是將RET 助記符翻譯為段內(nèi)返回還是段間返回。20在子程序中如果要使其所用寄存器對調(diào)用者是透明的,請舉例說明達(dá)到其目的的方法。答:在子程序中如果要使其所用的寄存器對調(diào)用者是透明的,就是要注意寄存器的保存和恢復(fù),以便當(dāng)返回調(diào)用程序后仍然保持正確的狀態(tài)繼續(xù)執(zhí)行。例如,在子程序開始時(shí),把它要用到的所有寄存器都入棧保存,在返回前再出?;謴?fù)。21 子程序參數(shù)傳遞主要有哪些方法?它們各有什么優(yōu)缺點(diǎn)?答:主要有三種方法: 1)通過寄存器傳遞;2)通過存儲器傳遞;3)通過堆棧傳遞。通過寄存器傳遞參數(shù)速度快,但參數(shù)個(gè)數(shù)受寄存器數(shù)量的限制,適用于參
47、數(shù)很少的情況。通過存儲器傳遞參數(shù),可以相互傳送較多的參數(shù)。通過寄存器和存儲器傳遞參數(shù)都具有全局性質(zhì),而通過堆棧傳遞的參數(shù)確是局部性的,它們的生命周期隨著子程序結(jié)束后堆棧的復(fù)原而結(jié)束,這樣在子程序中對參數(shù)進(jìn)行修改對調(diào)用者沒有任何影響。22 分別編寫子程序?qū)崿F(xiàn)下列功能(所有變量都是字類型)。( 1) ABS( x)=|x|( 2) F(x)=3x2 + 5x- 8( 3) strlen(String) , (求字符串長度,字符串以 0結(jié)束)23 .給定一個(gè)正數(shù)n>1存放在NUM字變量,試編寫遞歸子程序計(jì)算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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年撰寫:中國短信息軟件行業(yè)發(fā)展趨勢及競爭調(diào)研分析報(bào)告
- 2024-2030年撰寫:中國大型儲膠式吹瓶機(jī)項(xiàng)目風(fēng)險(xiǎn)評估報(bào)告
- 2024-2030年多孔硝銨公司技術(shù)改造及擴(kuò)產(chǎn)項(xiàng)目可行性研究報(bào)告
- 2024-2030年國家甲級資質(zhì):中國皮帶機(jī)托輥融資商業(yè)計(jì)劃書
- 2024-2030年國家甲級資質(zhì):中國水質(zhì)處理器融資商業(yè)計(jì)劃書
- 2024-2030年雙線路穩(wěn)壓電源搬遷改造項(xiàng)目可行性研究報(bào)告
- 2024-2030年冶金機(jī)械設(shè)搬遷改造項(xiàng)目可行性研究報(bào)告
- 智能生態(tài)系統(tǒng)課程設(shè)計(jì)
- 2024-2030年全球及中國電氣設(shè)備監(jiān)測行業(yè)前景動(dòng)態(tài)及投資戰(zhàn)略研究報(bào)告
- 2024-2030年全球及中國炸雞行業(yè)競爭情況及營銷趨勢預(yù)測報(bào)告
- 6.1 認(rèn)識經(jīng)濟(jì)全球化 課件-高中政治統(tǒng)編版選擇性必修一當(dāng)代國際政治與經(jīng)濟(jì)-2
- 2024年《檔案工作實(shí)務(wù)》考試復(fù)習(xí)題庫400題(含答案)
- 2025年1月“八省聯(lián)考”考前猜想卷歷史試題01 含解析
- 眼科練習(xí)卷含答案
- 山東省淄博市2023-2024學(xué)年高二上學(xué)期期末教學(xué)質(zhì)量檢測試題 數(shù)學(xué) 含解析
- 專題23 殖民地人民的反抗與資本主義制度的擴(kuò)展(練習(xí))
- 2024至2030年中國無甲醛多層板數(shù)據(jù)監(jiān)測研究報(bào)告
- 算法設(shè)計(jì)與分析 課件 5.4.1-動(dòng)態(tài)規(guī)劃-0-1背包問題-問題描述和分析
- 分子生物學(xué)課件第一章醫(yī)學(xué)分子生物學(xué)緒論
- 電工技能與實(shí)訓(xùn)(第4版)教學(xué)指南 高教版
- 轉(zhuǎn)化學(xué)困生工作總結(jié)課件
評論
0/150
提交評論