Поскольку первый сектор содержит всего 512 байт, а остальная часть кода огромна, мне кажется, что мне нужен отдельный ассемблерный код для .lst-файла. Я не уверен, что это называется привязкой, но я хочу связать этот файл ассемблера, когда я создаю файл .img с NASM.Добавление двух файлов .asm с nasm
первый один
ORG 0x7c00
start:
JMP entry
DB 0x90
; Start of BIOS Parameter Block
DB "MyOS "
DW 512
DB 1
DW 1
DB 2
DW 224
DW 2880
DB 0xf0
DW 9
DW 18
DW 2
DD 0
DD 2880
DB 0,0,0x29
DD 0xffffffff
DB "MyOS-Vol "
DB "FAT12 "
TIMES 18 DB 0
; End of BIOS Parameter Block
entry:
MOV AX, 0
MOV SS,AX
MOV SP,0x7c00
MOV DS,AX
MOV ES,AX
MOV SI,msg
loop:
MOV AL,BYTE [SI]
ADD SI, 1
CMP AL,0
JE fin
MOV AH, 0x0e
MOV BX, 0xe1
INT 0x10
JMP putloop
fin:
HLT
JMP fin
msg:
DB 0x0a, 0x0a
DB "hello, world"
DB 0x0a
DB 0
maker:
TIMES 0x01fe-(maker-start) DB 0
DB 0x55, 0xaa
второй один
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
TIMES 4600 DB 0
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
TIMES 1469432 DB 0
Как я могу добавить второй код к первому коду? Не путем копирования вставки текста, но как при объединении объектного файла.
Для тех, кто ищет формат диска fat12. DOS Boot Record Format for FAT12 and FAT16
Предполагаю, что вы говорите о ограничениях при загрузке на компьютерном оборудовании x86. Нет волшебного способа связать вещи, чтобы вы могли иметь первую часть в загрузочном секторе, а остальное - в другом месте. Загрузчик должен обрабатывать загрузку дополнительного кода и выполнять его. –
У меня есть ваше мнение. Думаю, я не описал свою точку зрения четко. Извини за это. То, что я пытался спросить, это. Как связать файлы asm вместе перед загрузкой в оборудование? Я знаю, что компилятор связывает объектные файлы перед созданием исполняемого файла. Но как насчет ассемблера? Я придумал небольшую программу, считывающую файл, и добавление другого файла в виде строковой функции. Но это не так. Есть ли какие-либо варианты для nasm? Я не мог найти один :( –
Поскольку у вас есть 'org 0x7c00' в верхней части вашего asm-файла, это означает, что вы собираете свой код с опцией' -f bin' (например, 'nasm -f bin boot.asm - o boot.bin'). Выход из 'nasm -f bin' - это уже полностью связанное плоское двоичное изображение, которое не может быть _linked_ в традиционном смысле. Оно буквально написано загрузчику (обычно с помощью инструмента, такого как _DD_). Вы используете Windows/OSX или Linux? И какой компоновщик вы хотите использовать (_LD_, _GCC_ и т. Д.)? –