Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Prakt2.doc
Скачиваний:
9
Добавлен:
12.02.2016
Размер:
204.8 Кб
Скачать

1. Використання групи функцій переривання dos int 21h, при цьому номер функції цього переривання вказується в регістрі ah:

AH=02: Вивід символу. Для виводу символу на екран в поточну позицію курсору необхідно помістити код даного символу в pегістр DL. Коди табуляції, повернення каретки й кінця рядка діють звичайним чином.

.code

mov ax,@data

mov ds,ax

mov dl,’A’

MOV AH,02H ;Запит функції виводу

INT 21H ;Викликати DOS

AH=09 Вивід на екран стрічки в базовій версії DOS.

Використання даної функції вимагає визначення текстового повідомлення в області даних, установки в регістрі AH значення 09 (виклик функциии DOS) і виклику переривання INT 21H. У процесі виконання операції кінець повідомлення визначається за ознакою закінчення рядка($), як це показано нижче:

.data

NAMPRMP DB 'Ім'я покупця?','$' ;Повідомлення, що виводиться

.code

mov ax,@data

mov ds,ax

MOV AH,09 ;Запит виводу на екран

LEA DX,NAMPRMP ;Завантаження адреси повідомлення

;MOV DX, OFFSETT NAMPRMP

INT 21H ;Виклик DOS

Знак обмежника “$” можна кодувати безпосередньо після cимвольного рядка (як видно з прикладу), всередині рядка: “Ім'я покупця?$”, або в наступному операторі DB “$”. Використовуючи дану операцію, не можна вивести на екран символ долара “$”. Крім того, якщо знак долара буде відсутній у кінці рядка, то на екран будуть виводитися всі наступні символи, поки знак “$” не зустрітися в пам'яті. Команда LEA завантажує адресу області NAMPRMP у регістр DX для передачі в DOS адреси виведеної інформації. Адреса поля NAMPRMP, що завантажує в DX по команді LEA, є відносною, тому для обчислення абсолютної адреси даних DOS додає значення регістрів DS і DX (DS:DX). Альтернативою може бути використання оператора OFFSETT, який також повертає відносну адресу мітки в середині сегменту даних чи коду.

2. Звертання до пристрою виводу(монітору), як до файлу.

Це здійснюється шляхом використання функцій 40h переривання 21h

При цьому у регістр CX заноситься кількість байт для виводу, а в регістр DX - адреса області виводу. У результаті успішного виконання операції виводу очищається прапорець переносу (CF) і в регістр AX встановлюється кількість виведених символів. При неуспішній операції встановлюється прапорець CF, а код помилки (в даному випадку 6) заноситься в регістр AX. Оскільки регістр AX може містити як довжину даних, так і код помилки, то єдиний спосіб визначити наявність помилки – перевірити прапорець CF.

Нижче наведені команди, що ілюструють використання цієї функції виводу.

.data

DISAREA DB 20 DUP(' ') ;Область даних

.code

mov ax,@data

mov ds,ax

MOV AH,40H ;Запит на вивід

MOV BX,01 ;Вивідний пристрій

MOV CX,20 ;Максимальна кількість байт

LEA DX,DISAREA ;Адреса області даних

INT 21H ;Виклик DOS

Команда LEA завантажує в регістр DX адресу DISAREA для можливості DOS локалізувати інформацію, призначену для виводу. У результаті успішної операції прапорець переносу очищаєся (це можна перевірити), а в регістрі AX установлюється кількість виведених символів. Помилка в даній операції може відбутися, якщо встановлений неправильний файловий номер. В цьому випадку буде встановлений прапорець CF і код помилки (у даному випадку 6) у регістрі AX. Оскільки регістр AX може містити або довжину, або код помилки, то єдиний спосіб визначити стан помилки - перевірити CF.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]