1

我尝试为 ext2 格式化驱动器编写引导加载程序。我将超级块加载到 0x7e00。然后我通过读取第 24 个字节来确定块大小。我用这个值向左移动了 1024。但是 cl 寄存器包含错误的值。

内存转储(在 0x7e00 + 24 为 4 个字节):

24>: 0x02 0x00 0x00 0x00
Shifted value: 0x400 (eax)
cl: 0x00

我的代码:

mov     eax, 1024
mov     cl, byte [0x7e00 + 24]
shl     eax, cl
mov     [BLOCK_SIZE], eax

我做错了什么?

4

1 回答 1

2

解决方案:问题是我忘记了我的 DS 注册。我将 org 指令更改为 org 0x7c00 并将段寄存器设置为 0x0

于 2020-06-25T14:33:12.247 回答