微機原理與接口技術 顧暉 習題參考答案.doc
《微機原理與接口技術 顧暉 習題參考答案.doc》由會員分享,可在線閱讀,更多相關《微機原理與接口技術 顧暉 習題參考答案.doc(42頁珍藏版)》請在裝配圖網上搜索。
微機原理與接口技術 答案 目錄 第1章 習題答案 1 第2章 習題答案 2 第3章 習題答案 4 第4章 習題答案 7 第5章 習題答案 19 第6章 習題答案 28 第7章 習題答案 29 第8章 習題答案 29 第9章 習題答案 32 第10章 習題答案 37 第11章 習題答案 39 第1章 習題答案 1.計算機硬件的基本組成部分有哪些?簡述各部分的功能 答: 計算機硬件的基本組成部分有:運算器、控制器、存儲器、輸入設備和輸出設備五大組成部分; 運算器功能:完成各種算術運算或邏輯運算; 控制器功能:發(fā)出各種控制信息,使計算機各部件協調工作; 存儲器功能:存儲程序和數據; 輸入設備:將程序和數據輸入的部件; 輸出設備:將結果數據輸出的部件。 2.簡述微型計算機系統的組成。4分 答: 以微型計算機為核心,配以鼠標、鍵盤等外圍設備、電源、接口電路,以及控制計算機工作的軟件構成微型計算機系統。 3.簡述總線控制邏輯的任務。 答: 主板與外部設備之間的數據傳輸必須通過系統總線,所以系統總線包含的信號線必須滿足下列各種輸入/輸出操作的需要:① 訪問分布于主板之外的存儲器;② 訪問I/O接口;③ 適應外部中斷方式;④ 適應存儲器直接與外部設備交換信息??偩€控制邏輯的任務就是產生和接受這些操作所需要的信號。 4.簡述馮·諾依曼的“程序存儲和程序控制”原理。 答: 計算機有運算器、控制器、存儲器、輸入設備和輸出設備五大部分組成,計算機內部采用二進制數據的格式表示數據和指令。程序將事先保存在內存儲器中,計算機在工作時,不需要操作人員干預,自動逐條取出指令并執(zhí)行。 5.簡述微型計算機系統的啟動過程。4分 答: CPU首先執(zhí)行主板上BIOS中的自檢程序;執(zhí)行引導裝入程序,依次搜尋硬盤、光盤等;讀出引導記錄,裝入引導程序;由引導程序將操作系統裝入內存;執(zhí)行操作系統。 6. BIOS是什么?簡述系統BIOS代碼完成的工作。 答: BIOS是Basic Input Output System的縮寫,指的是基本輸入輸出系統"。它是一組固化到計算機ROM芯片上的程序,保存著計算機最重要的基本輸入輸出的程序、系統設置信息、開機后自檢程序和系統自啟動程序。 7.答:略。 2 第2章 習題答案 1.答: 為了區(qū)別所使用的數制,一般用以下兩種書寫格式表示: ① 用括號將數字括起,后面加數制區(qū)分,數制用下標的形式給出; ② 用后綴區(qū)分,二進制數、十進制數、八進制數、十六進制數的后綴分別為字母B(或b)、D(或d)、O(或o)或Q(或q)、H(或h)。 例如:十六進制數56.78可以表示成(56.78)16或56.78H; 十進制數56.78可以表示成(56.78)10或56.78D。 2.答: 123D采用十進制,0AFH采用十六進制,77Q采用八進制,1001110B采用二進制。 3.答: 字長為8位的二進制數原碼表示的最大值:127,最小值:-127;補碼表示的最大值:127,最小值:-128。 字長為16位的二進制數原碼表示的最大值:32767,最小值:-32767;補碼表示的最大值:32767,最小值:-32768。 4.把下列十進制數分別轉換為二進制數和十六進制數。2分 1)125 2)255 3)72 4)5090 答: (1)125D=0111 1101B=7DH (2) 255D=1111 1111B=FFH (3)72D=0100 1000B=48H (4)5090D=0001 0011 1110 0010B=13E2H 5.答: (1)1111 0000B=240D=F0H (2) 1000 0000 B =128D =80H (3)1111 1111 B =255 D =FFH (4)0101 0101B=85D=55H 6.答: (1)FFH=255D=1111 1111B (2) ABCDH=43981D=1010 1011 1100 1101B (3) 123H=291D=0000 0001 0010 0011B (4) FFFFH=65535D=1111 1111 1111 1111B 7.答: (1)8位時(16)原=0001 0000 ; (16)補=0001 0000; 16位時(16)原=0000 0000 0001 0000 ; (16)補=0000 0000 0001 0000; (2) 8位時(-16)原=1001 0000 ; (-16)補=1111 0000; 16位時(-16)原=1000 0000 0001 0000 ; (-16)補=1111 1111 1111 0000; (3) 8位時(+0)原=0000 0000; (+0)補=0000 0000; 16位時(+0)原=0000 0000 0000 0000; (+0)補=0000 0000 0000 0000; 3 (4) 8位時(-0)原=1000 0000 ; (-0)補=0000 0000; 16位時(-0)原=1000 0000 0000 0000; (-0)補=0000 0000 0000 0000; (5) 8位時(127)原=0111 1111; (127)補=0111 1111; 16位時(127)原=0000 0000 0111 1111; (127)補=0000 0000 0111 1111; (6) 8位時-128超過原碼表示的范圍; (-128)補=1000 0000; 16位時(-128)原=1000 0000 1000 0000; (-128)補=1111 1111 1000 0000; (7) 8位時(121)原=0111 1001 ; (121)補=0111 1001; 16位時(121)原=0000 0000 0111 1001; (121)補=0000 0000 0111 1001; (8) 8位時(-9)原=1000 1001 ; (-9)補=1111 0111; 16位時(-9)原=1000 0000 0000 1001; (-9)補=1111 1111 1111 0111; 8.實現下列轉換 2分 1)[X]原=10111110,求[X]補 2)[X]補=11110011,求[-X]補 3)[X]補=10111110,求[X]原 4)[X]補=10111110,求[X]反 答: (1) [x]補=1100 0010;(2)[-x]補=0000 1101;(3)[x]原=1100 0010;(4)[x]反=1011 1101。 9.答: (1)A>B;(2)A<B 10.答: (1)溢出;(2)13H;(3)溢出;(4)EDH;(5)EDH。 11.完成下列8位二進制數的邏輯運算 1分 1)11001100∧10101010 2)11001100∨10101010 3)1100110010101010 4)10101100∧10101100 5)10101100 10101100 6)10101100∨10101100 7)~10101100 答: (1)1000 1000;(2)1110 1110;(3)0110 0110;(4)1010 1100; (5)0000 0000;(6)1010 1100;(7)=0101 0011。 12.答: (1)30H=48,字符為‘0’;(2)39H=57,字符為‘9’;(3)42H=66,字符為‘B’; (4)62H=98,字符為‘b’;(5)20H=32,字符為空格;(6)7H=7,字符為報警符; 13、答: 十進制 49 123 7 62 壓縮BCD碼 0100 1001B 0001 0010 0011B 0000 0111B 0110 0010B 非壓縮BCD碼 0000 0100 0000 1001B 0000 0001 0000 0010 0000 0011B 0000 0111B 0000 0110 0000 0010B ASCII碼 3439H 313233H 37H 3632H 4 第3章 習題答案 1.(1)答: 物理地址:物理地址(PA)是20位無符號二進制數,是CPU訪問存儲器的實際地址。每個存儲單元對應一個物理地址。8086存儲空間的物理地址范圍是:00000H~FFFFFH。 邏輯地址:采用分段結構的存儲器中,把通過段地址和偏移地址來表示的存儲單元的地址稱為邏輯地址,記為:段地址:偏移地址。 段地址:8086規(guī)定各邏輯段從節(jié)的整數邊界開始,即段首地址二進制值的低4位是0000,把段首地址的高16位稱為段基址或段地址。 偏移地址:把某一存儲單元相對于段地址的段內偏移量稱為偏移地址(也稱有效地址EA)。段地址和偏移地址都是是16位無符號二進制數。 (2)答: 時鐘周期:計算機的“時鐘”是由振蕩源產生的、幅度和周期不變的節(jié)拍脈沖,每個脈沖周期稱為時鐘周期,又稱為T狀態(tài)或T周期,時鐘周期是微機系統工作的最小時間單元。 總線周期:當CPU訪問存儲器或輸入/輸出端口時,需要通過總線進行讀或寫操作,這個過程稱為總線周期(Bus Cycle)??偩€周期是利用總線完成一次讀/寫所需要的時間。 指令周期:執(zhí)行一條指令所需要的時間稱為指令周期(Instruction Cycle)。指令周期由1個或多個總線周期組成。 解釋下邊名詞:(3)最小模式、最大模式 1分 答: 最小模式:也稱為單處理器模式,是指系統中只有一片8086微處理器,所連接的存儲器容量不大、片子不多,所要連接的I/O端口也不多,系統的控制總線就直接由CPU的控制線供給,從而使得系統中的總線控制電路減到最少。最小模式適用于較小規(guī)模的系統。 最大模式:相對于最小模式而言,適用于中、大型規(guī)模的系統。系統中有多個微處理器,其中一個是主處理器8086,其他的處理器稱為協處理器,承擔某方面專門的工作。需要增加一片8288來對8086CPU發(fā)出的控制信號進行變換和組合,以得到對存儲器或I/O端口的讀/寫信號和對鎖存器、總線收發(fā)器的控制信號。 2.答: EU:負責指令的執(zhí)行,即從總線接口部件BIU的指令隊列取指令,指令執(zhí)行后向BIU送回運算結果,同時把運算結果的狀態(tài)特征保存到標志寄存器中。 BIU:負責CPU與存儲器、I/O設備之間的數據傳送。BIU完成以下操作:取指令送給指令隊列、配合執(zhí)行部件從指定的內存單元或者外設端口中取數據、將數據傳送給執(zhí)行部件或者把執(zhí)行部件的操作結果傳送到指定的內存單元或外設端口中。 8086的BIU和EU在很多時候可以并行工作,使得取指令、指令譯碼和執(zhí)行指令這些操作構成操作流水線。 ① 當指令隊列中有兩個空字節(jié),且EU沒有訪問存儲器和I/O接口的要求時,BIU會自動把指令取到指令隊列中。 ② 當EU準備執(zhí)行一條指令時,它會從指令隊列前部取出指令執(zhí)行。在執(zhí)行指令的過程中,如果需要訪問存儲器或者I/O設備,那么EU會向BIU發(fā)出訪問總線的請求,以完成訪問存儲器或者I/O接口的操作。如果此時BIU正好處于空閑狀態(tài),那么,會立即響應EU的總線請求;但如果BIU正在將某個指令字節(jié)取到指令隊列中,那么,BIU將首先完成這個取指令操作,然后再去響應EU發(fā)出的訪問總線的請求。 ③ 當指令隊列已滿,而且EU又沒有總線訪問時,BIU便進入空閑狀態(tài)。 5 ④ 在執(zhí)行轉移指令、調用指令和返回指令時,下面要執(zhí)行的指令就不是在程序中緊接 著的那條指令了,而BIU 往指令隊列裝入指令時,總是按順序進行的。在這種情況下,指 令隊列中已經裝入的指令就沒有用了,會被自動消除。隨后,BIU 會往指令隊列中裝入另一 個程序段中的指令。 3.答: 地址信號是CPU 發(fā)送給內存或I/O 設備的,所以地址線是單向的; 數據信號可以從CPU 發(fā)送給內存或I/O 設備,也可以從內存或I/O 設備發(fā)送給CPU, 故而數據線是雙向的。 4.答: 8086CPU 中有14 個寄存器。它們是:4 個16 位的通用寄存器:AX、BX、CX、DX 和 8 個8 位的通用寄存器:AH、AL、BH、BL、CH、CL、DH、DL;指針和變址寄存器SP、 BP、 SI、DI;4 個16 位的段寄存器CS、DS、SS 和ES;標志寄存器FR;指令指針寄存器 IP。 功能略。 5.將十六進制數5678H和以下各數相加,試求叫法運算的結果及進算后標志寄存器中6個狀態(tài)標志的值,用十六進制數表示運算結果。 2分 1)7834H 2)1234H 3)8765H 答: (1)加法運算的結果為:CEACH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=1; (2)加法運算的結果為:68ACH;CF=0,PF=1,AF=0,ZF=0,SF=0,OF=0; (3)加法運算的結果為:DDDDH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=0。 6.8086CPU可尋址的存儲器地址范圍是多少?可尋址的I/O端口地址范圍是多少?2分 答: 8086CPU 可尋址的存儲器地址范圍是00000H~FFFFFH; 可尋址的I/O 端口地址范圍是0000H~FFFFH。 7.答: 由于8086CPU 提供20 位地址,但8086 中可用來存放地址的寄存器,如IP、SP、BX、 SI 等都是16 位的,只能直接尋址64KB。為了尋址1MB 存儲空間,8086CPU 采用了典型的 存儲器分段技術,即將整個存儲器空間分為許多邏輯段,每個邏輯段的容量小于或等于64KB。 分段后,對存儲器的尋址操作不再直接用20 位的物理地址,而是采用段地址加段內偏移地 址的二級尋址方式。 8.答: 將AH的內容送存儲單元的操作過程中:M / IO =1,WR = 0,RD =1,DT / R =1; 將I/O 端口的內容送AL的操作過程中:M / IO = 0,WR =1,RD = 0,DT / R = 0。 9.答: BHE A0 有效的數據引腳 操 作 0 0 AD15~AD0(一個總線周期同時訪問奇體和偶 體,從奇地址單元讀/寫字數據的高8 位,從偶地 址單元讀/寫字數據的低8 位) 從偶地址讀/寫一個 字 6 1 0 AD7~AD0 從偶地址讀/寫一個 字節(jié) 0 1 AD15~AD8 從奇地址讀/寫一個 字節(jié) 0 1 1 0 AD15~AD8(第一個總線周期從奇字數據的低8 位) AD7~AD0(第二個總線周期從偶地址單元讀/寫 字數據的高8 位) 從奇地址讀/寫一個 字 10.簡述8086系統復位后各寄存器的狀態(tài)。 2分 答: 8086 系統復位后,指令指針(IP)為0000H;CS 寄存器為FFFFH,其他寄存器為0000H; 指令隊列清空。 11. 簡述8086系統中為什么一定要有地址鎖存器?需要所存哪些信息? 2分 答: 8086 的A19/S6~A16/S3 和AD15~AD0 是復用信號,需要地址鎖存器將地址信息保存 起來,為外接存儲器或外設提供地址信息。 需要鎖存的信號是:地址信號及BHE 信號。 12.8086CPU基本的總線周期包括幾個時鐘周期? 1分 答: 8086CPU 一個基本的總線周期包含4 個時鐘周期:T1、T2、T3 和T4 。 在T1 狀態(tài),M/ IO有效,指示CPU 訪問的是存儲器還是外設,之后CPU 往多路復用 總線上發(fā)出地址信息,以指出要尋址的存儲單元或外設端口的地址。在T1 狀態(tài),CPU 還必 須在ALE 引腳上輸出一個正脈沖作為地址鎖存信號。BHE信號也在T1 狀態(tài)送出,它用來 表示數據傳送的字寬。 在T2 狀態(tài),CPU 從總線上撤銷地址,使總線的低16 位浮空,置成高阻狀態(tài),為傳輸 數據作準備??偩€的最高4 位(A19~A16)用來輸出本總線周期的狀態(tài)信息。讀信號RD或 寫信號WR在T2 狀態(tài)變?yōu)橛行?,指示CPU 將進行哪種操作(讀或寫)。 在T3 狀態(tài),多路總線的高4 位繼續(xù)提供狀態(tài)信息,而多路總線的低16 位上出現由CPU 讀出的數據或者CPU 從存儲器或端口寫入的數據。 在T4 狀態(tài)和前一個狀態(tài)的交界處,CPU 對數據總線進行采樣,獲得數據,總線周期結 束。 13.什么情況下需要插入TW周期?應該插入多少個TW取決于什么因素? 2分 答: 在有些情況下,外設或存儲器速度較慢,不能及時地配合CPU 傳送數據。這時,外設 或存儲器會通過“READY”信號線在T3 狀態(tài)啟動之前向CPU 發(fā)一個“數據未準備好”信 號,于是CPU 會在T3 之后插入1 個或多個附加的時鐘周期TW。取決與外設或存儲器速度。 14.答: 兩種操作時序的不同之處發(fā)生在T1 和T2 狀態(tài)。 ① 在T1狀態(tài),讀周期:DT/R應輸出低電平;寫周期:DT/R應輸出高電平。 ② 在T2 狀態(tài),讀周期:RD有效,而WR無效,AD15~AD0 為高阻態(tài);寫周期:RD 變?yōu)闊o效,而寫信號WR變?yōu)橛行?,AD15~AD0 在地址撤銷之后立即送出要寫入存儲器或 外設端口的數據。 7 15.答: 在最小模式下,讀信號RD、ALE 和DT/R、DEN等信號直接由CPU 給出; 在最大模式下,總線控制器8288 根據 2 1 S ,S 和 0 S 狀態(tài)信號產生讀信號MRDC和IORC, ALE 和DT/R、DEN 也是由8288 發(fā)出的,而且DEN 信號的極性與CPU 在最小模式下發(fā) 出的DEN信號正好相反。 8 第4章 習題答案 1.什么叫尋址方式?8086CPU支持哪幾種尋址方式? 2分 答: 指令中關于如何求出操作數有效地址的方法稱為尋址方式。 8086CPU支持多種尋址方式,根據操作數的類型及來源大致分為3類:數據尋址、轉移地址尋址和I/O尋址。 2.答: 8086匯編指令可以采用7種基本的數據尋址方式:①立即尋址;②寄存器尋址;③直接尋址;④寄存器間接尋址;⑤寄存器相對尋址;⑥基址變址尋址;⑦相對基址變址尋址。 與存儲器尋址方式(后5種)相比,寄存器尋址方式最快。 3.內存尋址方式中,一般只指出操作數的偏移地址,那么,段地址如何確定?如果要用某個段寄存器指出段地址,指令中應該如何表示? 2分 答: 如果指令中沒有用前綴說明操作數存放在哪個段,則操作數默認存放在數據段。 8086系統允許操作數存放在代碼段、堆棧段或附加段。此時,就需要在指令中利用前綴指明段超越。例如: MOV ES:[1225H],AX 4.在8086系統中,設DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H,BP=0100H,VAR的偏移量為0600H,請指出下列指令的目標操作數的尋址方式,若目標操作數為存儲器操作數,請計算它們的物理地址是多少? 2分 1)MOV BX,12 2)MOV [BX],12 3)MOV ES:[SI],AX 4)MOV VAR,8 5)MOV [BX][SI],AX 6)MOV 6[BP][SI],AL 7)MOV [100H],DX 8)MOV 6[BX],CX 9)MOV VAR+5,AX 答: (1)寄存器尋址方式 (2)寄存器間接尋址方式,PA=10300H (3)寄存器間接尋址方式,PA=20200H (4)直接尋址方式,PA=10060H (5)基址變址尋址方式,PA=10500H (6)相對基址變址尋址方式,PA=12300H (7)直接尋址方式,PA=11000H (8)__________寄存器相對尋址方式,PA=10306H (9)直接尋址方式,PA=10065H 5.判斷指令對錯。如果是錯誤的,請說明原因答。 2分 1)XCHG CS,AX × 2)MOV [BX],[1000H] × 3)XCHG BX,IP × 4)PUSH CS √ 5)POP CS × 6)IN BX,DX √ 7)MOV BYTE[BX],1000 × 8)MOV CS,[1000H] × 9)MOV BX,OFFSET VAR[SI] √ 10)MOV AX,[SI][DI] × 11)MOV COUNT[BX][SI],ES:AX × 6.試述以下指令的區(qū)別。 2分 1)MOV AX,3000H 與 MOV AX,[3000H] 2)MOV AX,MEM 與 MOV AX,OFFSET MEM 3)MOV AX,MEM 與 LEA AX,MEM 4)JMP SHORT L1 與 JMP NEAR PTR L1 5)CMP DX,CX 與 SUB DX,CX 6)MOV [BP][SI],CL 與 MOV DS:[BP][SI],CL 答: (1)源操作數的尋址方式不同。MOV AX,3000H指令的源操作數采用的是立即數尋址方式,MOV AX,[3000H]指令的源操作數采用的是直接尋址方式。 (2)指令執(zhí)行后,AX的值不同。MOV AX,MEM指令執(zhí)行后,AX得到的是MEM單元的內容,而MOV AX,OFFSET MEM指令執(zhí)行后,AX得到的是MEM單元的地址。 (3)指令不同。MOV AX,MEMMOV AX,MEM指令執(zhí)行后,AX得到的是MEM單元的內容,而LEA AX,MEM指令執(zhí)行后,AX得到的是MEM單元的地址。 (4)轉移的類型不同。JMP SHORT L1指令實現的是段內轉移,而JMP NEAR PTR L1指令實現的是段間轉移。 (5)指令的執(zhí)行結果不同。CMP DX,CX指令執(zhí)行后,DX的值不變,而SUB DX,CX指令執(zhí)行后,DX的值是兩寄存器值的差。 (6)操作數所在段不同。MOV [BP][SI],CL指令訪問的是堆棧段的存儲單元,而MOV DS:[BP][SI],CL指令訪問的是數據段的存儲單元。 7.答: (1)MOV BYTE PTR [BP],200指令執(zhí)行后,(58200H)=200H (2)MOV WORD PTR [BX],2000指令執(zhí)行后,(22400H)=2000H 8.答: 當前棧頂地址是:FE00H:2010H; 執(zhí)行PUSH BX指令后,棧頂地址變?yōu)椋篎E00H:200EH,棧頂2字節(jié)內容是:3457H。 9.答: (1)(DX)=3C62H,CF=1 (2)(DX)=03C6H,CF=0 (3)(DX)=18A0H,CF=1 (4)(DX)=2BC6H,CF=0 (5)(DX)=18B7H,CF=1 (6)(DX)=BCC5H,CF=0 10.答: (AX) CF ZF OF SF PF (1) 134EH 0 0 0 0 1 (2) 0821H 0 0 0 0 1 (3) F142H 1 0 0 1 1 (4) 0A69 1 0 0 1 1 (5) F596 - - - - - (6) 0A69 0 0 0 0 1 11.設AX和BX是符號數,CX和DX是無符號數,若轉移目標指令的標號是NEXT,請分別為下列各項確定CMP和條件轉移指令。 5分 1)CX值超過DX轉移 2)AX值未超過BX轉移 3)DX為0轉移 4)CX值等于小于DX轉移 答: (1) CMP CX,DX JA NEXT (2)CMP AX,BX JNA NEXT (3)CMP DX,0 JZ NEXT (4)CMP CX,DX JBE NEXT 12.閱讀分析下列指令序列 ADD AX,BX JNO L1 JNC L2 SUB AX,BX JNC L3 JNO L4 JMP L5 若AX和BX的初值分別為以下5種情況,則執(zhí)行該指令序列后,程序將分別轉向何處(L1-L5中的哪一個)? 1)AX=14C6H, BX=80DCH 2)AX=0B568H,BX=54B7H 3)AX=42C8H, BX=608DH 4)AX=0D023H,BX=9FD0H 5)AX=9FD0H, BX=0D023H 答: (1) 程序轉向L1。 (2) 程序轉向L1。 (3) 程序轉向L2。 (4) 程序轉向L5。 (5) 程序轉向L5。 13.答: 因為普通運算指令執(zhí)行的是二進制數的運算,而BCD碼是十進制數,所以,需要對運算結果進行十進制調整。 在做BCD碼的加、減和乘法運算時,十進制調整指令放在運算指令之后;而作BCD碼的除法運算時,在運算指令之前用十進制調整指令對被除數進行調整。 14.答: MOV Cl,3 10 SHR bx,cl 15.答:(略) 16.答: 17.答: DATA SEGMENT COUNT=100H ORG 1000H D_DATA DB COUNT DUP(?) ORG 2170H S_DATA DB COUNT/5 DUP(1,2,3,4,5) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,S_DATA LEA DI,D_DATA MOV CX,COUNT REP MOVSB MOV AL,1 MOV CX,COUNT LEA DI,D_DATA AGAIN: CMP BYTE PTR [DI],AL JNZ NEXT MOV BYTE PTR [DI],' ' NEXT: INC DI LOOP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS END START 11 18. 答: 19. 答: CODE SEGMENT ASSUME CS:CODE START: MOV AX,5678H MOV DX,1234H NOT AX NOT DX ADD AX,1 ADC DX,0 EXIT: MOV AH,4CH INT 21H CODE ENDS END START ;本程序未考慮溢出的情況。 DATA SEGMENT A1 DW 5050H A2 DW ? ;存A1的反碼 A3 DW ? ;存A1的補碼 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,A1 NOT AX MOV A2,AX INC AX MOV A3,AX EXIT: MOV AH,4CH INT 21H CODE ENDS END START 12 20. 答: 21. 答: DATA SEGMENT ;AT 5000H ORG 3481H DAT DB 12H DB ?,?,? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,DAT NEG AL MOV DAT+1,AL MOV AL,DAT XOR AL,00001111B MOV DAT+2,AL MOV AL,DAT OR AL,11110000B MOV DAT+3,AL EXIT: MOV AH,4CH INT 21H CODE ENDS END START COUNT=1000 DATA SEGMENT ORG 1000H DAT DB 10 DUP (12H,-5,-3,0,-128,56H,98H,4,128,200) ORG 2000H MINDAT DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,DAT MOV CX,COUNT DEC CX MOV AL,[SI] NEXT: INC SI CMP AL,[SI] JLE ISMIN MOV AL,[SI] ISMIN: LOOP NEXT MOV MINDAT,AL EXIT: MOV AH,4CH INT 21H CODE ENDS END START 13 22. 答: DATA SEGMENT STRING1 DB 'hELLO!' COUNT1=$-STRING1 STRING2 DB 'hEL1O!' COUNT2=$-STRING2 IM DB 'MATCH$' NM DB 'NOT MATCH$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,STRING1 LEA DI,STRING2 MOV CX,COUNT1 MOV BX,COUNT2 CMP CX,BX JNZ DISPNOTMATCH NEXT: MOV AL,[SI] MOV AH,[DI] CMP AL,AH JNZ DISPNOTMATCH INC SI INC DI LOOP NEXT ISMATCH: MOV DX,OFFSET IM MOV AH,9 INT 21H JMP EXIT DISPNOTMATCH: MOV DX,OFFSET NM MOV AH,9 INT 21H EXIT: MOV AH,4CH INT 21H CODE ENDS END START 14 23. 答: 24. 答: DSEG SEGMENT DATA DB 5,6,7,8 DW ? DATA2 DB 1,10,100,20 DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOV DX,0 MOV CX,4 LEA SI,DATA LEA DI,DATA2 NEXT: MOV AL,[DI] MOV BL,[SI] CALL DOMUL ADD DX,AX INC DI INC SI LOOP NEXT MOV WORD PTR DATA+4,DX EXIT: MOV AH,4CH INT 21H DOMUL PROC MUL BL RET DOMUL ENDP CODE ENDS END START MOV CX,100 MOV AX,SEG LIST MOV DS,AX MOV AX,SEG BLK MOV ES,AX LEA SI,LIST ADD SI,CX LEA DI,BLK ADD DI,CX STD REP MOVSB 15 25. 答: JMP SHORT LAB指令是一條雙字節(jié)指令。這條指令取出后,(IP)=0102H,轉移目標的偏移地址=(IP)+位移量。所以,轉移目標的物理地址=(CS)╳16+(IP)+位移量。 (1)轉移目標的物理地址=(CS)╳16+0158H (2)轉移目標的物理地址=(CS)╳16+0182H (3)轉移目標的物理地址=(CS)╳16+017AH (4)轉移目標的物理地址=(CS)╳16+01E2H 26. 答: DSEG SEGMENT BUFFER DW 8 DB '12345678' DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOV CX,BUFFER SAR CX,1 LEA SI,BUFFER MOV DI,SI ADD DI,2 AGAIN: ADD SI,2 MOV AL,[SI] AND AL,0FH SAL BYTE PTR [SI+1],1 SAL BYTE PTR [SI+1],1 SAL BYTE PTR [SI+1],1 SAL BYTE PTR [SI+1],1 OR AL,BYTE PTR [SI+1] MOV [DI],AL INC DI LOOP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS END START DSEG SEGMENT ORG 10H DAT DB 10 DB ? DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOV AL,DAT MOV BL,AL SAL BL,1 ADD AL,BL MOV CL,2 SAL BL,CL ADD AL,BL MOV DAT+1,AL EXIT: MOV AH,4CH INT 21H CODE ENDS END START 16 27. 答: 28. 答: 29. 答: DSEG SEGMENT ORG 10H DAT DB 10H,20H DB ?,? DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOV AL,DAT MOV AH,DAT+1 MOV CL,3 SAR AX,CL MOV DAT+2,AL MOV DAT+3,AH EXIT: MOV AH,4CH INT 21H CODE ENDS END START DSEG SEGMENT BLOCK DW 8 DUP (10H,20H,-3,-9) DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX LEA SI,BLOCK MOV CX,32 AGAIN: MOV AX,[SI] CMP AX,0 JNS NEXT NEG AX MOV [SI],AX NEXT: INC SI INC SI LOOP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS END START 17 DSEG SEGMENT ORG 3030H DAT DW 1234H,-1234H,?,? DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOV AX,DAT MOV BX,DAT+2 IMUL BX MOV DAT+4,AX MOV DAT+6,DX EXIT: MOV AH,4CH INT 21H CODE ENDS END START 18 第5章 習題答案 1. 答: 標號是指令的符號地址,可用作控制轉移指令的操作數。 標號具有3種屬性:段屬性、偏移屬性和類型屬性。 2. 答: 變量是存儲單元的符號地址。 變量具有3種屬性:段屬性、偏移屬性和類型屬性。 3. 答: 偽指令語句,也稱指示性語句,是不可執(zhí)行語句,匯編后不產生目標代碼,它僅僅在匯編過程中告訴匯編程序如何匯編源程序。 宏是一個以宏名定義的指令序列。一旦把某程序段定義成宏,則可以用宏名代替那段程序。在匯編時,要對宏進行宏展開,即把以宏名表示的地方替換為該宏對應的指令序列的目標代碼。宏指令可以看成指令語句的擴展,相當于多條指令語句的集合。 4. 答: 匯編語言表達式中有如下運算符:算術操作符、邏輯操作符、移位操作符、關系操作符、數值回送操作符和屬性操作符。 操作符所完成的運算在匯編階段進行。 5. 答: 略。 6. 按下列要求,寫出各數據定義語句 2分 1)DB1為10H個重復的字節(jié)數據序列:1,2,5個3,4。 2)DB2為字符串’STUDENTS’。 3)DB3為十六進制數序列:12H,ABCDH。 4)用等值語言給符號COUNT賦值DB1數據區(qū)所占字節(jié)數,該語句寫在最后。答: (1)DB1 DB 10H DUP(1,2, 5 DUP(3),4) (2)DB2 DB 'STUDENT' (3)BD3 DW 12H,0ABCDH (4)COUNT EQU DB2-DB1 7. 答: 第一個OR表示該指令是OR指令,在程序運行時,該OR操作被執(zhí)行。 第二個OR是邏輯操作符OR,在匯編時,OR運算被執(zhí)行。 8.對于下面的數據定義,各條MOV指令單獨執(zhí)行后,有關寄存器的內容是什么? 4分 PREP DB ? TABA DW 5 DUP(?) TABB DB ‘NEXT’ TABC DD 12345678H 1)MOV AX,TYPE PREP 2)MOV AX,TYPE TABA 3)MOV CX,LENGTH TABA 4)MOV DX,SIZE TABA 5)MOV CX,LENGTH TABB 6)MOV DX,SIZE TABC 答: (1)(AX)=1 (2)(AX)=2 (3)(CX)=5 (4)(DX)=0AH (5)(CX)=1 (6)(DX)=4 9.設數據段DSEG中符號及數據定義如下,試畫出數據在內存中的存儲示意圖。4分 DSEG SEGMENT DSP=100 SAM=DSP+20 DAB DB ‘/GOTO/’,0DH,0AH DBB DB 101B,19,’a’ .RADIX 16 CCB DB 10 DUP(?) EVEN DDW DW ‘12’,100D,333,SAM .RADIX 10 EDW DW 100 LEN EQU $-DAB DSEG ENDS 答:略。 10. 答: 19 11. 答: 12. 答: DSEG SEGMENT STRING DB 'NEXT123DF$' DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX LEA SI,STRING MOV CX,0 AGAIN: MOV AL,[SI] CMP AL,'$' JZ NEXT INC CX INC SI JMP AGAIN NEXT: MOV DX,CX MVDAT: MOV [SI]+2,AL DEC SI MOV AL,[SI] LOOP MVDAT MOV [SI]+2,AL MOV WORD PTR [SI],DX EXIT: MOV AH,4CH INT 21H CODE ENDS END START DSEG SEGMENT STRING DB 'It is FEB&03' COUNT=$-STRING DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX LEA SI,STRING MOV CX,COUNT AGAIN: MOV AL,[SI] CMP AL,'&' JNZ NEXT MOV AL,' ' MOV [SI],AL NEXT: INC SI LOOP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS END START DSEG SEGMENT BLOCK DB 4,5,-2,7,8,9,2,1,0AH,1BH,87H,23H,44H,33H,45H,28H,0DH,8EH,66H,22H COUNT=$-BLOCK DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX 20 13. 答: (3) (4)(2) (5)(1) (6) 1B50H 1000H 1A70H 150BH 上表左側的序號,表示對應操作完成后SP指向的棧頂的位置。 14.設計以下子程序: 1)將AX中的4位BCD碼轉換為二進制碼,放在AX中返回。 2)將AX中無符號二進制數(<9999D)轉換為4位BCD碼串,放在AX中返回。 3)將AX中有符號二進制數轉換為十進制數ASCII碼字符串,DX和CX返回串的偏移地址和長度。(4分)答: SUB1 PROC MOV BX,AX MOV CL,4 ROL BX,CL MOV AX,BX AND AX,000FH MOV CX,1000 MUL CX ;千位在DX,AX,有效值在AX中 PUSH AX MOV CL,4 ROL BX,CL MOV AX,BX AND AL,0FH MOV CL,100 MUL CL ;百位在AX POP CX ADD AX,CX ;千百位在AX PUSH AX MOV CL,4 ROL BX,CL MOV AX,BX AND AL,0FH MOV CL,10 MUL CL ;十位在AX POP CX ADD AX,CX ;千百十位在AX MOV CL,4 ROL BX,CL AND BX,0FH ADD AX,BX RET SUB1 ENDP SUB2 PROC MOV DX,0 MOV CX,1000 DIV CX ;千位數字在AX中 MOV BX,AX MOV CL,4 ROR BX,CL ;千位數字移至BX的高4位 MOV AX,DX MOV CL,100 DIV CL ;百位數字在AL中 OR BH,AL ;千百位置BH MOV AL,AH MOV AH,0 MOV CL,10 DIV CL ;十位數字在AL中,個位在AH中 MOV CL,4 SAL AL,CL MOV BL,AL ;十位數字置BL高4位 OR BL,AH ;十位個位置BL MOV AX,BX RET SUB2 ENDP SUB3 PROC PUSH BX MOV BX,0 LEA DI,ASCNUM CMP AX,0 JNS CHG NEG AX MOV BYTE PTR [DI],'-' JMP NEXT CHG: N5: MOV AL,AH MOV AH,0 MOV CL,10 DIV CL CMP BX,0 JNZ N6 CMP AL,0 JZ N7 MOV BX,2 15. 答: 16. 答: 17. 答:略。 18. 答:略。 CODE SEGMENT ASSUME CS:CODE START: MOV AH,1 INT 21H CMP AL,'a' JB NOCHG CMP AL,'z' JA NOCHG SUB AL,20H NOCHG: MOV DL,AL MOV AH,2 INT 21H EXIT: MOV AH,4CH INT 21H CODE ENDS END START ;鍵盤輸入的成績以逗號分割 ;輸入完畢按回車結束 DSEG SEGMENT STRING DB 40,?,40 DUP(?) CJ DB 10 DUP(?) S6 DB ? S7 DB ? S8 DB ? S9 DB ? S10 DB ? DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX LEA DX,STRING MOV AH,10 INT 21H LEA DI,CJ LEA SI,STRING+2 MOV BH,0 MOV AL,0 AGAIN: MOV BL,[SI] CMP BL,',' JZ NEXT CMP BL,0DH JZ NEXT SUB BL,30H MOV CL,10 MUL CL ADD AL,BL INC SI JMP AGAIN NEXT: MOV [DI],AL INC DI MOV AL,0 INC BH INC SI CMP BL,0DH JNZ AGAIN TJ: LEA DI,CJ TJ1: MOV AL,[DI] CMP AL,100 JZ ADDS10 CMP AL,90 JAE ADDS9 CMP AL,80 JAE ADDS8 CMP AL,70 JAE ADDS7 CMP AL,60 JAE ADDS6 ADDS10: INC S10 JMP TJNEXT ADDS9: INC S9 JMP TJNEXT ADDS8: INC S8 JMP TJNEXT ADDS7: INC S7 JMP TJNEXT ADDS6: INC S6 TJNEXT: INC DI DEC BH JNZ TJ1 EXIT: MOV AH,4CH INT 21H CODE ENDS END START 24 19. 答: 20. 答: 21. 答: 22. 答: MOV BX,X CMP BX,Y JG SET1 JZ SET0 MOV AL,-1 JMP EXIT SET1: MOV AL,1 JMP EXIT SET0: MOV AL,0 EXIT: … LEA SI,STR1 LEA DI,STR2 MOV CX,COUNT NEXT: MOV BX,[SI] CMP BX,[DI] JNZ NOEQ INC SI INC DI LOOP NEXT MOV AX,0FFFFH JMP EXIT NOEQ: MOV AX,SI EXIT: … DATA SEGMENT LINTAB DW 12,-5,33,21,9 COUNT DW ($-LINTAB)/2 KEYBUF DW 21 ADDR DW ? DATA ENDS CODE SEGMENT- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 微機原理與接口技術 顧暉 習題參考答案 微機 原理 接口 技術 習題 參考答案
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://www.hcyjhs8.com/p-1556766.html