六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 38|回复: 0

Orange's OS 执行到 GetFATEntry 出错

[复制链接]

升级  50%

5

主题

5

主题

5

主题

童生

Rank: 1

积分
25
 楼主| 发表于 2013-1-28 19:18:43 | 显示全部楼层 |阅读模式
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 00 F0 FF 00 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 03 00 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 在扇区内的偏移)。

      有哪位朋友能帮忙看下, 给出个解决方法?
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表