- •Применение системных функций в задачах программирования
- •Содержание
- •Использование программы dos debug для отладки и тестирования программ.
- •1. Цель работы
- •2. Теоретическая часть
- •2.1. Команды debug
- •2.2. Основные особенности программы debug.
- •2.2.1. Команда d (Display - показать) в программе debug
- •2.2.2. Упражнение 1: просмотр области данных bios
- •2.2.3. Проверка параллельных и последовательных портов
- •2.2.4. Проверка оборудования системы
- •2.2.5. Проверка состояния регистра клавиатуры (клавиша Shift)
- •2.2.6. Проверка состояния видеоустройства
- •2.2.7. Упражнение 2: Просмотр rom bios
- •2.2.8. Проверка даты производства bios
- •2.2.9. Упражнение 3: Использование непосредственных данных
- •2.2.10. Ввод инструкций программы
- •2.2.11. Выполнение инструкций программы
- •2.2.12. Просмотр содержимого памяти
- •2.2.13. Использование ранее определенных данных
- •2.2.14. Ввод инструкций и данных программы
- •2.2.15. Выполнение инструкций программы
- •2.2.16. Повторное выполнение инструкций
- •2.2.17. Сохранение программы в debug
- •2.2.18. Программа на языке Ассемблера
- •2.2.18.1. Команда a (Assemble)
- •2.2.18.2. Команда u
- •2.2.19.Использование инструкции int
- •2.2.20. Получение текущих значений даты и времени
- •2.2.21. Определение установленного оборудования
- •2.2.22. Использование int для вывода на дисплей
- •2.2.23. Использование int для ввода с клавиатуры
- •2.2.24. Использование оператора ptr
- •3. Порядок выполнения работы
- •4. Требования к отчету
- •5. Контрольные вопросы
- •Управление выводом текстовой информации на экран
- •1. Цель работы
- •2. Теоретическая часть
- •2.1. Текстовой (алфавитно-цифровой) режим
- •2.2. Вывод на экран средствами bios
- •2.2.1. Установка позиции курсора
- •2.2.2. Чтение текущей позиции курсора
- •2.2.3. Выбор активной страницы
- •2.3.4. Прокрутка экрана вверх
- •2.2.5. Прокрутка экрана вниз
- •2.2.6. Чтение символа и атрибута в текущей позиции курсора
- •2.2.7. Вывод символа и атрибута в текущую позицию курсора
- •2.2.8. Вывод символа в текущую позицию курсора
- •2.2.9. Вывод в режиме телетайпа
- •2.2.10. Выделение мерцанием и яркостью
- •2.2.11. Вывод символьной строки
- •2.2.12. Вывод символьной строки средствами dos
- •2.2.13. Вывод символов таблицы ascii
- •3. Порядок выполнения работы
- •4. Требования к отчету
- •5. Контрольные вопросы
- •Системные средства для вывода информации на экран в графическом режиме
- •1. Цель работы
- •2. Теоретическая часть
- •2.1. Режим средней разрешающей способности
- •2.2. Функции прерывания bios int 10h для графики
- •2.3. Вывод в цветном графическом режиме
- •3. Порядок выполнения работы
- •4 Требования к отчету
- •5. Контрольные вопросы
- •Программирование системных функций bios и dos для работы с клавиатурой
- •2.2.1.2. Справка о наличии символа
- •2.2.1.3 Определение текущего состояния клавиатуры
- •2.2.2 Системные функции dos для работы с клавиатурой
- •2.2.2.1 Ввод с клавиатуры с эхоотображением
- •2.2.2.2 Ввод символа без ожидания
- •2.2.2.3. Прямой ввод с клавиатуры без эхо
- •2.2.2.4. Проверка состояния клавиатуры
- •2.2.2.5. Получение строки символов
- •2.2.2.6. Очистка буфера клавиатуры и ввод символа
- •2.2.2.7. Установка позиции курсора
- •2.2.2.8. Очистка экрана
- •3. Порядок выполнения работы
- •4. Требования к отчету
- •5. Контрольные вопросы
- •Список литературы
- •Программа debug
- •I (Input)
- •Трансляция и компоновка программ
- •Применение системных функций в задачах программирования
- •450000, Уфа-центр, ул. К. Маркса, 12
2.2.2.2 Ввод символа без ожидания
Некоторые программы, работающие в реальном времени, не могут останавливаться и ждать нажатия клавиши. Такие программы принимают символ из буфера, только тогда, когда это им удобно, например, это игровые программы.
Функция 6 прерывания 21h – единственный способ получить введенный символ без ожидания. Эта функция не дает эха на экране и не распознает Ctrl-Break. Перед вызовом прерываний в DL должно быть помещено FFh. Иначе функция 6 будет печатать символ, находящийся в DL в текущую позицию курсора. Если символ принят, то он помещается в AL. Нулевое значение говорит о расширенном коде, и прерывание должно быть повторено.
MOV AH,6 ; номер функции
MOV DL,FFh ; запрос ввода с клавиатуры
INT 21H ; получение символа
JZ NO_CHAR ; переход, если нет символа
CMP AL,0 ; проверка на расширенный код
JE EXT_COD ; переход,если расширенный код
...........
EXT_COD: INT 21h
2.2.2.3. Прямой ввод с клавиатуры без эхо
Функции 7 и 8 прерывания 21h ожидают ввода символа, если буфер клавиатуры пуст. Появление символа на экране не отображается. При этом функция 8 распознает Ctrl-Break, а функция 7 не реагирует на него. В обоих случаях символ возвращается в AL. Когда в AL содержится 0, получен расширенный код. Нужно повторить прерывание, и в AL появится второй байт расширенного кода.
MOV AH,7 ; номер функции
INT 21h ; ожидаем ввод символа
CMP AL,0 ; проверка на расширенный код
JE EXT_COD ; переход на процедуру, иначе код
символа в AL
2.2.2.4. Проверка состояния клавиатуры
Функция 0B помещает значение FF в регистр AL, если буфер клавиатуры содержит один или более символов, и значение 0, когда буфер пуст.
MOV AH,0Bh ; номер функции
INT 21h ; вызываем прерывание
CMP AL,FFh ; сравниваем с FF
JE GET_KEY ; переход, если буфер не пуст
2.2.2.5. Получение строки символов
Функция 0A позволяет вводить строку длиной до 254 символов, выдавая эхо на экран. Эта функция продолжает ввод поступающих символов до тех пор, пока не нажата клавиша Enter. DS:DX указывает на адрес памяти, куда должна быть помещена строка. Первый байт в этой позиции должен содержать число байтов, отводимых для этой строки. После того как строка введена, второй байт даст число реально введенных символов. Сама строка начинается с третьего байта.
MOV AX,5000h ; указываем адрес области данных
MOV DS,AX ;
MOV DX,0 ;
MOV BX,DX ;
MOV AL,51 ; указываем длину строки
MOV [BX],AL ; заполняем первый байт
MOV AH,0Ah ; номер функции
INT 21h ; получаем строку
Эта функция выполняет команды редактирования строки. Нажатие клавиши Backspace или "стрелка-влево" удаляет символ с экрана без помещения его в память. Расширенные коды игнорируются, пустые строки допускаются (имеется в виду клавиша Enter, которой не предшествует другой символ). Когда вводится больше символов, чем отведено места для строки, лишние символы игнорируются, и включается гудок динамика.