Использование прерываний при вводе и выводе строк на экран дисплея

Архитектура ЭВМ 07.04.2024 0 1237 Нашли ошибку? Ссылка по ГОСТ

Во многих приложениях, требуется, чтобы пользователь веел строку с информацией, например, свое полное имя (ФИО). Для этой цели служит функция А прерывания 21.

Чтобы воспользоваться этой функцией, в программе пользователя требуется зарезервировать в сегменте данных место лдля вводимой строки ( в таблице это называется буфер строки). Количество выделяемых байтов должно быть на 2 больше максимального размера вводимой строки. Причем первый байт буфера должен задавать эту самую максимальную длину (фактически он будет содержать значение количества выделенных байтов памяти минус 2). Например, чтобы предусмотреть в программе ввод пользовательской строки из 50 символов, в сегменте данных нужно описать:

STRING DB 50, 51 DUP (?)

Чтение строки выполняется командами:

LEA DX, STRING ; указатель ан буфер поместить в DS:DX

MOV AH,0AH ; вызвать функцию А

INT 21H ; прочитать строку

Функция А помещает количество фактически введенных символов вво второй байт буфера STRING и не изменяет указатель DS:DX. Т.е. после выполнения команды INT первый информационный символ введенной строки находится по адресу (DX)+2.

Вряд ли хорошая пользовательская программа может обойтись без сообщений из программы. Это могут быть либо приглашения к вводу информации, либо сообщения о ходе выполнения программы. Такой сервис в программах на Ассемблере представляет функция 9 для работы с дисплеем. Приведем пример фрагмента программы для выдачи приглашения ‘Введите ФИО’. Для функции 9 необходимо, чтобы текст сообщения заканчивался символом , поэтому в сегменте данных опишем: MESS1 DB 'Введите ФИО:

В командном сегментном коде предусмотрим команды вызова функции 9:

LEA DX, MESS1

MOV AH,9

INT 21H

Нашли ошибку? Выделите текст и нажмите CTRL + Enter

Средняя оценка 0 / 5. Количество оценок: 0

Поставьте вашу оценку

Сожалеем, что вы поставили низкую оценку!

Позвольте нам стать лучше!

Расскажите, как нам стать лучше?

1237