См here для описания вашей проблемы или то, что я думаю это, так как это немного трудно сказать, от вопроса. Это хорошая идея, когда размещение вопросов с «У меня возникли проблемы с синтаксисом» на самом деле показать, что проблема синтаксиса является :-)
См here для решения (но это может не работать, смотрите ниже) ,
В принципе, оператор org
в NASM предназначен для установки базового адреса для раздела и не может использоваться для произвольной вставки байтов в поток. Это предполагает, что вы используете что-то вроде:
org 1000h
%include "kernel.asm"
times 7c00h-($-$$) db 0 ; pad it out with zero bytes
%include "boot.asm"
Однако, вы подумали о том, что вы пытаетесь сделать. Если вы создаете плоский двоичный файл для загрузки в память, я не думаю, что вы хотите, чтобы и загрузочный сектор, и ядро в одном файле.
BIOS захочет загрузить ваш загрузочный сектор как единый фрагмент в 7c00: 0 и почти наверняка будет запутан, когда у него есть ядро в начале этого фрагмента. Я думаю, что вам нужно будет создать два полностью отдельных плоских двоичных файла, один для загрузочного сектора и другой для ядра. BIOS загрузит загрузочный сектор, а ваш загрузочный сектор загрузит ваше ядро.
Затем вы можете поместить соответствующий оператор org
в два исходных файла, и ваша проблема, надеюсь, будет решена.