Функция 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
Объяснение кода листинга программы
В коде присутствуют следующие действия:
- Смена сегмента данных на CSEG (обычно используется для перехода к сегменту данных, содержащему код программы).
- Переход к сегменту начала программы (в данном случае 100h).
- Передача в регистр AX числа 3521h (в данном случае это может быть номер прерывания, идентификатор устройства или другой параметр, требуемый для работы функции).
- Вызов прерывания 21h (это может быть функция BIOS, предназначенная для работы с дисками, памяти или другими системными ресурсами).
- Возврат из функции (возвращает управление туда, откуда была вызвана функция). Список действий:
- Смена сегмента данных.
- Переход к сегменту начала программы.
- Передача в регистр AX числа 3521h.
- Вызов прерывания 21h.
- Возврат из функции.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д