我写了一个引导扇区,用floppy writer写到虚拟软盘里面,虚拟软盘竟然废了
也不是很长的一段代码,是用来读取软盘里面的一个loader.bin文件的,然后调用它来运行
写好以后,先别说运行效果了,把这个boot.bin用floppy writer写入到刚刚建的img文件里面,然后再用win image打开,想往里面放loader文件,没想到打开就提示软盘已经损坏
【软件是没有问题的,我后来用floppy writer往这个img里面写别的boot sector 就可以打开,是我代码的问题吗】
org 07c00h
baseldr equ 09000h
ofstldr equ 0100h
movax, cs
movds, ax
moves, ax
mov ax,ds
mov ds,ax
mov dx,File
mov ax,003dh
int 21h
mov ax,baseldr
mov ds,ax
mov ax,003fh
mov dx,ofstldr
mov bx,1
mov cx,15
int 21h
mov ax,03eh
mov bx,1
int 21h
jmpbaseldr:ofstldr
BootMessage:db"Hello, OS world!"
Filedb"LOADER BIN", 0
times 510-($-$$)db0; 填充剩下的空间,使生成的二进制代码恰好为512字节
dw 0xaa55; 结束标志 ASM 引导扇区 操作系统 虚拟软盘 虚拟机
[解决办法]
你这个是放到软盘引导扇区的?那问题就大了。那个引导扇区有一定的结构要求的,先是个跳转指令到后面的主要的引导代码部分;然后是版本字符串,这个倒不算关键;再后面是磁盘参数块,这个是文件方式访问磁盘的关键;然后是主要的引导代码;最后是引导标记。你这个,关键是没有磁盘参数块部分,所以写入后磁盘文件无法正常访问,就被告知损坏了。还有个要么的问题,你在引导代码里竟然使用 int21h 功能调用?这时还没有 dos 呢,怎么能用 dos 的功能调用呢?只能用 int10h/16h 这样的 bios 功能调用。