assembly - 我在读取 ext2 文件系统的超级块结构时遇到问题。为什么我的代码读取 log2(block_size) 字段的错误值?
问题描述
我尝试为 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
我做错了什么?
解决方案
解决方案:问题是我忘记了我的 DS 注册。我将 org 指令更改为 org 0x7c00 并将段寄存器设置为 0x0
推荐阅读
- opencv - 在 Unity 中获得正确的位置
- python - 如何将字典的字符串值转换为布尔值?
- dafny - 在 Dafny 中用另一张地图更新地图
- ios - Xcode 10 - 构建项目失败
- angular - combineLatest 不会因为 behaviorSubject 而触发吗?
- c# - 带有 asp-route 参数的 cshtml 帖子
- android - 如何创建类似于 Google Play 电影部分的横向布局?
- angular - Ionic 在哪里为 app.html 中定义的按钮定义函数
- java - 仅用于目录路径的 URI?
- php - 从 s3 存储桶 php 中删除包含文件的文件夹