См. здесь для описания вашей проблемы или того, что я думаю , так как это немного трудно понять из вопроса.При публикации вопросов с вопросом «У меня проблемы с синтаксисом» рекомендуется показать, в чем заключается проблема синтаксиса : -)
См. здесь длярешение (но оно может не работать, см. ниже).
По сути, оператор 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
в два исходных файла, и ваша проблема должна быть решена.