我正在阅读有关如何从软盘启动的文章: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打印驱动器内容的十六进制转储时,我发现签名仍然存在。现在我删除了它,从驱动器启动显示错误“找不到操作系统”。
答案 0 :(得分:4)
这取决于您计算机的BIOS。许多BIOS实现不需要AA55签名来启动软盘,并且由于USB驱动器既不是软盘驱动器也不是硬盘驱动器,因此由BIOS决定应该将其视为软盘驱动器。我猜你的BIOS不需要软盘签名,并将USB驱动器视为软盘驱动器,这意味着它也不需要USB驱动器的签名。
请参阅Jim关于冷启动和暖启动之间区别的评论。