GetFATEntry:
push es
push bx
push ax
mov ax, BaseOfLoader
sub ax, 0100h ; 在 BaseOfLoader 后面留出 4K 空间用于存放 FAT
mov es, ax
pop ax
mov byte [bOdd], 0
mov bx, 3
mul bx
mov bx, 2
div bx
cmp dx, 0
jz LABEL_EVEN
mov byte [bOdd], 1
LABEL_EVEN: ; 偶数
; 现在 ax 中是 FATEntry 在 FAT 中的偏移量, 下面来
; 计算 FATEntry 在哪个扇区中(FAT占用不止一个扇区)
xor dx, dx
mov bx, [BPB_BytsPerSec]
; debug到, 若是执行下面一句, 就会出错, 不知道错哪里的,
; 似乎和我生成的a.img有关, 我看过0x200, 发现如下:
; 0000200: 00 00 00 [color=darkred]00 F0 FF 00 [/color]00 00 00 00 00 00 00 00 00 ................
; 0000210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
; 0x2600内容如下:
; 0002600: 41 6C 00 6F 00 61 00 64 00 65 00 0F 00 AB 72 00 Al.o.a.d.e....r.
; 0002610: 2E 00 62 00 69 00 6E 00 00 00 00 00 FF FF FF FF ..b.i.n.........
; 0002620: 4C 4F 41 44 45 52 20 20 42 49 4E 20 00 64 5A 92 LOADER BIN .dZ.
; 0002630: 51 3B 50 3B 00 00 5A 92 51 3B [color=red]03 00[/color] 10 00 00 00 Q;P;..Z.Q;......
; 0002640: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
div bx ; dx:ax / BPB_BytsPerSec
; ax <- 商 (FATEntry 所在的扇区相对于 FAT 的扇区号)
; dx <- 余数 (FATEntry 在扇区内的偏移)。
有哪位朋友能帮忙看下, 给出个解决方法?
push es
push bx
push ax
mov ax, BaseOfLoader
sub ax, 0100h ; 在 BaseOfLoader 后面留出 4K 空间用于存放 FAT
mov es, ax
pop ax
mov byte [bOdd], 0
mov bx, 3
mul bx
mov bx, 2
div bx
cmp dx, 0
jz LABEL_EVEN
mov byte [bOdd], 1
LABEL_EVEN: ; 偶数
; 现在 ax 中是 FATEntry 在 FAT 中的偏移量, 下面来
; 计算 FATEntry 在哪个扇区中(FAT占用不止一个扇区)
xor dx, dx
mov bx, [BPB_BytsPerSec]
; debug到, 若是执行下面一句, 就会出错, 不知道错哪里的,
; 似乎和我生成的a.img有关, 我看过0x200, 发现如下:
; 0000200: 00 00 00 [color=darkred]00 F0 FF 00 [/color]00 00 00 00 00 00 00 00 00 ................
; 0000210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
; 0x2600内容如下:
; 0002600: 41 6C 00 6F 00 61 00 64 00 65 00 0F 00 AB 72 00 Al.o.a.d.e....r.
; 0002610: 2E 00 62 00 69 00 6E 00 00 00 00 00 FF FF FF FF ..b.i.n.........
; 0002620: 4C 4F 41 44 45 52 20 20 42 49 4E 20 00 64 5A 92 LOADER BIN .dZ.
; 0002630: 51 3B 50 3B 00 00 5A 92 51 3B [color=red]03 00[/color] 10 00 00 00 Q;P;..Z.Q;......
; 0002640: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
div bx ; dx:ax / BPB_BytsPerSec
; ax <- 商 (FATEntry 所在的扇区相对于 FAT 的扇区号)
; dx <- 余数 (FATEntry 在扇区内的偏移)。
有哪位朋友能帮忙看下, 给出个解决方法?