我正在学习如何制作一个引导扇区并且我正在使用notepad ++(使用过的葡萄酒)中的所有代码,并且我试图组装代码:
{BITS 16}
{ORG 0x7C00}
jmp 0x0:Start
Start:
cli
mov AX,0x9000
mov SS,AX
mov SP,0xFB00
sti
mov AH,0Eh
mov AL,'E'
int 10h
cli
hlt
times 510 - ($ - $$) db 0
dw 0xAA55
我不断收到说明中的错误,我不知道如何解决这个错误......
(代码IS正确间隔我不知道为什么这个网站把它们放在同一条线上)
答案 0 :(得分:0)
NASM中的指令具有用户表单(例如bits 16
)和较低级别表单(例如[bits 16]
)。对于很多情况它们是相同的(用户表单只是在内部转换为较低级别的表单)。对于某些情况,它们并不相同,并且用户表单会执行一些额外的簿记内容,而较低级别的表单则不会(例如section
vs [section]
)。在任何情况下,这些都不涉及花括号,你应该使用用户表单(没有方括号)而不是低级表单(带方括号)。
我没有看到任何其他可能导致错误的问题。
我确实看到了一些不相关的问题(例如,假设EBDA是特定大小,cli
之前的hlt
阻止了“控制+ alt +删除”。