Сборка в реальном режиме: вывод символа Char на экран без инструкции INT при загрузке

Следующий сайт «Написание кода загрузочного сектора» предоставляет пример кода, который выводит «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   

5
задан Matthew Hoggan 12 March 2012 в 05:28
поделиться