Второй сектор
Второй сектор будет содержать следующий код :
entry start start: mov ah,#0x03 xor bh,bh int 0x10
mov cx,#26 mov bx,#0x0007 mov bp,#mymsg mov ax,#0x1301 int 0x10
loop1: jmp loop1
mymsg: .byte 13,10 .ascii "Handling BIOS interrupts"
Этот код загружается и выполняется в сегменте 0x500. Он использует прерывание 0x10 для получения текущей позиции курсора и вывода на экран сообщения.
Первые три строки кода (отсчёт начинается с третьей строки, пропуская инструкции определения точки входа) используются для получения текущей позиции курсора. Для этого используется функция 0x03 прерывания 0x10. Перед её вызовом мы обнуляем значение регистра bh[3]. После выполнения прерывания, интересующий нас результат будет хранится в регистрах dh и dl (номер строки и колонки соответственно). Переходим ко второй части программы. В регистр...
Начало сообщения содержит два байта со значениями 13 и 10, что соответствует нажатию клавиши enter. Эти два кода идут вместе, 13 -- код возврата каретки (Carriage Return, CR), 10 -- код перевода строки (Line Feed, LF). Сама строка содержит 24 символа. Символы CR и LF трактуются функцией 0x13 прерывания 0x10 как управляющие и поэтому не высвечиваются. Теперь вызываем прерывание. И последней инструкцией "вешаем" компьютер.