微機原理與接口技術課后習題答案清華大學
微機原理與接口技術課后部分習題參考答案 第一章 2. 第 3項任務,根據狀態標志位的狀態決定轉移方向。 3. 程序存儲是將要執行的程序的全部指令存儲到存儲器中,程序控制指程序開始執行后,通過指令流控 制數據或計算機,完成設定的任務。 4. 分 BIU 總線接口部件和 EI 執行部件兩大部件,其中總線接口部件 BIU 負責取指令和數據,執行部件 EI 負責執行指令及運算。在執行一條指令的同時可以取下一條指令,重疊運行,速度快。 5. 有 6個狀態標志,分別為進位標志 CF、溢出標志 OF、零標志 ZF、奇偶標志 PF、負標志 SF、輔助進 位標志 AF。3 個控制標志分別為中斷允許標志 IF、單步標志 TF、方向標志 DF。 標志位的內容可以通過標志位操作指令來操作,例如 CLC 指令清除進位位,即使 CF=0,STC 指令使 CF=1,CLI 指令使 IF=0,禁止中斷,STI 指令使 IF=1,允許中斷。還可以通過 LAHF 指令取來標識寄存 器的內容修改后用 SAHF 指令送回去。也可以用 PUSHF/POPF 指令來修改標志寄存器的內容。 6. 實模式下分段靠 4個段寄存器實現。段寄存器中的值就是段地址,當偏移地址為 0時的段地址+偏移地 址就是該段的起始地址。 物理地址是由段地址左移 4位后與偏移地址相加形成的 20位地址。 7. 說法不一定正確。對順序執行指令的計算機是對的。對重疊或流水線的計算機就不對了。 例如對 8086CPU,由于采用了取指令與執行指令的一次重疊,盡管執行一條指令的總時間并沒有變化, 但連續執行 n 條指令時,總的時間會大大縮短,可以簡單的比喻成總時間為原時間的二分之一,快了一倍。 8. 引入流水線后,執行一條指令的總時間并沒有變化。 9. 高速緩存的目的是提高存儲器的速度,進而提高了 CPU 的速度。虛擬存儲器的目的是為了給程序員或 程序一個大的存儲或運行空間。 10。8086采用總線接口部件 BIU 與執行部件 EU 分開提高了速度,286將 8086的 BIU 進一步分成 3個部 件,提高了并行性。386在 286基礎上進一步增加成 6個邏輯部件,實現多條指令重疊,進一步提高了速 度,486采用硬組合邏輯控制器,同時采用內嵌高速緩存,提高速度。Pentium 采用多流水技術,指令 cache 數據 cache 技術提高速度。都采用擴展地址線數量來擴大容量。 第二章 1. (1)1000:0--1000:FFFFH, 即 10000H--1FFFFH.(2)12340--2233FH(3)略(4)略。 2. (1) 邏輯 1000H:2000H,物理 12000H. (2)略(3)略(4)略。 3. DS 可以與 BX,SI,DI 等組合, ES 可以與 BX,SI,DI 等組合,串指令約定與 DI 組合。 CS 只與 IP 組 合, SS 一般只與 SP 組合,也可以與 BP 組合。 4. 便于程序運行空間保護,便于兼容早期的微處理器。 5. 盡管保護模式下的尋址系統有些復雜,但從用戶的角度來說,沒有什么不同。 6. 描述符包括基地址、界限、訪問權限等信息。 7. 頁表要映射到 20位的物理地址中。 8. 段被訪問時,置 1,用于統計該段被訪次數。這兩個 A 位服務的對象不一樣,不多余。 第三章 129頁 1. 無符號分離式 BCD 碼。0011表示 3, 后面的 4位可以是 0-9,可以表示 ASCII 碼 0-9。 2. 由程序或程序員來定義。數據在計算機中都是用代碼來表示的,一個數據(例如 00110101)的意義是 程序員自己掌握的,程序員把它當做一個字符,就是數字 5的 ASCII 碼。如果說他是一個無符號數,就 是代表十進制數 53,如果說是組合式 BCD 碼,就代表十進制數 35。 3. 段定義,包括數據段,堆棧段,代碼段等。數據及變量定義,約定段寄存器與段名的映射,代碼段開 始,代碼段編程,代碼段結束,匯編程序結束等。4. 操作符由控制器譯碼器解釋執行,偽操作符由匯編程序(翻譯程序)解釋執行。 5. 轉移指令后的標號是偏移地址。只有當應用該標號的轉移指令位置確定后,在該指令地址正負 128范 圍內的標號是短轉移,類型是字節,在 16位二進制數之內是段內的字類型,超出 16位二進制數之外的是 段間轉移,是雙字類型。 6. (1) DB 20, 20 DUP (0) (2 ) DB “The course is easy ”, 0 (3) DB “hello…. !!!!!”, 0dh,0ah,” $” (4) DW 100 DUP (0) 11. 數據定義語句表示,16進制書寫。尋址方式包括立即數、直接、間接尋址等多種。邏輯地址。 12. 指令格式包括操作碼、操作數(或地址)兩部分, 這里的操作數不一定就是要處理的那個數據,也 可以是那個數據的地址或寄存器等,是找到那個數的尋址方式。而參加操作的數據就是指具體的數據。 13. 判斷操作數的尋址方式是否正確?說明原因。 ? (1)[ AX] ;例如MOV BL, [ AX] ;錯,AX不是地址寄存器 ? (2)BP ;例如 MOV AX , BP; 正確, 寄存器尋址 ? (3)[SI+DI] ;例如 MOV AL , [SI+DI] 錯,不能有2個變址寄存器 ? (4)[SP] ;例如 MOV AL , [SP], 錯,不能用堆棧指針,堆棧指針只能由堆棧指令操作 ? (5)CS ;例如 MOV AX ,CS; 正確, 寄存器尋址 ? (6)BH ;例如 MOV AL ,BH; 正確, 寄存器尋址 ? (7)[BX+BP+32] ;例如 MOV AL , [BX+BP+32]; 錯,不能有2個基地址寄存器 ? (8)[BL+44] ; 例如 MOV AL , [BL+44]; 錯,BL不是完整的地址寄存器 ? (9)[CX+90] ;例如 MOV AL , [CX+90]; 錯,CX不是地址寄存器 ? (10)[DX] ;例如 MOV AL , [DX]; 錯,DX不是地址寄存器 ? (11)BX+90H ;例如 MOV AX , BX+90H; 錯,不能加 ? (12)[BX*4] ; 例如 MOV AL , [BX*4] ;錯,不能乘 ? (13)SI[100H] ;例如MOV AX ,SI[100H]; 正確,相對變址尋址,但寫法不好,最好是MOV AX , [SI+100H], MOV AX , 100[SI] ? (14)[DX+90H] ;例如 MOV AX , [DX+90H]; 錯,DX 不是地址寄存器 14題 ? 假定 DS=2000H ? ES=2100H ? SS=1500H ? SI=00A0H ? BX=0100H ? BP=0010H ? 數據變量wVald的偏移地址為0050H ? 指出下列指令源操作數的尋址方式? ? (1)MOV AX, 0