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 在扇区内的偏移)。
有哪位朋友能帮忙看下, 给出个解决方法?
分享到:
相关推荐
all of the orange's os source code
Orange S:一个操作系统的实现(PDF+光盘).part1.rar Orange S:一个操作系统的实现(PDF+光盘).part2.rar Orange S:一个操作系统的实现(PDF+光盘).part3.rar Orange S:一个操作系统的实现(PDF+光盘)....
ORANGE’S:一个操作系统的实现.pdf
ORANGE'S:一个操作系统的实现 文字版 很清晰
笔记_Orange_S一个操作系统的实现
Orange S:一个操作系统的实现(PDF+光盘).part1.rar Orange S:一个操作系统的实现(PDF+光盘).part2.rar Orange S:一个操作系统的实现(PDF+光盘).part3.rar Orange S:一个操作系统的实现(PDF+光盘)....
Orange S:一个操作系统的实现(PDF+光盘).part1.rar Orange S:一个操作系统的实现(PDF+光盘).part2.rar Orange S:一个操作系统的实现(PDF+光盘).part3.rar Orange S:一个操作系统的实现(PDF+光盘)....
Orange'S一个操作系统的实现(源码).zip .
但是于渊的这本《orange's:一个操作系统的实现》却是一条难得的终南捷径。因为要理解如何让一个芯片正常工作,最简单的办法就是从头开始去写程序让它运行起来,然后操作它做自己想做的事情。如果是平时的编程,这些...
Orange'S:一个操作系统的实现
ORANGE'S:一个操作系统的实现--电子书以及源码,于渊著。欢迎大家一起讨论。
从只有二十行的引导扇区代码出发,一步一步地向读者呈现一个操作系统框架的完成过程。书中不仅关注代码本身,同时关注完成这些代码的思路和过程。本书不同于其他的理论型书籍,而是提供给读者一个动手实践的路线图。...
Orange_'s.一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上 用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >>...
《Orange S:一个操作系统的实现》从只有二十行的引导扇区代码出发,一步一步地向读者呈现一个操作系统框架的完成过程。书中不仅关注代码本身,同时关注完成这些代码的思路和过程。本书不同于其他的理论型书籍,而是...
Orange_'s.一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷到linux机器上 用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> ...
ORANGE’S:一个操作系统的实现(高清晰版).pdf .
Orange_'s.一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷 到linux机器上用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> ...
Orange_'s.一个操作系统的实现.pdf教程,不是源码。 文件是143M,而我只有15M上传权限,在windows下一时没找到切割工具,于是拷到linux机器上 用split切割成每个14.5M大小的文件。全部下下来后,用$cat Orange* >> ...
Orange'S 一个操作系统的实现《自己动手写操作系统》第2版的源代码
ORANGE’S:一个操作系统的实现 《Orange S:一个操作系统的实现》从只有二十行的引导扇区代码出发,一步一步地向读者呈现一个操作系统框架的完成过程。书中不仅关注代码本身,同时关注完成这些代码的思路和过程。...