gpt4 book ai didi

assembly - 自定义引导加载程序问题

转载 作者:行者123 更新时间:2023-12-02 19:29:56 25 4
gpt4 key购买 nike

我正在尝试为 Hobby OS 编写一个引导加载程序,并让它运行良好。没什么特别的,只是打印一行文本:

BITS 16
ORG 0

start: jmp main


OEM db "Test OS "
BytesPerSector: DW 512
SectorsPerCluster: DB 1
ReservedSectors: DW 1
NumberOfFATs: DB 2
RootEntries: DW 224
TotalSectors: DW 2880
Media: DB 0xf8
SectorsPerFAT: DW 9
SectorsPerTrack: DW 18
HeadsPerCylinder: DW 2
HiddenSectors: DD 0
TotalSectorsBig: DD 0
DriveNumber: DB 0
Unused: DB 0
ExtBootSignature: DB 0x29
SerialNumber: DD 0xa0a1a2a3
VolumeLabel: DB "HOBBY OS "
FileSystem: DB "FAT12 "



main:
;Adjust code Seg.
cli
mov ax, 0x07c0
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
;Set up Stack
mov ax, 0x0000
mov ss, ax
mov sp, 0xFFFF
sti

mov si, msg
call print

print:

.charLoop:

lodsb
or al,al
jz .done
mov ah, 0x0E
int 0x10
.done
ret

msg db "Hello World",13,10,0

我正在编译

nasm -f bin loader.asm -o loader.bin
dd if=loader.bin of=floppy.img bs=512 count=1 seek=0

我读到前 446 字节是引导代码,字节 447 - 509 是分区表。我尝试然后使用:

dd if=loader.bin of=floppy.img bs=446 count=1 seek=0

尝试防止分区表被覆盖但还是没有雪茄。

我使用装有 OSX 的 Mac 并使用 VirtualBox 测试操作系统

我可以在 VBox 中运行 floppy.img 并且代码工作正常,但是当我尝试将引导加载程序安装到 FAT 16 格式化磁盘上时,OSX 似乎无法再读取磁盘镜像,就好像它未格式化一样。

磁盘实用程序发出的确切消息是 Unable to attach image "floppy.img."(No Mountable File Systems)即使我刚刚使用 FAT 16 文件系统格式化了磁盘。

不幸的是,由于这是我的第一篇文章,我无法给您图片。

我真的很感激任何帮助。磁盘结构确实不是我的强项。

最佳答案

当您使用 dd 时,请尝试添加 conv=notrunc 选项。这迫使它不会尝试截断文件,而是仅覆盖您指定的部分。

关于assembly - 自定义引导加载程序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7048529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com