Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodichka_lab__rab_spo.doc
Скачиваний:
14
Добавлен:
05.09.2020
Размер:
433.66 Кб
Скачать

2.2.12. Вывод символьной строки средствами dos

Вывод текста на экран средствами DOS требует определения текстового сообщения в области данных, установки в регистре АН значения 09 (вызов функции DOS) и указания команды DOS INT 21Н. В процессе выполнения операции конец сообщения определяется по ограничителю ($), как показано ниже:

NAMSTUD DB ’Имя студента’,’$’

.

.

MOV АН,09 ;3апрос вывода на экран

LEA DX,NAMSTUD ;3агрузка адреса сообщения

INT 21H ;Вызов DOS

Знак ограничителя '$' можно кодировать непосредственно после символьной строки, как показано в примере, внутри строки 'Имя покупателя?$' или в следующем операторе DB '$'. Используя данную операцию, нельзя вывести на экран символ доллара "$", Кроме того, если знак доллара будет отсутствовать в конце строки, то на экран будут выводиться все последующие символы, пока знак "$" не встретится в памяти.

Команда LEA загружает адрес области NAMSTUD в регистр DX для передачи в DOS адреса выводимой информации. Адрес поля NAMSTUD, загружаемый в DX по команде LEA, является относительным, поэтому для вычисления абсолютного адреса данных DOS складывает значения регистров DS и DX (DS:DX).

2.2.13. Вывод символов таблицы ascii

Большая часть из 256 символов ASCII имеют символьное представление и могут быть выведены на экран. Некоторые значения, например, 00H и FFH, не соответствуют никаким выводимым символам и представляются на экране как пробел, хотя пробел имеет в ASCII особый код – 20Н. Ниже приведена программа, которая выводит на экран все символы ASCII-таблицы.

TITLE A08DISAS (СОМ) Вывод набора символов ASCII

.MODEL SMALL

.CODE

ORG 100H

BEGIN: JMP SHORT A10MAIN

ASCHAR DB 00, '$'

; Главная процедура:

.286

A10MAIN PROC NEAR

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

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

CALL D10DISPLY ;Вывод символов

MOV AX,4C00H ;Завершение работы

INT 21H

A10MAIN ENDP

; Очистка экрана и установка атрибутов:

BIOSCREEN PROC NEAR

PUSH A ;Сохранение значений регистров

MOV AX,0600H ;Прокрутка целого экрана

MOV BH,07 ;Атрибуты: белый шрифт на черном фоне

MOV CX,0000 ;Верхний левый угол

MOV DX,184FH ;Нижний правый угол

INT 10Н ;Вызов обработчика прерывания

POP A ;Восстановление значений регистров

RET ;Возврат к точке вызова

BIOSCREEN ENDP

; Установка курсора в ячейку 08,00:

C10CURSOR PROC NEAR

PUSHA ;Сохранение значений регистров

MOV АН,02Н ;Запрос на установку курсора

MOV ВН,00 ;Страница 0

MOV DX,0800H ;Строка 8, столбец 0

INT 10Н ;Вызов обработчика прерывания

POPA ;Восстановление значений регистров

RET ;Возврат к точке вызова

C10CURSOR ENDP

; Вывод символов ASCII 00Н - FFH, кроме символов от 08Н до 0DH:

D10DISPLY PROC

PUSHA ;Сохранение значений регистров

MOV СХ,256 ;Подготовить 256 повторений

LEA DX,ASCHAR ;Указать адрес ASCHAR

D20: CMP ASCHAR,08Н ;Код символа меньше 08Н?

JB D30 ;Да, вывести

CMP ASCHAR, 0DH ;Код символа меньше или равен 0DH?

JBE D40 ;Да, пропустить

D30: MOV АН,09Н ;Вывод ASCII-символа

INT 21Н

D40: INC ASCHAR ;Перейти к следующему символу

LOOP D20 ;Уменьшить значение в СХ,

;повторить, если не ноль

POPA ;Восстановление значений регистров

RET ;Возврат к точке вызова

D10DISPLY ENDP

END BEGIN

Соседние файлы в предмете Системное программное обеспечение