以下是我想了解的汇编代码。使用nasm汇编此代码后,如何填充512个字节?
因为我还不清楚510-($-$$)
在这里做什么的意思?根据以下代码,$
和$$
的价值是多少?
http://www.brokenthorn.com/Resources/OSDev3.html
;***************************
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 Signature
;*********************
答案 0 :(得分:0)
从NASM manual,“3.5表达式”部分:
NASM在表达式中支持两个特殊标记,允许计算涉及当前的程序集位置:$和$$标记。 $计算包含表达式的行开头的程序集位置;所以你可以使用JMP $编写无限循环。 $$评估到当前部分的开头;所以你可以通过使用($ - $$)来判断你的部分有多远。
因此,上面的代码执行以下操作:
意图是有一个512字节的块:N +(510-N)+ 2 = 512