Вывод строки на принтер
Составить программу для ввода с клавиатуры строки символов. Записать строку в буфер buf и организовать вывод строки на принтер в обратном порядке. Программа должна работать под управлением MS DOS.
.model small
.stack
.data
mess0 DB 13,10,' ENTER STRING : $'
mess1 DB 13,10,' REVERSE STRING: $'
buf DB 20,0,20 DUP (?) ; буфер для сохранения ввода
.code
start:
mov ax,@data
mov ds,ax
MOV AH,9 ; запрос на ввод строки
MOV DX,offset mess0
INT 21h
MOV AH,0Ah ; читаем ввод до клавиши ENTER..
MOV DX, offset buf ; ^^.. и сохраняем его в буфере
INT 21h
MOV AH,9 ; подготовка к выводу строки
MOV DX,offset mess1
INT 21h
;======== вывод зеркальной строки на экран
XOR CX,CX ; вычисляем длину строки в буфере
MOV CL,BYTE PTR[buf+1] ; CX = длинна строки
MOV SI,offset buf+1 ; SI = смещение строки в буфере
ADD SI,CX ; SI = строка+длинна (конец строки)
STD ; DF = 1 (флаг направления = обратный)
print:
LODSB ; считать символ из буфера
INT 29h ; вывести его на экран
LOOP print ; промотать цикл СХ-раз...
mov ax,4C00h ;
int 21h ;
end start
Так вывод осуществляется на экран, но как сделать на принтер, я совершенно не понимаю, помогите переделать, пожалуйста.
Ответы (1 шт):
Автор решения: santavital
→ Ссылка
INT 21h
DOS Fn 40H: писать в файл через описатель
Вход
AH = 40H
BX = описатель файла (=4 для принтера)
DS:DX = адрес буфера, содержащего записываемые данные
CX = число записываемых байт
Выход
AX = код ошибки если CF установлен
AL = число реально считанных байт (лучший тест для ошибок)