Теперь, когда вы немного знаете о чтении и записи в программе, давайте напишем простую программу, которая выполняет просто эхо-отображение строки набранных на клавиатуре символов на экране. Все необходимые для этого функции DOS, кроме одной, вы уже знаете. Эта последняя функция необходима, поскольку у вас нет способа завершить программу, когда она закончит выполнение.
Те, кто знаком с языками Паскаль или Си, могут подумать, что программа на Ассемблере просто закончит работу, когда она дойдет до конца основной программы. Но это не так. Чтобы завершить свою программу на Ассемблере, вы должны выполнить явный вызов функции DOS.
Для завершения программы имеется несколько функций DOS, но наиболее предпочтительным методом является выполнение функции DOS с номером 4Ch (или 76 для тех, кто предпочитает десятичный вид). Зная это, можно теперь написать полную программу отображения символов:
DOSSEG
.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
Введите программу точно в таком виде и запустите ее. Вы увидите, что каждый вводимый вами символ выведется дважды: один раз, когда он отображается DOS при вводе с клавиатуры, и второй раз, когда он отображается вашей программой. Важным моментом здесь является то, что все действия: считывания символов клавиш, вывод символов на экран и завершение программы выполняются с помощью функций DOS.
