Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB1.DOC
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
81.92 Кб
Скачать

Функция овн. Проверка входного статуса клавиатуры

Входные данные: АН 0Вh

Выходные данные:

AL FFh, если есть готовый символ на стандартном входном устройстве и 00h, если на стандартном входном устройстве нет символа.

Функция проверяет наличие символа на стандартном входном устройстве. При выполнении функции проверяется наличие Ctrl-Break.

Функция 0СН. Стирание буфера клавиатуры плюс функция 01Н, 06Н, 07Н, 08Н или 0АН

Входные данные

АН 0Сh

AL Номер функции

Функция стирает буфер клавиатурного драйвера BIOS, после чего выпол­няет указанную в AL функцию (допустимы только 01Н, 06Н, 07Н, 08Н и 0АН). При выполнении функции проверяется наличие Ctrl-Break.

Функция 02Н. Вывод на экран

Входные данные

АН 02Н

DL Символ

Символ из DL выводится на стандартное выходное устройство. Функция реагирует на управляющие ASCII символы, такие как 0DH (CR) и 0АН (LF). Если символ в DL равен 08Н (управляющий символ BS - символ назад), курсор возвращается на одну позицию влево без удаления последнего символа.

Функция 09Н. Вывод строки на экран

Входные данные

АН 09Н

DS:DX Указатель к началу символьной строки

Символьная строка должна заканчиваться символом $ (24Н). Отдельные символы выводятся как при функции 02Н.

2.3. Ввод числовых данных

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

Необходимо вспомнить, как можно представить любое десятичное число:

M = Mn*10n-1 + Mn-1*10n-2 + … + M2*10 + M1.

Таким образом, число 325 можно представить как 325=3*100+2*10+5.

Ввод чисел всегда осуществляется, начиная со старших разрядов. Т.е. после завершения процедуры ввода строка всегда будет содержать ASCII представление цифр числа, начиная со старших разрядов. Для перевода строки в двоичное число необходимо произвести переход от ASCII представления каждой цифры к ее числовому представлению и произвести операцию суммирования всех цифр в соответствии с их весами.

Перевод цифры из ASCII представления в числовое осуществляется путем вычитания значения 30h из значения кода, так как цифры в таблице кодов ASCII занимают положение от 30h(символ ‘0’) до 39h(символ ‘9’).

При переводе из строкового представления в числовое необходимо учитывать разрядность результата. Пользователь может ввести очень большое число, которое не может быть помещено в разрядную сетку машины, соответственно при попытке перевода этого числа возникнет ошибка.

Перевод знаковых чисел осуществляется аналогично, но необходимо помнить, что знаковые числа в машине представляются в дополнительном коде, соответственно при первоначальном переводе можно получить прямой код числа, а затем произвести его перевод в дополнительный.

Перевод из двоичного представления числа в строковое осуществляется обратным преобразованием. Знаковые числа переводятся в прямой код без знака. Затем путем деления числа на основание системы счисления (в нашем случае 10) и взятия остатка производится получение младшей цифры числа. Затем частное снова делится на основание системы счисления и запоминается остаток, и т.д. пока частное не станет равным нулю. Таким образом, будет получено представление числа в виде цифр, остается только осуществить их перевод в ASCII формат и сформировать строку.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]