汇编程序编译是如何工作的

how assembly programme compilation works

汇编是否像其他高级语言一样从上到下开始执行?:

我的意思是这段代码应该挂在第一行:

jmp $
times 510-($-$$) db 0
dw 0xaa55

但这并不是因为它被视为引导扇区(最后两行已被执行), 这是如何运作的?

how assembly programme compilation works

汇编程序没有被“编译”。你说 compilation 如果你从 more abstract 编程语言翻译成更具体的“编程”语。 例如 Java → Java 字节码。

汇编语言→机器代码不被视为“编译”,因为这两种“语言”具有相同的“能力”,在描述算法方面的能力与另一种一样。

does assembly start executing from top to bottom […]

当CPU上电或复位时,指令指针置零。 但是,作为 ,BIOS 会在您实际执行任何操作之前处理几件事。

[…] like other high level languages ?

程序集不是 HLL。 有“高级汇编器”,但这些本质上有更复杂的宏扩展系统。

I mean this code should hang on the first line :

至少做这样的事情:

    cli       ; clear interrupt: disables all maskable interrupts
stop:
    hlt       ; halt execution
    jmp stop  ; in case of a non-maskable interrupt

更复杂的方法是使用 ACPI,但这不适合 3 LOC。