Orange's OS 执行到 GetFATEntry 出错

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 在扇区内的偏移)。

有哪位朋友能帮忙看下, 给出个解决方法?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值