Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Абель.docx
Скачиваний:
13
Добавлен:
26.11.2018
Размер:
569.84 Кб
Скачать

Int 21h ;Вызов dos

Знак ограничителя "$" можно кодировать непосредственно после cимвольной

строки (как показано в примере), внутри строки: 'Имя покупателя?$', или в

следующем операторе DB '$'. Используя данную операцию, нельзя вывести на

экран символ доллара "$". Кроме того, если знак доллара будет

отсутствовать в конце строки, то на экран будут выводиться все последующие

символы, пока знак "$" не встретиться в памяти.

Команда LEA загружает адрес области NAMPRMP в регистр DX для передачи

в DOS адреса выводимой информации. Адрес поля NAMPRMP, загружаемый в DX по

команде LEA, является oтносительным, поэтому для вычисления абсолютного

адреса данных DOS складывает значения регистров DS и DX (DS:DX).

ПРОГРАММА: ВЫВОД НА ЭКРАН НАБОРА СИМВОЛОВ КОДА ASCII

________________________________________________________________

Большинство из 256 кодов ASCII имеют символьное представление, и

могут быть выведены на экран. Шест. коды 00 и FF не имеют символов и

выводятся на экран в виде пробелов, хотя символ пробела имеет в ASCII

шест. код 20.

На рис.8.1 показана COM-программа, которая выводит на экран полный

набор символов кода ASCII. Программа вызывает три процедуры; B10CLR,

C10SET и D10DISP. Процедура B10CLR очищает экран, а процедура C10SET

устанавливает курсор в положение 00,00. Процедура D10DISP выводит

содержимое поля CTR, которое в начале инициализировано значением 00 и

затем yвеличивается на 1 при каждом выводе на экран, пока не достигнет

шест. значения FF.

__________________________________________________________________________

page 60,132

TITLE ALLASC (COM) Вывод на экран ASCII-символов 00-FF

CODESC SEGMENT PARA 'Code'

ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:NOTHING

ORG 100H

BEGIN: JMP SHORT MAIN

CTR DB 00,'S'

; Основная процедура:

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

MAIN PROC NEAR

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

CALL C10SET ;Установить курсор

CALL D10DISP ;Вывести символ на экран

RET

MAIN ENDP

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

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

B10CLR PROC

MOV AX,0600H

MOV BH,07

MOV CX,0000 ;Левая верхняя позиция

MOV DX,184FH ;Правая нижняя позиция

INT 10H

RET

B10CLR ENDP

; Установка курсора в 00,00:

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

C10SET PROC

MOV AN,02

MOV BN,00

MOV DX,0000

INT 10H

RET

C10SET ENDP

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

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

D10DISP PROC

MOV CX,256 ;256 итераций

LEA DX,CTR ;Адрес счетчика

D20

MOV AH,09 ;Функция вывода символа

INT 21H

Inc ctr ;Увеличить счетчик

LOOP D20 ;Уменьшить CX,

; цикл, если не ноль

RET ;Вернуться

D10DISP ENDP

CODESG ENDS

END BEGIN

__________________________________________________________________________

Рис.8.1. Вывод на экран набора символов кода ASCII

Так как символ доллара не выводится на экран и кроме того коды от

шест.08 до шест.0D являются специальными управляющими cимволами, то это

приводит к перемещению курсора и другим управляющим воздействиям. Задание:

введите программу (рис.8.1), выполните ассемблирование, компоновку и

преобразование в COM-файл. Для запуска программы введите ее имя, например,

В:ASCII.COM.

Первая выведенная строка начинается с пробельного символа (шест.00),

двух "улыбающихся лиц" (шест.01 и 02) и трех карточных символов (шест.03,