我希望能够从上到下阅读它,但似乎nasm有某种类似于CPP的预处理器。
我正在尝试理解的代码:
; Infinite loop (e9 fd ff)
loop:
jmp loop
; Fill with 510 zeros minus the size of the previous code
times 510-($-$$) db 0
; Magic number
dw 0xaa55
我很困惑,因为我希望代码永远不会到达底部,在 Boot 扇区的最后一个字设置0xaa55。我希望当它从上到下读取文件时,当它到达loop: jmp loop
时,它将永远停留在那里循环,它永远不会到达底部代码。
1条答案
按热度按时间3j86kqsm1#
你的分析是正确的,但是你却被
jmp loop
卡住了。下面的部分从来就不是为了让CPU实际执行的;它只需要存在于那里,以便硬件BIOS将代码识别为有效的 Boot 扇区并运行它。