`
zhangying871108
  • 浏览: 6015 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
社区版块
存档分类
最新评论

Orange's OS 执行到 GetFATEntry 出错

OS 
阅读更多
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 在扇区内的偏移)。

      有哪位朋友能帮忙看下, 给出个解决方法?
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics