Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Функции прерывания MS-DOS (прерывание INT 21H)




Функции прерывания INT 21H работают со стандартным устройством ввода и стандартным устройством вывода, которыми по умолчанию являются клавиатура и монитор.

Некоторые функции данного прерывания приведены в табл.12.4.

Таблица 12.4. Функции прерывания INT 21H

Назначение и номер функции Значения остальных регистров при вызове Значения регистров при возврате
     
Чтение символа из стандартного устройства ввода с эхом Функция читает один символ из буфера стандартного устройства ввода. Если символа нет, то функция переходит в состояние ожидания. Отображает этот символ на стандартное устройство вывода (эхо). AH = 01H AL – ASCII код символа
Вывод символа на стандартное устройство вывода Функция посылает один символ на стандартное устройство вывода и перемещает курсор на одну позицию вперед. AH = 02H DL – символ
Прямой ввод-вывод символов Функция выполняет чтение одного символа из стандартного устройства ввода без эха и без перехода в режим ожидания. Если символ есть, то сбрасывается флаг ZF и считывается ASCII код символа. Если символа нет, то флаг ZF устанавливается и управление передается вызывающей программе. Функция выполняет вывод символа на стандартное устройство вывода. AH = 06H DL – код символа при выводе DL = FFH при вводе При выводе нет.   При вводе: Есть символ в буфере: ZF = 0 AL – ASCII код символа   Нет символа в буфере: ZF = 1

 

 

Окончание табл. 12.4

     
Вывод строки символов Функция выводит на стандартное устройство вывода строку символов, которая оканчивается знаком $. AH = 09H DS:DX – адрес строки
Проверка состояния ввода Функция определяет состояние буфера стандартного устройства ввода AH = 0BH Есть символ в буфере: AL = 0FFH Нет символа в буфере: AL=00H
Определить системную дату Функция определяет системную дату. AH = 2AH CX – Год DH – Месяц DL – День AL – день недели (0 – воскресенье: 1 – понедельник и т.д.)
Определить системное время Функция определяет системное время. AH = 2CH CH – часы (0…23) CL – минуты (0…59) DH – секунды (0…59) DL – сотые доли секунды (0…99)
Завершить программу Функция выполняет завершение текущей программы. AH = 4CH AL – код завершения (0 – успешное выполнение программы)

Рассмотрим пример COM-программы, которая

– выводит на экран приглашение к работе;

– принимает с клавиатуры символ;

– вывод на чистом экране строки принятого символа по типу:

  ААААА ААААА ААААА    

Текст программы на языке ассемблера приведен на рис.12.3.

 

 

codesg SEGMENT PARA 'Code'

ASSUME CS:codesg,DS:codesg,SS:codesg,ES:nothing

ORG 100H

begin: JMP main

;-------------------------------------------------------------

prigl DB 'Введите символ','$'

symb DB?

;-------------------------------------------------------------

main PROC NEAR

CALL ochist;Очистить экран

MOV DX,0000H;Установить курсор в 00,00

CALL ustkurs

;Вывод на экран приглашения

;-------------------------------------------------------------

LEA DX,prigl;Адрес строки приглашения

MOV AH,09H;Функция вывода строки

INT 21H;Вызов прерывания MS-DOS

;-------------------------------------------------------------

;Принять символ с клавиатуры

;-------------------------------------------------------------

MOV AH,00H;Функция чтения символа с ожиданием

INT 16H;Вызов прерывания BIOS

MOV symb,AL;Сохранить символ в памяти

;-------------------------------------------------------------

CALL ochist;Очистить экран

MOV CX,3

MOV DX,0A0AH;Установить курсор в 10,10

m1: CALL ustkurs

PUSH CX

MOV AL,symb

CALL vyvod;Вывод на экран строки

POP CX

INC DH;Изменить номер строки

LOOP m1;Цикл вывода строк

;Завершение программы

;-------------------------------------------------------------

MOV AX,4C00H;Функция завершения программы

INT 21H;Вызов прерывания MS-DOS

;-------------------------------------------------------------

main ENDP

Рис. 12.3. Программа вывода символов на экран

 

;Установка курсора

;-------------------------------------------------------------

ustkurs PROC NEAR;DX уже установлен

MOV AH,02H;Функция установки курсора

MOV BH,00H;Страница №0

INT 10H;Вызов прерывания BIOS

RET

ustkurs ENDP

;-------------------------------------------------------------

;Очистка экрана

;-------------------------------------------------------------

ochist PROC NEAR

MOV AX,0600H;Функция прокрутки экрана

MOV BH,100B;Красный цвет символов

MOV CX,0000H;От 00,00

MOV DX,184FH;До 24,79

INT 10H;Вызов прерывания BIOS

RET

ochist ENDP

;-------------------------------------------------------------

;Вывод символов на экран

;-------------------------------------------------------------

vyvod PROC NEAR

MOV AH,09H;Функция записи символов в позицию курсора

MOV BH,00H;Страница №0

MOV BL,001B;Синий цвет символов

MOV CX,5;Число повторений

INT 10H;Вызов прерывания BIOS

RET

vyvod ENDP

;-------------------------------------------------------------

codesg ENDS

END begin

Окончание рис. 12.3

 

Вопросы для самопроверки

1. Написать на языке ассемблера COM-программу, которая

– выводит на экран приглашение к работе;

– принимает с клавиатуры символ;

– выводит на чистом экране строки принятого символа по типу:

  ААААА АА ААААА AA  

2. Написать на языке ассемблера COM-программу, которая

– выводит на экран приглашение к работе;

– принимает с клавиатуры символ;

– выводит на чистом экране строки принятого символа по типу:

  А АА ААА AAAA  

3. Написать на языке ассемблера COM-программы, которая

– выводит на экран приглашение к работе;

– принимает с клавиатуры символ;

– выводит на чистом экране строки принятого символа по типу:

  ААААА ААAAA ААААА AAAAA  

 

 

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

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

 

 

СПИСОК ЛИТЕРАТУРЫ

1. Абель, П. Язык Ассемблера для IBM PC и программирования / П. Абель. – М.: Высшая школа, 1992. – 447 с.: ил.

2. Голубь, Н.Г. Искусство программирования на Ассемблере. Лекции и упражнения / Н.Г. Голубь. – 2-е изд., испр. и доп. – СПб.: ООО «Диасофт ЮП», 2002. – 656 с.: ил.

3. Ирвин, К. Язык ассемблера для процессоров Intel / К. Ирвин. – 4-е изд. – М.: Издательский дом «Вильямс», 2005. – 912 с.: ил.

4. Кулаков, В.Г. Программирование на аппаратном уровне: специальный справочник / В.Г. Кулаков. – 2-е изд. – СПб.: Питер, 2003. – 847 с.: ил.

5. Пильщиков, В.И. Программирование на языке ассемблера IBM PC / В.И. Пильщиков. – М.: ДИАЛОГ-МИФИ,1999. – 288 с.: ил.

6. Юров, В.И. Assembler. Учебник для вузов / В.И. Юров. – 2-е изд. – СПб.: Питер, 2003. – 637 с.: ил.

 



 





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 1328 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Даже страх смягчается привычкой. © Неизвестно
==> читать все изречения...

2502 - | 2194 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.