(完整版)微型計算機(jī)習(xí)題答案_第1頁
(完整版)微型計算機(jī)習(xí)題答案_第2頁
(完整版)微型計算機(jī)習(xí)題答案_第3頁
(完整版)微型計算機(jī)習(xí)題答案_第4頁
(完整版)微型計算機(jī)習(xí)題答案_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第三章習(xí)題答案 Pentium 的指令系統(tǒng)習(xí)題序號不對應(yīng)問答題1. 斷點(diǎn)中斷是指怎樣一種中斷?在程序調(diào)試中有什么作用? 斷點(diǎn)中斷指令有什么特點(diǎn)?設(shè)置斷點(diǎn)過程對應(yīng)了一種什么操作?這種 操作會產(chǎn)生什么運(yùn)行結(jié)果?答: 斷點(diǎn)中斷即中斷類型 3,一般該中斷處理程序進(jìn)行程序調(diào)試,主要功能是顯示一些寄存器的值,并給出一些重要的信息。在程 序調(diào)試中,斷點(diǎn)中斷就是從一個較長的程序中分離出一個較短的存在問題的程序段。斷點(diǎn)中斷的特點(diǎn)是指令占一個字節(jié)。設(shè)置斷點(diǎn) 過程對應(yīng) int 3 替換那條指令,在中斷處理程序中再恢復(fù)該被替換的指令,并修改堆棧中的斷點(diǎn)地址為中斷處的地址而不是下一條 指令地址。這種操作使斷點(diǎn)中斷不會影

2、響程序的功能。2. 用普通運(yùn)算指令執(zhí)行 BCD碼運(yùn)算時,為什么要進(jìn)行十進(jìn)制調(diào)整?具體講,在進(jìn)行BCD碼的加、減、乘、除運(yùn)算時,程序段的什么位置必須加上十進(jìn)制調(diào)整指令?答:在BCD碼中,只允許0?/FONT>9這10個數(shù)字出現(xiàn),但有時候的運(yùn)算結(jié)果會超過此范圍,因此要進(jìn)行十進(jìn)制調(diào)整。進(jìn)行加、件或 乘法運(yùn)算時,調(diào)整指令必須緊跟在算術(shù)指令后面,在進(jìn)行除法運(yùn)算時,調(diào)整指令放在除法指令之前。3. 普通移位指令(帶 CF的和不帶CF的兩類)在執(zhí)行操作時,有什么差別?在編制乘法程序時,為什么常用移位指令來代替乘除法指令?試編寫一個程序段,實(shí)現(xiàn)將BX中的數(shù)除以10,結(jié)果仍放在BX中。答:帶CF和不帶CF的

3、普通移位指令的差異:前者用于算術(shù)運(yùn)算,后者用于邏輯運(yùn)算。程序段:MoV CL ,0AHMOV AX, BXIDIV CLMoV BX, AX4. 在使用條件轉(zhuǎn)移指令時,特別要注意它們均為相對轉(zhuǎn)移指令,請解釋“相對轉(zhuǎn)移”的含義。如果要往較遠(yuǎn)的地方進(jìn)行條件轉(zhuǎn)移, 那么,程序中應(yīng)該怎樣設(shè)置?解答 只能在從本指令為中心的 -128 到+1 27字節(jié)范圍內(nèi)轉(zhuǎn)移的稱為相對轉(zhuǎn)移。如果要往較遠(yuǎn)的地方進(jìn)行條件轉(zhuǎn)移時,可以先用條 件轉(zhuǎn)移指令轉(zhuǎn)到附近一個單元,然后,從此單元起放一條無條件轉(zhuǎn)移指令,再通過這條無條件轉(zhuǎn)移指令轉(zhuǎn)到較遠(yuǎn)的目的地址。5、帶參數(shù)的返回指令用在什么場合?設(shè)棧頂?shù)刂窞?000H當(dāng)執(zhí)行RET 000

4、6后,SP的值為多少?解答 帶參數(shù)的返回指令可用在這樣的情況: 主程序為某個子程序提供一定的參數(shù)或者參數(shù)地址先送到堆棧中,通過堆棧傳遞給子程序。當(dāng)棧頂指針 SP=3000H執(zhí)行RET0006時,彈出3000H和3001H處的返回地址,騰出3002H?/FONT>3007H勺空間,所以SP=3008H6、用循環(huán)控制指令設(shè)計程序段,從60H個元素中尋找一個最大值,結(jié)果放在AL中答案 MoV SI, oFFSET DATA1 ; 將數(shù)據(jù)起始地址送 SIMoV CX, 5FH ; 有 60H-1 次循環(huán)MOV AL, SI;將第一個元素放 AL中CoMPARE: INC SICMP AL, SI

5、JL XCHMAXJMP NEXTXCHMAX: MOV AL, SINEXT: LOOP COMPARE7、中斷指令執(zhí)行時,堆棧的內(nèi)容有什么變化?中斷處理子程序的人口地址是怎樣得到的?答案中斷指令執(zhí)行時,堆棧內(nèi)容變化如下:標(biāo)志寄存器被推入堆棧,且SP減2 ,然后CPU將主程序的下一條指令地址即斷點(diǎn)地址的段值和偏移量推入堆棧,且 SP減4。某中斷處理子程序的入口地址即中斷向量,由該中斷類型號的 4倍為內(nèi)存地址,在該地址處的 4個字節(jié)內(nèi)容即該中斷向量。8、中斷返回指令I(lǐng)RET和普通子程序返回指令 RET在執(zhí)行時,具體操作內(nèi)容什么不同?答案IRET須彈出堆棧中標(biāo)志寄存器的值,而RET則不需要。9、

6、斷點(diǎn)中斷是指怎樣一種中斷?在程序調(diào)試中有什么作用?斷點(diǎn)中斷指令有什么特點(diǎn)?設(shè)置斷點(diǎn)過程對應(yīng)了一種什么操作?這種操作會產(chǎn)生什么運(yùn)行結(jié)果?答案 斷點(diǎn)中斷即中斷類型 3,一般該中斷處理程序進(jìn)行程序調(diào)試,主要功能是顯示一些寄存器的值,并給出一些重要的信息。 在程序調(diào)試中,斷點(diǎn)中斷就是從一個較長的程序中分離出一個較短的存在問題的程序段。斷點(diǎn)中斷的特點(diǎn)是指令占一個字節(jié)。設(shè)置斷點(diǎn)過程對應(yīng) int 3 替換那條指令,在中斷處理程序中再恢復(fù)該被替換的指令,并修改堆棧中的斷點(diǎn)地址為中斷處的地址而不 是下一條指令地址。這種操作使斷點(diǎn)中斷不會影響程序的功能。10、HLT 指令用在什么場合?如 CPU 在執(zhí)行 HLT

7、指令時遇到硬件中斷并返回后,以下應(yīng)執(zhí)行哪條指令?答案HLT用在使CPU處于暫停狀態(tài)而等待硬件中斷的場合。在執(zhí)行HLT指令遇到硬件中斷并返回后將執(zhí)行HLT后面的一條指令。11、總線封鎖指令用在什么場合? 以飛機(jī)定票系統(tǒng)為例說明總線封鎖指令的作用(設(shè)飛機(jī)定票系統(tǒng)為一個多處理器系統(tǒng),每個處 理器都是平等的)。答案 總線封鎖指令用在多個處理器爭用同一資源或設(shè)備的場合。在飛機(jī)票系統(tǒng)中,當(dāng)一個處理器受理業(yè)務(wù)時,便用LoCK封鎖總線,使其它處理器不能訪問總線,避免引起沖突。11、設(shè)當(dāng)前SS=2010H SP=FEooH BX=3457H計算當(dāng)前棧頂?shù)牡刂窞槎嗌伲慨?dāng)執(zhí)行PUSHBX指令后,棧頂?shù)刂泛蜅m?2個

8、字節(jié)的內(nèi)容分別是什么?答案當(dāng)前棧頂?shù)牡刂?2010H*16+FE00H=2FF00H執(zhí)行PUSH BX指令后,堆棧地址指針 SP減2 ,則棧頂?shù)刂窞?2FEEDH棧頂2個 字節(jié)的內(nèi)容為 57H、34H。用串操作指令設(shè)計實(shí)現(xiàn)以下功能的程序段:首先將100H個數(shù)從2170H處搬到1000H處,然后,從中檢索相等于 AL中字符的單元,并將此單元值換成空格符解答 BUFF1 EQU, 1000HBUFF2 EQU, 2170HSTART: MOV SI, OFFSET BUFF2LEA DI, BUFF1MOV CX, 100HCYCLE: MOV AL, SIMOV DI , ALINC SIINC

9、 DILOOP CYCLEANOTHE:RMOV DI, OFFSET BUFF1MOV CX, 100CLDAGE: SCASBDEC CXJZ FINJNZ AGEJMP OVERFIN: MOV DI , 20HCMP CX, 0JNZ AGEOVER: RET13、用乘法指令時,特別要注意先判斷用有符號數(shù)乘法指令還是用無符號數(shù)乘法指令,這是為什么? 解答 用乘法指令時,特別要注意先判斷用有符號數(shù)乘法指令還是用無符號數(shù)乘法指令,是因為在執(zhí)行乘法運(yùn)算時,要想使無符號 數(shù)相乘得到正確的結(jié)果,有符號數(shù)相乘時,就得不到正確的結(jié)果;要想使有符號數(shù)相乘得到正確的結(jié)果,無符號數(shù)相乘時,就得不 到正確的

10、結(jié)果。13、 字節(jié)擴(kuò)展指令和字?jǐn)U展指令用在什么場合?舉例說明解答遇到兩個字節(jié)相除時,要預(yù)先執(zhí)行CBW旨令,以便產(chǎn)生一個雙倍長度的被除數(shù)。否則就不能正確的執(zhí)行除法操作。CW國理例如: CBW MOV AL, a; CWD MOV AX, X;MOV CL , b; MOV CX, Y;CBW AL; CWD AX;DIV AX, CL; DIV AX, CX;14、什么叫BCD碼?什么叫組合的 BCD碼?什么叫非組合的 BCD碼? 8086匯編語言在對BCD碼進(jìn)行加、減、乘、除運(yùn)算時,采用 什么方法?解答在計算機(jī)中,可用4位二進(jìn)制碼表示一個十進(jìn)制碼,這種代碼叫BCD碼;用一個字節(jié)表示 2位BCD

11、碼就是組合BCD碼;一個字節(jié)只用低4位表示BCD碼,高四位為0的為非組合BCD碼。計算機(jī)對BCD碼進(jìn)行加、減、乘、除運(yùn)算,通常采用兩種辦法:一種是在指令系統(tǒng)中設(shè)置一套轉(zhuǎn)專用于BCD碼的指令;另一種方法是利用對普通二進(jìn)制數(shù)的運(yùn)算指令算出結(jié)果,然后用專門的指令對結(jié)果進(jìn)行調(diào)整,或者反過來,先對數(shù)據(jù)進(jìn)行調(diào)整,再用二進(jìn)制 數(shù)指令進(jìn)行運(yùn)算。15、用普通運(yùn)算指令執(zhí)行 BCD碼運(yùn)算時,為什么要進(jìn)行十進(jìn)制調(diào)整?具體講 ,在進(jìn)行BCD碼的加、減、乘、除運(yùn)算時,程序段的什 么位置必須加上十進(jìn)制調(diào)整指令?解答在BCD碼中,只允許0?/FONT>9這10個數(shù)字出現(xiàn),但有時候的運(yùn)算結(jié)果會超過此范圍,因此要進(jìn)行十進(jìn)制

12、調(diào)整。進(jìn)行加、 件或乘法運(yùn)算時,調(diào)整指令必須緊跟在算術(shù)指令后面,在進(jìn)行除法運(yùn)算時,調(diào)整指令放在除法指令之前。16、普通移位指令(帶 CF的和不帶CF的兩類)在執(zhí)行操作時,有什么差別?在編制乘法程序時,為什么常用移位指令來代替乘除 法指令?試編寫一個程序段,實(shí)現(xiàn)將BX中的數(shù)除以10,結(jié)果仍放在BX中。解答帶CF和不帶CF的普通移位指令的差異:前者用于算術(shù)運(yùn)算,后者用于邏輯運(yùn)算。程序段:MOV CL, 0AHMOV AX, BXIDIV CLMOV BX, AX程序改錯及編程1.下面的程序段將 ASCIl碼的空格字符填滿100個字節(jié)的字符表。閱讀這一程序,畫出流程,并說明使用CLD指令和REP S

13、ToSB旨令的作用,再指出REP STOSBl令執(zhí)行時和那幾個寄存器的設(shè)置有關(guān)?MOVCX, SEG TABLE; TABLE為字節(jié)表表頭MOVES, CXMOVDI, OFFSET TABLE; DI指向字節(jié)表MOVAL, ' 'MOVCX, 64H;字節(jié)數(shù)CALLFILLM;調(diào)用數(shù)子程序FILLM: JCXZ EXIT;CX為0則退出PUSH DI保存寄存器PUSH CXCLDREP STOSB方向標(biāo)志清零POP CX1重復(fù)填數(shù)PoP DIEXIT: RET答:CLD指令作用:方向標(biāo)志清 0; REPSTOSB旨令作用:重復(fù)CX次將AL中的字節(jié)填入ES:DI為起始的表內(nèi),D

14、I增量、減量根據(jù)DF確定:DF=O, DI每次增量;DF=1, DI每次減量。STOSB旨令執(zhí)時,與 AX ES DI寄存器和Flag的DF位設(shè)置有關(guān)。流程圖如下:2.下程序?qū)⒁粋€存儲塊的內(nèi)容復(fù)制到另一個存儲快,進(jìn)入存儲段時,SI中為源區(qū)起始地址的偏移量,DI中為目的區(qū)起始地址的偏移量,CX中為復(fù)制的字節(jié)數(shù)。閱讀程序并說明具體的REP MOCS指令使用與那些寄存器有關(guān)?PUSHDI;保存寄存器PUSHSIPUSHCXCMPDI, SI ;看源區(qū)和目的區(qū)的地址哪個高JBELOWER ;如目的區(qū)地址底,則轉(zhuǎn)移STD如目的區(qū)地址高,則設(shè)方向標(biāo)志為ADDSI, CX ;從最后一個字節(jié)開始復(fù)制DECSI

15、;調(diào)整源區(qū)地址ADDDI, CXDECDI;調(diào)整目的區(qū)地址JMPMOVEMLOWER: CLD;從第一個字節(jié)開始復(fù)制MOVEM: REP MOVSBPOP CXNOTCXNOTDXADDAX, 1ADCBX, 0ADCCX, 0ADCDX, 0POP SIPOP DIRET答:REP MoVSB的作用是重復(fù) CX次將DS:SI中字節(jié)傳送到ES:DI中。SI、DI 加或減 1 由 DF確定,DF=O,力口。REP使 CX減 1 ,到0后結(jié)束傳送。所以 REP MOVSB指令與CX SI、DI、ESDS寄存器和FIag的DF位設(shè)置有關(guān)。3. 下面的程序?qū)崿F(xiàn)兩個32 位帶符號數(shù)的乘法,其中調(diào)用了題3

16、.33中的非符號數(shù)相乘的程序 MUL64結(jié)果放在DX CX BX AX四個寄存器中, 進(jìn)入程序時,DXAX中為被乘數(shù),CX BX中為乘數(shù)。讀懂程序后再設(shè)計一個 16位帶符號數(shù)和32位帶符號數(shù)相乘程序。MULS64: MOV 1000, 0; 1000單元作為負(fù)數(shù)標(biāo)志CMP DX, 0;乘數(shù)為負(fù)數(shù)嗎 ?JNS CHKK;否,則轉(zhuǎn) CHKKNOT AX;是, 則取補(bǔ)碼NOT DXADD AX, 1ADC DX, 0NOT 1000;負(fù)數(shù)標(biāo)志置 1CHKK: CMP CX, 0;乘數(shù)為負(fù)數(shù)嗎 ?JNS GOMUL;否, 則轉(zhuǎn) GOMULNOT BX;是, 則取補(bǔ)碼NOT CXADD BX, 1ADC CX, 0NOT 1000;將負(fù)數(shù)標(biāo)志取反JGONUL: CALL MUL64;調(diào)用非符號數(shù)乘法程序CMP 1000, 0;結(jié)果為正數(shù)嗎?JZ EXIIT;是正數(shù),則轉(zhuǎn)移NOT AX;是負(fù)數(shù),則取補(bǔ)碼NOTBXEXIIT: RETMULS48: MOV 1000, 0答:(DX、AX)*CX->DX CX AX,為有符號數(shù) 單元作為負(fù)數(shù)標(biāo)志CMP DX, 0乘數(shù)為負(fù)數(shù)嗎 ?JNS CHKKNOT AX否,則轉(zhuǎn) CHKK 是 , 則取補(bǔ)碼NOT DXADD

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論