《x86匯編語言:從實模式到保護模式》檢測點和習題答案


檢測點1.1:按順序分別為:13  15  78  255  128  56091

檢測點1.2:按順序分別為:1000  1010  1100  1111  11001  1000000  1100100  11111111  1111101000  1111111111111111  100000000000000000000

檢測點1.3:按順序分別為:8  10  11  12  13  14  15  16  31  1741  1022  4092  65535

檢測點1.4:按順序分別為:8  a  c  f  19  40  64  ff  3e8  ffff  100000

檢測點1.5:1.按順序分別為:11  1010  1100  1111  100000  111111  1011111110  1111111111111111  100111111100000001011101  1111100110011111111111011111111

                   2.按順序分別為:1/1  11/3  0101/5  111/7  1001/9  1011/A  1101/D  1111/F  0/0  10/2  100/4  110/6  1000/8  1100/C  1110/E

檢測點1.6:1.4092/111111111100    2.27B6100/10011110110110000100000000

第1章習題:1.5  C  =15D=1111B  =12D=1100B  =10D=1010B  =8H=1000B  =11D=1011B  =14D=1110B  =16D=10000B  2.12  10101 10001111  1000000000 1FF

 

檢測點2.1:1.(2)  (16)  (4)  (32)  2. (7)  (8)  最高位 3. (00)  (0F)  (8)  (00、02、04、06、08、0A、0C、0E)  雙字時,是00、04、08、0C

檢測點2.2:A3D8H

檢測點2.3:1.8  (AX BX CX DX SI DI BP SP)  (AH AL BH BL CH CL DH DL)  2.(A)  (C)  (D  F)  3.(A B C D F)

第2章習題:1.  64個   2. 25BC0H~35BBFH

 

檢測點3.1:1.(略)    2. (B)  (A)  (C)

第3章習題:1.  00H、35H、40H   2. 49H(即73個字節)

 

檢測點4.1:1.(0)  (0)  (1)  (0)  (0)  (1)  2. (A B C)  

檢測點4.2:1.(略)   2. (略)  3.應在屏幕克上角顯示a、s、m三個字母

 

檢測點5.1:1.(0xB8000)  (0xB800)  (0xF9E)  (0x27)  (0x48) 2. (E F G H J L)  A錯誤的原因是企圖向8位寄存器傳送16位字; B錯誤的原因是向段寄存器傳送立即數; C錯誤的原因是通過8位寄存器AL向段寄存器傳送; D錯誤的原因是未指示內存操作數的長度; I錯誤的原因是兩個寄存器不匹配; K錯誤的原因是在兩個內存單元之間傳送。

檢測點5.2:db一行不該出現0xf000

 

檢測點6.3:0xf0  0xff  0x81  0xffff  0x8a08

檢測點6.4:

1:

   當ZF=(1),時,表明計算結果為零;    jz指令的意思是當ZF=(1)時,即計算結果為0時轉移;    je指令的意思是當ZF=(1)時,即計算結果為0時轉移;    jnz指令的意思是當ZF=(0)時,即計算結果不為(0)時轉移;    jne指令的意思是當ZF=(0)時,即計算結果不為(0)時轉移; 2:

  cmp ax,bx

  ja  lbb

  je  lbz

  jb  lbl

第1章習題:

 

檢測點12.2:  當前棧段描述符的B位是1,基地址為0x00700000,界限值為0xFFFFE。那么,在32位模式下,該棧段的有效地址范圍是0x00700000~(        )。當ESP的內容為0XFFFFF002時,還能壓入一個雙字嗎?為什么? 如書中所說,當棧段描述符的B位為1時,段界限是以4KB位單位的,因此,此時實際使用的段界限值是0xFFFFE*0x1000+0xFFF=0xFFFFEFFF,再根據

實際使用的段界限+1≤( ESP 的內容-操作數的長度)≤0xFFFFFFFF

可以得到ESP的范圍為0xFFFFEFFF+1<=ESP<=0xFFFFFFFF,即0XFFFFF000<=ESP<=0XFFFFFFFF,用題目中所給出的棧段基地址0x007C0000加上ESP所允許的最小和最大偏移量,即可得棧段的最低端地址是0x007C0000+0xFFFFF000=0x007BF000,最高端地址為0x007C0000+0xFFFFFFFF=0x007BFFFF,即題目中的棧段有效地址范圍為0x007BF000~0x007BFFFF。當ESP的內容為0XFFFFF002時,對應的物理地址為0x007C0000+0xFFFFF002=0x007BF002,壓入一個雙字時,ESP-4=0xFFFFF002-4=0XFFFFEFFE,對應的物理地址為0x007C0000+0xFFFFEFFE=0x007BEFFE,由於該地址在棧段的最低端地址以下,所以是不能壓入一個雙字的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM