.model tiny
.stack 100h
.data
cr equ 0dh
lf equ 0ah
;данные
;MSG db cr,lf,'Enter path to file: $'
FileName db '1.txt',0
ErrorOpenFile db cr,lf,'Error! Unable to open file!$'
EndF db cr,lf, 'Reading the file is complete!$'
HANDLE dw ?
symbol db ?
.code
main:
mov ax, @data
mov ds, ax
;установка курсора
mov ah,02h
mov bh,00
mov dh,09h
mov dl,01h
int 10h
;открытие файла
mov ah,3dh
mov al,00h
lea dx, FileName
int 21h
lea dx, ErrorOpenFile
jc open_error
mov HANDLE,ax
;чтение файла
read:
mov ah,3fh
mov bx,HANDLE
mov cx,1
lea dx,symbol
int 21h
jc exit
;проверка количества прочитанных символов
cmp ax,cx
;загрузка адреса сообщения об окончании работы
lea dx, EndF
jnz endFile
mov al,symbol
mov bx, 07h
push ax
;изменение цвета
or al, 20h
cmp al, 'a'
jb Printing
cmp al,'z'
ja Printing
mov bx, 02h
;вывод символа с атрибутами
Printing:
mov ah, 09h
mov al, 20h
int 10h
pop dx
;проверка кода "в начало строки"
cmp dl,0dh
jz read
;проверка кода "перейти на новую строку"
cmp dl,0ah
jnz isOut
mov ah,02h
int 21h
mov dl,0dh
isOut:
mov ah,02h
int 21h
jmp read
;запоминание dx для вывода сообщения
endFile:
push dx
;закрытие файла
mov ah,3eh
mov bx,HANDLE
int 21h
;xor ax,ax
;int 16h
xor ax,ax
int 16h
;вывод сообщения об ошибке открытия файла
open_error:
mov ah,09h
int 21h
jmp exit
exit:
mov ah,49h
int 21h
xor ax,ax
int 16h
mov ah,4ch
int 21h
end main