0%

OS写作1

读取硬盘

因为我们只能在 512 bytes 下操作,但是操作系统一般会大于这个,所以 16 bits 的话可以编的地址是 0xffff,可以索引 64 kb。会将内存分为 segment,cs, ds, ss, and es, called segment registers,记录偏移值,seg 的起始地址。比如 mov ax, [0x45ef] ,data 由 ds,data segment 加偏移,大概是 org?stack base reg, bp,ss stack segment 记录。

segment 几乎完全重叠,只偏移 16 bytes。

如何偏移?

segment *16 + 数值,因为是16进制所以直接左挪移一位

比如 dx = 0x4d, mov ax, [0x20] 则实际读取 0x4d0 + 0x20

但是不能将地址给 special propose reg 传入

What are the CPU general purpose registers?

在加上 seg 的份上,我们可以访问 1M 以上的地址了 (0xffff * 16 + 0xffff)

读取硬盘

现在使用 HDD,Cylinder-Head-Sector (CHS) 用来描述目前访问对象

柱面-磁头-扇区 - 维基百科,自由的百科全书

cylinder 是距离 outside 的距离,sector通常 512 bytes 现在,head 描述目前在哪个 track

算了我想偷懒一下,我觉得我看懂了……先往下写罢,不过大概率我要滚回来补课

逃课一时爽,神居火葬场。