Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Флаг специального прерывания TF ⇐ ПредыдущаяСтр 8 из 8
Флаг TF позволяет отлаживать программы. Этот флаг не устанавливается в результате работы процессора, а устанавливается программно с помощью специальной команды. Этот флаг называется также флагом трассировки или пошаговой работы. Ввод-вывод на языке Ассемблера Осуществляется с помощью процедур прерывания (аппаратные и программные). Процедуры обработки аппаратных прерываний расположены в оперативной памяти в блоке F. Они составлены разработчиками аппаратных средств BIOS. Процедуры программных прерываний составлены разработчиками операционной системы. В нулевом блоке оперативной памяти находится Таблица Векторов Прерываний. Это область длиной 1024 байта или 256 * 4: 0000: 0000 прерывание 0 -адрес обработки процедуры прерывания: 0000 : 0004 .......... 0000: 03FB - вектор прерывания Таблица векторов прерываний представляет собой таблицу дальних переходов. В таблице векторов прерываний не все 256 элементов содержат адреса. Векторы прерываний DOS занимают следующие номера в этой таблице: 20h – завершение программы 21h – запрос функций DOS 22h– адрес окончания 23h – адрес обработки Ctrl - Break 24h– обработка неустранимой ошибки 25h– абсолютные режимы чтения 26h– и записи диска. 27h– программа завершена, но остаётся резидентной в памяти. Процедуры обработки прерывания в отличие от обычных процедур заканчиваются командой IRET. Вызов процедур прерывания выполняется командой INTномер прерывания. Команда INT № вызывает следующие действия: 1. помещает в стек три слова: регистр IP, CS и регистр флагов; 2. заменяет регистр IP, CS на соответствующий вектор прерывания; 3. выполняет процедуру обработки прерывания; 4. команда IRET восстанавливает регистр флагов, регистры CS и IP - т.е. осуществляет возврат в точку вызова.
Прерывание DOS int 21h:
Пример использования прерывания 21h Вывод символа «W» на дисплей состоит из трех команд Mov DL, ’ W’; занести символ W в регистр DL Mov AH, 02h; указать нужную функцию AH INT 21h; вызов прерывания DOS 21H Команды ввода и вывода Языки ассемблера обычно не содержат специальных средств операций ввода исходных данных и вывода из нее результатов. Выполнение даже простой операции вывода целого числа из оперативной памяти на экран требуется множество трудоемких действий. Сначала число должно быть преобразовано из двоичного кода в десятичное число, которое потом должно быть преобразовано в строку символов (обычно в коде ASCII). Строка символов в коде ASCII должна быть передана на терминал. Для выполнения простых операций ввода и вывода вводится некоторое расширение языка ассемблера. Это дополнительные команды языка называются макрокомандами. Они представляют собой комбинации команд базового набора, оформленные в виде так называемого «макроопределения». Макрокоманды обрабатываются на этапе трансляции подобно директивам языка ассемблера: происходит обращение к макроопределению и соответствующий текст (так называемое макрорасширение )помещается на место вызывавшей макрокоманды. Исходный текст программы, естественно, увеличивается в длине. Необходимые команды собраны в текстовом файле MAC.lib. Для их применения необходимо подключить библиотеку MAC.lib. Include mac.lib Отключить печать содержимого библиотеки директивой % nolist. Иначе файл листинга будет очень большим. % nolist Include mac.lib % list После подключения библиотеки вновь включить вывод листинга.
Макрокоманды KEY_$2BIN ДЕЙСТВИЕ Преобразует последовательность набранных на клавиатуре символов в число со знаком, помещаемое в регистр AX. ВХОДНЫЕ ЗНАЧЕНИЯ Отсутствуют. ВЫХОДНЫЕ ЗНАЧЕНИЯ Если последовательность символов допустима, то CF=0 и (AX)=полученное число. Если недопустима, то СF=1. ПРИМЕР KEY_$2BIN; Ввести число с клавиатуры JC PRINT ERROR MESSAGE ИМЯ-СТРОКИ ДЕЙСТВИЕ Изображает на экране строку символов, находящуюся в сегменте данных. ВХОДНЫЕ ЗНАЧЕНИЯ ИМЯ-СТРОКИ. ФОРМАТ СТРОКИ Строка должна заканчиваться символом $. Например ILLEGAL DB ‘Ошибочное значение $’. ВЫХОДНЫЕ ЗНАЧЕНИЯ Отсутствуют. ПРИМЕЧАНИЕ Аналогично макроопределению MESSAGE_DX, но MESSAGE берет указатель строки по имени, заданному пользователем, а не из регистра. ПРИМЕР MESSAGE ILLEGAL; Изобразить сообщение ILLEGAL PRINT_NUMBER ДЕЙСТВИЕ Изображает число со знаком, содержащимся в регистре AX. ВХОДНЫЕ ДАННЫЕ (AX) =изображаемое число. ВЫХОДНЫЕ ЗНАЧЕНИЯ Отсутствуют; содержимое регистра AX не изменяется. Популярное:
|
Последнее изменение этой страницы: 2016-04-11; Просмотров: 566; Нарушение авторского права страницы