Функция 35h 21-го прерывания - Assembler

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

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

Функция 35h 21-го прерывания Возвращает адрес точки входа в процедуру прерывания в es:bx

Почему она возвращает разные значения в es:bx?

Точнее разные, если отладчик по разному запускать, если через DosBox одни значения, через FarManager - другие Ну и если запускать программу в разных отладчиках, тоже разные результаты в es:bx(turboDebugger, afdPro) Если посмотреть в отладчике debug, там тоже "левый" результат Почему так?

Решение задачи: «Функция 35h 21-го прерывания»

textual
Листинг программы
CSEG    segment
assume        cs:CSEG,ds:CSEG,es:CSEG,ss:CSEG
org        100h
Begin:
mov    ax,3521h
int    21h
ret
 
CSEG    ends
end Begin

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

В коде присутствуют следующие действия:

  1. Смена сегмента данных на CSEG (обычно используется для перехода к сегменту данных, содержащему код программы).
  2. Переход к сегменту начала программы (в данном случае 100h).
  3. Передача в регистр AX числа 3521h (в данном случае это может быть номер прерывания, идентификатор устройства или другой параметр, требуемый для работы функции).
  4. Вызов прерывания 21h (это может быть функция BIOS, предназначенная для работы с дисками, памяти или другими системными ресурсами).
  5. Возврат из функции (возвращает управление туда, откуда была вызвана функция). Список действий:
  6. Смена сегмента данных.
  7. Переход к сегменту начала программы.
  8. Передача в регистр AX числа 3521h.
  9. Вызов прерывания 21h.
  10. Возврат из функции.

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


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

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

14   голосов , оценка 4.143 из 5