Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
М_Арх инф систем.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
194.56 Кб
Скачать

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

Функция DOS с номером 2 обеспечивает наиболее непосредственный путь вывода символа на экран. Для этого нужно просто поместить 2 в регистр AH и выводимый символ в регистр DL, а затем вызвать DOS с помощью INT 21h. Следующий код отображает каждый введенный символ на экране:

mov ah,1

int 21h получить следующую нажатую клавишу

mov ah,2

mov dl,al ; переместить считанный символ из AL в DL

int 21h ; вывести его на экран

Имеется также ряд других функций для считывания и вывода символов и строк символов. Можно привести пример простой программы, которая выполняет эхо-отображения строки набранных на клавиатуре символов на экране.

Для завершения программы имеется несколько функций DOS, но наиболее предпочтительным методом является выполнение функции DOS с номером 4Ch (или 76 для тех, кто предпочитает десятичный вид). Зная это, можно теперь написать полную программу отображения символов:

.MODEL SMALL

.STACK 100h

.DATA

.CODE

EhcoLoop:

mov ah,1 ; функция DOS ввода с клавиатуры

int 21h ; получить следующую клавишу

cmp al,13 ; это клавиша ENTER?

jz EchoDone ; да, выполняем эхоотображение

mov dl,al ; поместить символ в DL

mov ah,2 ; функция DOS вывода на экран

int 21h ; вывести на экран символ

jnz EchoLoop ; отобразить следующий символ

EchoDone:

mov ah,4ch ; функция DOS завершения программы

Int 21h ; завершить программу

END

4. Метки

Метки - имена, использующиеся в программе для ссылки на числа и строки символов или ячейки памяти. Метки позволяют вам присваивать имена переменным в памяти, значениям и адресам, где находятся конкретные инструкции. Например, в следующей программе, которая вычисляет факториал 5, используется несколько меток:

.MODEL SMALL

.STACK 200h

.DATA

FactorialValue DW ?

Factorial DW ?

.CODE

FiveFactorial PROC

mov ax,@Data

mov ds,ax

mov [FactorialValue],1

mov [Factorial],2

mov cx,4

FiveFactorialLoop:

mov ax,[FactorialValue]

mul [Factorial]

mov [FactorialValue],ax

inc [Factorial]

loop FiveFactorialLoop

ret

FiveFactorial ENDP

END

Метки FactorialValue и Factorial эквивалентны адресам двух 16-битовых переменных. Они используются для последующей ссылки в программе на эти две переменные. Метка FiveFactorial - это имя подпрограммы (процедуры или функции), содержащей код. Она позволяет вызывать этот код в других частях программы. Наконец, метка FiveFactorialLoop эквивалентна адресу инструкции:

mov ax,[FactorialValue],

благодаря которой оператор LOOP в конце программы может осуществлять обратный переход на эту инструкцию.

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