Как вывести содержимое ячеек памяти BIOS - Assembler

Узнай цену своей работы

Формулировка задачи:

Я чайник в ассемблерных вставках Работаю через DosBox -> в Turbo Pascal Нужно вывести содержимое памяти BIOSа в 16-ричной форме в виде таблицы.

Решение задачи: «Как вывести содержимое ячеек памяти BIOS»

textual
Листинг программы
  lea di,[Buffer]  ; ES:DI = адрес буфера
  mov cx,80h
  cld
  cli
next:
  mov al,80h
  sub al,cl
  out 70h,al
  in al,71h
  stosb
  loop next
  sti

Объяснение кода листинга программы

В данном коде выполняется следующее:

  1. lea di,[Buffer] — в регистре DI хранится адрес буфера.
  2. mov cx,80h — в регистре CX содержится значение 80, которое будет использоваться в дальнейшем.
  3. cld — в коде сегмента данных (DS) устанавливается в единицу, что приводит к тому, что при обращении к памяти, например, [di], будет использоваться сегмент данных.
  4. cli — отключается прерывание, что позволяет выполнить следующие действия без прерываний.
  5. mov al,80h — в регистре AX содержится значение 80, которое будет использоваться в дальнейшем.
  6. sub al,cl — из регистра AX вычитается значение из регистра CL.
  7. out 70h,al — из регистра AX выводится на порт 70h.
  8. in al,71h — с порта 71h считывается значение в регистр AX.
  9. stosb — из регистра AX выводится в буфер по одному байту с помощью команды вывода строки.
  10. loop next — выполняется цикл до тех пор, пока не будет выполнено условие, указанное в следующей инструкции.
  11. sti — включается прерывание. Этот код выполняет вывод содержимого ячеек памяти BIOS в буфер, начиная с адреса 0000:70 и заканчивая адресом 0000:71, по одному байту за раз. Значение 80 в регистре CX обеспечивает вывод 128 байтов (80 байтов от 0000:70 до 0000:7F). Важно отметить, что этот код может работать только в реальном режиме работы процессора и может привести к повреждению системы, если он будет выполнен в защищенном режиме или в режиме виртуальной машины.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы