Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Полный текст учебника.docx
Скачиваний:
26
Добавлен:
17.04.2019
Размер:
10.83 Mб
Скачать

Программирование работы с клавиатурой

При программировании работы с клавиатурой могут быть использованы прерывание 16Н BIOS и прерывание 21Н (AH = 1, 6, 7, 8, A, B, C) DOS.

Ввод с клавиатуры по прерыванию 21H DOS.

  1. Чтение строки символов с буферизацией: AH = 0Ah. Для инициализации такого чтения необходимо:

  • задать буфер, указав в нем число символов строки, подлежащих вводу, директивой:

buf DB n, 0, 0, ... , 0, 0

(buf — имя поля, которое, в принципе, может быть и любым другим).Количество нулей в директиве должно быть на 2 больше, чем n (n — максимальное количество вводимых символов), на место первого нуля после ввода будет записано количество фактически введенных символов, на место последующих нулей будут введены ASCII-коды символов строки и еще один 0 для кода клавиши Enter — 13;

  • занести в регистр DX адрес буфера.

При выполнении рассматриваемого прерывания управление прерванной (основной) программе не возвратится до тех пор, пока не нажата клавиша Enter.

При нажатии каждой очередной клавиши ее код записывается в буфер клавиатуры и отображается на дисплее, но из буфера поступит в основную программу (в поле buf) только после нажатия клавиши Enter. Если до Enter клавиш нажато больше, чем указано в буфере, то раздастся звуковой сигнал и лишние символы восприняты не будут.

Пример фрагмента программы чтения строки символов:

buf DB 9,0,0,0,0,0,0,0,0,0,0,0

mov AH, 0AH

mov DX, offset buf

int 21H

В поле буфера будут записаны ASCII-коды символов строки, и, если в основной программе предусмотрены операции над двоичными кодами символов (цифр) строки, то есть она предполагает ввод числового значения, то необходимо преобразовать ASCII-коды в двоичный код числа.

Некоторые аспекты создания исполняемых программ

Язык ассемблера удобен тем, что, с одной стороны, он позволяет писать программы на уровне команд микропроцессора, с другой стороны, не требует использования и, соответственно, запоминания множества числовых кодов этих команд.

Исходная программа, составленная на языке ассемблера, использующая мнемонические сокращения английских слов и введенная в машину с использованием текстового редактора, оформляется в виде файла с расширением ASM; после обработки исходной программы программой-ассемблером (ASM, MASM или TASM) формируется программа в машинных кодах — объектная программа с расширением OBJ, уже понятная микропроцессору (ASM выдает только коды ошибок, обнаруженных при трансляции, а MASM предоставляет более развернутую информацию об этих ошибках; MASM, в отличие от ASM, позволяет использовать в программах команды, ориентированные на современные микропроцессоры и сопроцессоры; возможности у TASM еще несколько шире, чем у MASM.

Объектная программа еще не является законченной и исполняемой микропроцессором: в ней окончательно оформлены еще не все адреса (программа не является «перемещаемой») и не объединены части (блоки), оттранслированные отдельно друг от друга (например, с целью более простой их отладки). Преобразование объектной программы в исполняемую (компоновка объектной программы) выполняется редактором связей LINK (либо TLINK). Исполняемый файл после загрузки имеет расширение EXE. Отладку исполняемой программы удобно выполнять с помощью отладчика DEBUG.