Я пытаюсь использовать прерывание видео bios для отображения символа на экране.
Ниже приведен код сборки:
mov $0x0A, %AH
mov $0x68, %AL ; to display character 'h'
int $0x10
Я собрал этот код, используя GNU ассемблер, чтобы создать объектный файл с именем sample.o
Общий размер sample.o составляет 449 байт. Теперь я вручную записываю в этот объектный файл шестнадцатеричные цифры 0x55 и 0xAA в позициях 511 и 512 байтов, чтобы сделать его загрузочным. Поэтому я считаю, что теперь у меня есть загрузочный сектор 512 байт. Я использую qemu, чтобы попытаться загрузиться с этого объектного файла:
$> qemu -fda sample.o
Эмулятор qemu запускается и останавливается в точке, где написано "Загрузка с дискеты ..."
Но я подумал, что после обнаружения загрузочного сектора код прерывания видео bios должен был запускаться и отображать символ на экране.
Я знаю, что делаю что-то ужасно неправильно. Может быть, мне не хватает всей концепции прерываний. Может ли кто-нибудь помочь.
РЕДАКТИРОВАТЬ: так что теперь я использую as86 и ld86, чтобы получить только плоский двоичный файл. И вместо 0x0A в AH я использую 0x0E, и кажется, что все получилось. Похоже, проблема реализации BIOS.
Я ценю всех тех, кто ответил.
Спасибо