Assembly NASM中的ASM错误

Assembly NASM中的ASM错误,assembly,nasm,osdev,Assembly,Nasm,Osdev,我对这段代码有问题: loop : jmp loop times 510 -( $ - $$ ) db 0 dw 0 xaa55 这给了我一个错误,说: boot.asm:6:错误:操作数1后应为逗号 我不知道是什么原因造成的。我刚开始尝试操作系统开发,所以不要指望我知道那么多。您需要删除第6行0和x之间的空格 loop : jmp loop times

我对这段代码有问题:

loop :              

    jmp loop        

times 510 -( $ - $$ ) db 0              
dw 0 xaa55
这给了我一个错误,说:

boot.asm:6:错误:操作数1后应为逗号


我不知道是什么原因造成的。我刚开始尝试操作系统开发,所以不要指望我知道那么多。

您需要删除第6行0和x之间的空格

loop :              

    jmp loop        

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

0x表示十六进制数,因此不能用空格分隔。

您是否尝试过在第6行的操作数1后添加逗号?逗号放在哪里?实际上,这可能不是真正的问题。这是最好的方式,为某人谁知道更多。很抱歉,请删除0和x之间的空格。您需要的是dw 0xaa55。0x前缀表示aa55被视为十六进制。您希望0xaa55作为引导扇区中的最后一个字,因为它表示大多数BIOS将检查的引导签名。那里有更多冗余空间,如loop:-是带参数的指令循环,还是该标签循环和冒号用于将其与指令循环区分开来?这甚至可能会引入以后不需要的错误,在每个标签定义中使用冒号。510-$-$$db对于了解排版规则的人来说也很难阅读。。。510-$-$$db是更合适的样式。顺便说一句,如果您甚至不知道0x表示值的十六进制格式,那么在执行操作系统之前,您应该先从一些x86汇编教程开始。