Следующий сайт «Написание кода загрузочного сектора» предоставляет пример кода, который выводит «A» в экран при загрузке системы. Из того, что я читал, вам не нужно использовать код операции INT, чтобы заставить BIOS выполнять определенные действия? Как работает приведенный ниже код с указанного выше сайта без использования прерываний? Какая часть кода на самом деле говорит аппаратному обеспечению вывести на экран букву «А»?
Рассматриваемый код:
.code16
.section .text
.globl _start
_start:
mov $0xb800, %ax
mov %ax, %ds
movb $'A', 0
movb $0x1e, 1
idle:
jmp idle
ПРИСОЕДИНЕНИЕ К ИСХОДНОМУ ВОПРОСУ
Если я использую следующий код, выполняет ли вызов BIOS запись в текстовый буфер вместо меня? Буфер, начинающийся с адреса 0xb800?
# Author: Matthew Hoggan
# Date Created: Tuesday, Mar 6, 2012
.code16 # Tell assembler to work in 16 bit mode (directive)
.section .text
.globl _start # Help linker find start of program
_start:
movb $0x0e, %ah # Function to print a character to the screen
movb $0x00, %bh # Indicate the page number
movb $0x07, %bl # Text attribute
mov $'A', %al # Move data into low nibble
int $0x10 # Video Service Request to Bios
_hang:
jmp _hang
.end