- •Московский государственный университет
- •3. Рекомендуемая литература для подготовки к лабораторным работам:
- •5. Порядок сдачи лабораторной работы:
- •6. Основной теоретический материал для выполнения лабораторных работ Общий формат команды Ассемблера
- •Структура простейшего программного модуля. Сегментирование
- •Функции bios
- •Int 10h: Видео сервис
- •Функции os
- •Ввод-вывод текстовых данных
- •Завершение программы
- •Работа с файлами
- •7.Задания на выполнение лабораторных работ Задание на лабораторную работу №1: программирование операций ввода-вывода для стандартных устройств.
- •Задание на лабораторную работу 2
Функции os
Функции OS - это функции, выполняемые при вызове прерывания int 21h с обозначением функции в регистре AH и подфункции (если это необходимо) в регистре AL.
Ввод-вывод текстовых данных
Функция 01h: Ввод с клавиатуры
Вход AH = 01h
Выход AL = символ, полученный из устройства стандартного ввода
Описание: Считывает (ожидает) символ со стандартного устройства ввода. Отображает этот символ на стандартное устройство вывода (эхо). При распознавании Ctrl-Break выполняется int 23h.
Замечание: Ввод расширенных клавиш ASCII (F1-F12, PgUp, курсор и т. п.) требует двух обращений к этой функции. Первый вызов возвращает AL = 0. Второй вызов возвращает в AL расширенный код ASCII.
Функция 02h: Вывод на дисплей
Вход AH = 02h
DL = символ, выводимый на устройство стандартного вывода
Описание: Посылает символ из DL на устройство стандартного вывода. Обрабатывает символ Backspace (ASCII 8), перемещая курсор влево на одну позицию и оставляя его в новой позиции. При обнаружении Ctrl-Break выполняется int 23h.
Функция 09h: Вывести строку на дисплей
Вход AH = 09h
DS:DX = адрес строки, заканчивающейся символом '$' (ASCII 24h)
Описание: Строка, исключая завершающий ее символ '$', посылается на устройство стандартного вывода. Символы Backspace обрабатываются как в функции 02h. Обычно, чтобы перейти на новую строку, включают в текст пару CR/LF (ASCII 13h и ASCII 0ah).
Функция 0ah: Ввод строки с клавиатуры в буфер
Вход AH = 0ah
DS:DX = адрес входного буфера (смотри ниже)
Выход Буфер содержит ввод, заканчивающийся символом CR (ASCII 0dh)
Описание: При обращении буфер по адресу DS:DX должен содержать значение максимально допустимой длины ввода. На выходе функции в следующем байте содержится действительная длина ввода, затем введенный текст, завершающийся символом возврата каретки (0dh). Символы считываются с устройства стандартного ввода вплоть до CR (ASCII 0dh) или до достижения длины MAX-1. Если достигнут MAX-1, включается консольный звонок для каждого очередного символа, пока не будет введен возврат каретки CR (нажатие Enter). Второй байт буфера заполняется действительной длиной введенной строки, не считая завершающего CR. Последний символ в буфере - всегда CR (не засчитан в байте длины). Символы в буфере (включая LEN) в момент вызова используются как "шаблон". В процессе ввода действительны обычные клавиши редактирования: Esc выдает "\" и начинает с начала, F3 выдает буфер до конца шаблона, F5 выдает "@" и сохраняет текущую строку как шаблон, и т. д. Большинство расширенных кодов ASCII игнорируются. При распознавании Ctrl-Break выполняется прерывание int 23h (буфер остается неизменным).
Завершение программы
Функция 4ch: Завершить программу (EXIT)
Вход AH = 4ch
AL = код возврата
Описание: Возвращает управление от порожденного процесса его родителю, устанавливая код возврата, который можно опросить функцией 4dh WAIT. Управление передается по адресу завершения в PSP завершаемой программы. В векторах Ctrl-Break и Critical Error восстанавливаются старые значения, сохраненные в родительском PSP.
Замечание: Значение ERRORLEVEL (используемое в пакетных файлах DOS) можно использовать для проверки кода возврата самой последней программы.
Функция 4dh: Дать код возврата программы (WAIT)
Вход AH = 4dh
Выход AL = код возврата последнего завершившегося процесса
AH = 0 - нормальное завершение
АН = 1 - завершение через Ctrl-Break int 23h
АН = 2 - завершение по критической ошибке устройства int 24h
АН = 3 - завершение через функцию 31h KEEP
Описание: Возвращает код возврата последнего из завершившихся процессов. Эта функция возвращает правильную информацию только однажды для каждого завершившегося процесса.
Функция 4dh: Дать код возврата программы (WAIT)
Вход AH = 4dh
Выход AL = код возврата последнего завершившегося процесса
AH = 0 - нормальное завершение
АН = 1 - завершение через Ctrl-Break int 23h
АН = 2 - завершение по критической ошибке устройства int 24h
АН = 3 - завершение через функцию 31h KEEP
Описание: Возвращает код возврата последнего из завершившихся процессов. Эта функция возвращает правильную информацию только однажды для каждого завершившегося процесса.