FASM—USB don上的引导扇区';行不通
首先,对不起我的英语不好,我是法国人。 目前,我使用fasm学习asm来测试引导扇区编程 我制作了一个简单的引导程序,我编译了它,并在usb的第一个扇区中编写了boot.bin 但当我在PC或virtualbox中启动时,找不到驱动器 引导扇区代码:FASM—USB don上的引导扇区';行不通,usb,boot,fasm,sector,Usb,Boot,Fasm,Sector,首先,对不起我的英语不好,我是法国人。 目前,我使用fasm学习asm来测试引导扇区编程 我制作了一个简单的引导程序,我编译了它,并在usb的第一个扇区中编写了boot.bin 但当我在PC或virtualbox中启动时,找不到驱动器 引导扇区代码: ;======================================================================= ; a simpliest 1.44 bootable image by shoorick ;)
;=======================================================================
; a simpliest 1.44 bootable image by shoorick ;)
;=======================================================================
_bs equ 512
_st equ 18
_hd equ 2
_tr equ 80
;=======================================================================
org 7C00h
jmp start
nop
;=====================================================
db "HE-HE OS"; ; 8
dw _bs ; b/s
db 1 ; s/c
dw 1 ; rs
db 2 ; fats
dw 224 ; rde
dw 2880 ; as
db 0F0h ; media
dw 9 ; s/fat
dw _st ; s/t
dw _hd ; h
dd 0 ; hs
dd 0 ; --
db 0 ; drv
db 0 ; --
db 29h ; ebr
dd 0 ; sn
db "NO NAME "; ; 11
db "FAT12 "; ; 8
;=====================================================
start:
mov ax,cs
mov ds,ax
mov cx,count
mov si,hello
mov bx,7
mov ah,0Eh
@@:
lodsb
int 10h
loop @B
xor ah,ah
int 16h
int 19h
hello db "Hi! This is disk-invalid!"
count = $ - hello
;=======================================================================
rb 7E00h-2-$
db 055h,0AAh
;=======================================================================
此代码由fasm网站的示例提供。引导加载程序无法工作的原因有两个:
rb 7E00h-2-$
db 055h,0AAh
与
这样可以确保文件的长度正好为512字节,并且具有所需的引导加载程序签名引导加载程序无法工作的原因有两个:
rb 7E00h-2-$
db 055h,0AAh
与
这样可以确保文件的长度正好为512字节,并且具有所需的引导加载程序签名您在BIOS中设置了正确的引导顺序吗?如果可能,请将USB设备移到顶部。您是否在BIOS中设置了正确的引导顺序?如果可能的话,将USB设备移到顶部。他的汇编文件是正确的。您使用的DB和DW是同一事物,但表达方式不同
rb 7E00h-2-$
实际上是有效的,它将生成所需的字节,以填充到放置引导签名的510处。让它成为512rb
是一个FASM指令,用于保留指定数量的字节。@Michael Petch奇怪,如果我尝试使用他的方法填充510字节,则会得到一个32256字节长的二进制文件。我使用的是flat assembler 1.71.51,如果你不使用org 07c00h
他的汇编文件是正确的,我想你会得到32256。您使用的DB和DW是同一事物,但表达方式不同rb 7E00h-2-$
实际上是有效的,它将生成所需的字节,以填充到放置引导签名的510处。让它成为512rb
是一个FASM指令,用于保留指定数量的字节。@Michael Petch奇怪,如果我尝试使用他的方法填充510字节,则会得到一个32256字节长的二进制文件。我使用的是flat assembler 1.71.51,如果不使用org 07c00h