Bootloader帮助......为什么即使没有启动签名,USB驱动器也会启动?

时间:2011-04-08 19:24:42

标签: assembly bootstrapping

我正在阅读有关如何从软盘启动的文章:http://www.cs.umbc.edu/portal/help/nasm/boot.shtml

我会在这里给出代码:

; boot1.asm   stand alone program for floppy boot sector
; Compiled using            nasm -f bin boot1.asm
; Written to floppy with    dd if=boot1 of=/dev/fd0

; Boot record is loaded at 0000:7C00,
    ORG 7C00h
; load message address into SI register:
    LEA SI,[msg]
; screen function:
    MOV AH,0Eh
print:  MOV AL,[SI]         
    CMP AL,0         
    JZ done     ; zero byte at end of string
    INT 10h     ; write character to screen.    
        INC SI         
    JMP print

; wait for 'any key':
done:   MOV AH,0       
        INT 16h     ; waits for key press
            ; AL is ASCII code or zero
            ; AH is keyboard code

; store magic value at 0040h:0072h to reboot:
;       0000h - cold boot.
;       1234h - warm boot.
    MOV  AX,0040h
    MOV  DS,AX
    MOV  word[0072h],0000h   ; cold boot.
    JMP  0FFFFh:0000h    ; reboot!

msg     DB  'Welcome, I have control of the computer.',13,10
    DB  'Press any key to reboot.',13,10
    DB  '(after removing the floppy)',13,10,0
; end boot1

我使用nasm组装它,然后使用dd将其复制到USB驱动器。然后我重新启动系统,它工作得很好。我的问题是,即使我们没有在511字节定义0xaa55,为什么这仍然有效?请向我解释一下。而且,什么是冷重启和热重启?请给我一个很好的链接,我可以详细了解启动过程......


EDITED: 谢谢你的回复!但我发现为什么会发生这种情况。这是因为我之前已经将这个驱动器启动了,并且之后将其格式化了很多次。原来这种格式不会影响MBR。因此,当我使用lde打印驱动器内容的十六进制转储时,我发现签名仍然存在。现在我删除了它,从驱动器启动显示错误“找不到操作系统”。

1 个答案:

答案 0 :(得分:4)

这取决于您计算机的BIOS。许多BIOS实现不需要AA55签名来启动软盘,并且由于USB驱动器既不是软盘驱动器也不是硬盘驱动器,因此由BIOS决定应该将其视为软盘驱动器。我猜你的BIOS不需要软盘签名,并将USB驱动器视为软盘驱动器,这意味着它也不需要USB驱动器的签名。

请参阅Jim关于冷启动和暖启动之间区别的评论。