引导程序的大小

| 我正在阅读brokenthorn.com的O / S开发教程,是其中一个教程,下面的代码在那里。 http://www.brokenthorn.com/Resources/OSDev3.html 我不明白为什么这段代码会清除510个字节。代码中也有org,bits,cli,hlt。是否应该将其更改为少于510字节?可能是拼写错误吗? 谢谢。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;*********************************************
;   Boot1.asm
;       - A Simple Bootloader
;
;   Operating Systems Development Tutorial
;*********************************************
org 0x7c00  ; We are loaded by BIOS at 0x7C00

bits    16      ; We are still in 16 bit Real Mode

Start:

    cli ; Clear all Interrupts

    hlt ; halt the system

times 510 - ($-$$) db 0 ; We have to be 512 bytes. Clear the rest of the bytes with 0

dw 0xAA55   ; Boot Signiture
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    
已邀请:
它没有清除510个字节,而是清除了“ 1”个字节。由于
$
是当前位置,而
$$
是该节的开始,因此它会清除
510 - (length of the section up to that point)
个字节。 这将从512字节的限制中最多正确填充两个字节,并将签名放在最后两个字节上。     
引导扇区的长度为512字节,因此由最后两个字节开始设置为0xAA55进行标识。剩下的510个字节用于加载程序的实际代码,这正是所提供的示例在组装时所填充的内容。如果生成的二进制文件的长度不完全是512字节,那么您可能需要指定纯二进制输出格式,尽管对于nasm,这是默认设置。 在实践中,分区表等还需要提供其他魔术字节,通常,第一级加载程序仅用于读取和执行更多代码。     

要回复问题请先登录注册