Отчет по практике: Микропроцессорные системы
int16h
Результат функции – в AL байт флагов клавиатуры.
Пример завершения циклической программы при нажатой клавише Ctrl:
c:…………………. ; основная часть программы
Movah,02h
Int 16h
Andal, 00000100b ; выделение флага Сtrl
Jzc
Movax, 4c00h ; выход из программы
Int 21h
При нажатии клавиши Ctrl взводится бит 2 в статусе клавиатуры и пока клавиша нажата остается в состоянии «1». При отпускании клавиши производится сброс флага Ctrl. Остальные флаги работают аналогично.
Значении байтов флагов клавиатуры хранится по адресу 0040:0017hв области данный BIOS(0040:0000h – 0040:00FFh). Поэтому проверку флага клавиатуры можно осуществить прямым обращением к ячейке 0040:0017h.
Тот же пример без использования int 16h
MovES, 40h
MovSI, 17
C:…………………. ; основная часть программы
MovAL, ES:[SI]; результат этой команды такой же, как и у функции ah=02hint 16h
AndAL, 04h
Jzc
Movax, 4c00h; выход из программы
Int21h
1.4 Описание алгоритмов вывода чисел
Вывод числа в 2 с/с
1. Занесите число для вывода в регистр(например в bl).
2. Выполните сдвиг на один разряд влево через флаг переноса
3. Обнулите вспомогательный регистр (например dl).
4. выполните сдвиг dl на один разряд влево так , чтобы содержимое флага переноса попало в младший бит регистра dl.
5. прибавьте к регистру dlконстанту 30h для преобразования числа в ASCII-код символа данного числа и выведите на экран полученный символ.
6. Выполните шаги 2-5 восемь раз для вывода всего байта.
Схема выполнения сдвигов: