1. 程式人生 > >《x86匯編語言:從實模式到保護模式》檢測點和習題答案

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

style 出現 x86匯編 內存操作 3.1 fff 地址 blog strong

檢測點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,由於該地址在棧段的最低端地址以下,所以是不能壓入一個雙字的。

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