Вывод строки на принтер

Составить программу для ввода с клавиатуры строки символов. Записать строку в буфер 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 = число реально считанных байт (лучший тест для ошибок)

→ Ссылка