Assembly 如何计算正确制造MBR需要多少尺寸
我知道在主引导记录(MBR)的末尾有一个神奇的数字,告诉BIOS它是引导加载程序,我们需要填充剩余的字节数,直到它是512字节(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
[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右侧编辑区域下的复选框在哪里?