int 21h ассемблер что это

Теоретические сведения

Функции прерывания 21 h ( DOS )

Замечание. Функция 08 h при вводе проверяет, не нажато ли CTRL + BREAK

На входе ds : dx = адрес буфера с форматом:

Последовательность действий при использовании этих функций:

1. Поместить номер функции в регистр AH

2. Поместить передаваемые функции параметры в определенные регистры (для каждой функции соответствующие)

3. Вызвать прерывание командой int 21 h

4. Извлечь результаты работы функции из определенных регистров

Пример 1

Вывод строк на экран

; здесь показаны два различных варианта задания конца строки

mov dx,offset message1

mov dx,offset message2

Пример 2

Ввод двух символов с клавиатуры (фрагмент)

mov ah,1h ; заносим номер функции в необходимый регистр

int 21h ; ввод первого символа

mov dl,al ; освобождаем al для ввода второго символа

int 21h ; ввод второго символа

mov ax,4c00h ; пересылка 4c00h в регистр ax

end main ; конец программы

Задания

1. Скопируйте пример 1 в окно текстового редактора, а затем создайте исполняемый файл и выполните программу.

2. Допишите необходимые команды в примере 2, создайте исполняемый файл и выполните программу.

3. Разработайте программу, которая выводит запрос пользователю на ввод его идентификатора (имени), а затем выводит сообщение: «Пользователю вход в систему разрешен». Необходимо предусмотреть задержку строки на экране до нажатия пользователем любой клавиши.

Источник

Ассемблер

Прерывание 21h: общие функции DOS

Все функции DOS вызываются с помощью прерывания 21h (в десятичной нотации 33). Первая версия DOS содержала 42 функции. Во второй к ним добавлено еще 33 функции, которые сохраняются во всех последующих версиях. Выбор конкретной функции осуществляется путем записи соответствующего номера в регистр AH.

Функция 02: вывод одного символа на экран

Для вывода одного символа на экран ПК используется

функция 02 прерывания 21h:

Выводимый символ высвечивается в позиции курсора (что бы там ни было записано), после чего курсор сдвигается на одну позицию вправо. Если курсор находился в конце строки экрана, то он перемещается на начало следующей строки, а если курсор был в конце последней строки экрана, то содержимое экрана сдвигается на одну строку вверх, а внизу появляется пустая строка, в начало которой и устанавливается курсор.

Читайте также:  какой лучше ховер взять h3 или h5

Особым образом осуществляется вывод символов с кодами 7, 8, 9, 10 (0Ah) и 13 (0Dh). Символ с кодом 7 (bell, звонок) на экране не высвечивается (и курсор не сдвигается), а вызывает звуковой сигнал. Символ с кодом 8 (backspase, шаг назад) возвращает курсор на одну позицию влево, если только он не был в самой левой позиции строки. Символ с кодом 9 (tab, табуляция) смещает курсор вправо на ближайшую позицию, кратную 8. Символ с кодом 10 (line feed, перевод строки) перемещает курсор в следующую строку экрана, оставляя его в той же колонке. Символ с кодом 13 (carrige returne, возврат каретки) устанавливает курсор на начало текущей строки; вывод подряд символов с кодами 13 и 10 означает перевод курсора на начало следующей строки.

Функция 9: вывести строку на экран дисплея

Для вывода на экран строки (последовательности символов) можно, конечно, использовать функцию 02, однако сделать это можно и за один прием с помощью функции 09 прерывания 21h:

DS:DX := начальный адрес строки

Расширенные функции операционной системы DOS в качестве ограничителя строки используют CHR$(0). Это соответствует соглашениям, принятым в операционной системе UNIX и языке программирования Си.

Среди функций DOS нет такой, которая выводит числа. Такую операцию, если надо, приходится реализовывать на основе рассмотренных функций.

Функция 4Ch: завершение программы

Завершив все свои действия, программа обязана вернуть управление операционной системе, чтобы пользователь мог продолжить работу на ПК. Такой возврат реализуется функцией 4Ch прерывания 21h, которую помещают в конце программы:

Источник

MS-DOS и TASM 2.0. Часть 16. Прерывания DOS.

Ядро операционной системы — набор системных функций.

Основу операционной системы Windows 95 — Windows XP составляет набор системных функций, содержащихся в файлах с расширением *.DLL, которые располагаются в системных дирректориях … Windows\System, System32, SysWOW64 (для 64 битных версий операционок) — так называемый Win API. К слову, в Windows 10 поддержка Win API реализована практически в полном объёме, хотя ядро системы несколько изменилось). В MS-DOS ядро также состоит из системных функций, которые называются прерывания DOS. Ну, если точно, то есть прерывания DOS, а есть прерывания BIOS (связаны с управлением компьютерным железом, определённые прерывания DOS можно реализовать через прерывания BIOS), да и понятие ядра системы можно расширить… Для наших целей и на данный момент отбросим усложнения в сторону! Далее мы будем использовать общее понятие для всех прерываний: прерывания DOS.

Читайте также:  feu vert что это

Прерывания DOS.

Прерывание имеет вид: int [номер прерывания], например: INT 21h.

Функции прерывания INT 21h делят на группы в зависимости от выполняемых ими задач и особенностей выполнения этих задач. Одно и тоже действие иногда можно осуществить при помощи различных прерываний различными способами.

Прерывание не имеет смыслового названия, но каждой функции присвоен свой номер. Номер функции при вызове прерывания INT 21h задается через регистр AH. Согласно этому номеру можно выяснить предназначение функции, её параметры.

Параметры (in, out) передаются через регистры либо пары регистров (например: BX, DX, CX, BL:CX, DS:DX, и т.д.). Возвращаемое значение (return) передаётся через AX.

Источник

Функция «int 21h» с компилятором MASM в среде SASM

Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: char2.exe
Версия приложения: 0.0.0.0
Отметка времени приложения: 568ff17d
Имя модуля с ошибкой: char2.exe
Версия модуля с ошибкой: 0.0.0.0
Отметка времени модуля с ошибкой: 568ff17d
Код исключения: c0000005
Смещение исключения: 00001002
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789

Ознакомьтесь с заявлением о конфиденциальности в Интернете:
http://go.microsoft.com/fwlink. cid=0x0419

Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
C:\Windows\system32\ru-RU\erofflps.txt

То же самое происходит при задании других команд в регистре AH.

Что нужно добавить, чтобы функция int 21h начала работать?

функция 0Ah int 21h
нужно при помощи функции 0Ah int 21h ввести строчку с клавиатуры, а потом вывести ее на экран.

Прерывание 21h «Вывод текста»
После не совсем удачного знакомства с двумя учебниками В.И. Юрова и О.А. Калашникова, связано было.

Источник

Различия между: INT 10H, INT 16H, INT 21H

Может ли кто-нибудь объяснить мне различия между: INT 10H, INT 16H, INT 21H на языке ассемблера? Когда мы должны использовать любой из них и для чего?

Читайте также:  какой отбеливатель лучше для цветных вещей

Например: в этом простом коде для печати «Hello, World!» Почему мы использовали int 10h в четвертой строке? Почему мы использовали int 16h в предпоследней строке?

3 ответа

Каждый INT представляет семейство функций, где обычно AH представляет номер функции.

INT 0x10 используется для управления экраном

INT 0x13 предназначен для хранения (HDD и FDD)

Вы можете найти все эти функции здесь: Таблица переходов по прерыванию

INT здесь означает ПРЕРЫВАНИЕ и имеет функциональный режим, такой как 00,01,02 и т. д., INT 10h используется для инициализации графического и видео режима, а INT 16h используется чтобы установить ход клавиатуры.

Что касается этой части вашего вопроса:

Когда мы должны использовать любой из них и для чего?

Эти прерывания BIOS в основном использовались приложениями MS-DOS, и сегодня они практически устарели. Они недоступны во время выполнения для приложений, работающих в любой современной операционной системе, поэтому вы, вероятно, никогда не будете их использовать. (Исключения могут быть в том случае, если вы разрабатываете определенные части программного обеспечения, которые запускаются очень рано в процессе загрузки, например, загрузчик, прошивку для аппаратного устройства, или если вы разрабатываете сам BIOS.)

Источник

Сказочный портал