Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 如何计算正确制造MBR需要多少尺寸_Assembly_Mbr - Fatal编程技术网

Assembly 如何计算正确制造MBR需要多少尺寸

Assembly 如何计算正确制造MBR需要多少尺寸,assembly,mbr,Assembly,Mbr,我知道在主引导记录(MBR)的末尾有一个神奇的数字,告诉BIOS它是引导加载程序,我们需要填充剩余的字节数,直到它是512字节(MBR大小),但是我们如何计算剩余的字节数呢 [bits 16] ; 16 bits assembly [org 0x7c00] start: ;; Call VideoService interrupt 0x10 ;; ah = 0x00 -> SetVideoMode ;; al = 0x13 -> 320x200 16 col

我知道在主引导记录(MBR)的末尾有一个神奇的数字,告诉BIOS它是引导加载程序,我们需要填充剩余的字节数,直到它是512字节(MBR大小),但是我们如何计算剩余的字节数呢

[bits 16] ; 16 bits assembly
[org 0x7c00]

start:
    ;; Call VideoService interrupt 0x10
    ;; ah = 0x00 -> SetVideoMode
    ;; al = 0x13 -> 320x200 16 color
    mov ah, 0x00
    mov al, 0x13
    int 0x10

times 510 - ($ - $$) db 0 ; instead of 510, what number do I need to use?
dw 0xaa55 ; magic number tells BIOS it is the bootloader

我需要用什么号码来代替510?

我们总是需要510。这是512-2(签名),其余的由$-$$处理

我们能写我们想要的任何东西而不需要改变时间吗? 只要表达式510-($-$$)是非负的,就可以。当代码大小(由$-$$给出)大于510字节时,就会发生这种情况。汇编程序会抱怨,所以如果发生这种情况,你就知道了。另外,从技术上讲,只要引导加载程序的第一阶段只有一段代码,$-$$就可以工作,但情况几乎总是这样(如果不总是这样的话)。()

时代
是如何运作的?
$
是当前地址,
$
是节的开头。因此,
$-$$
给出了到目前为止您已使用的字节数
510-($-$$)
因此会给出510的剩余数量以及添加的零数量。然后,
dw 0xaa55
在最后两个字节中提供签名,使总数达到512以填充扇区。()

你总是需要510。这是512-2(签名),剩下的由
$-$$
处理。@MargaretBloom哦,这样我就可以写任何东西,而无需更改
?只要表达式
510-($-$$)
是非负的,是的。当代码大小(由
$-$$
给出)大于510字节时,就会发生这种情况。汇编程序会抱怨,所以如果发生这种情况,你就知道了。另外,从技术上讲,
$-$$
只要在引导加载程序的第一阶段有一段代码就可以工作,但情况几乎总是这样(如果不总是这样的话)。您了解
的工作原理吗
$
是当前地址,
$
是节的开头。因此,
$-$$
会显示到目前为止已使用的字节数
510-($-$$)
因此会给出510的剩余数量以及添加的零数量。然后,
dw 0xaa55
在最后两个字节中提供签名,使总数达到512以填充您的扇区。stackoverflow使用CC BY-SA许可。如果你复制别人的内容,你应该把它归于他们。另外,如果你自己不添加任何重要的新信息,考虑将答案标记为社区维基。@ JeST起初我给Margaret Bloom加了标签,但后来我认为我不应该。如何将答案标记为community WIKI?@Jester右侧编辑区域下的复选框在哪里?