и вывода на экран содержимого
:prg07_ll.asm - программа чтения и вывода на экран содержимого файла. ;имя которого вводится в командной строке.
.data
filejiame db 128 dup (" ") ;буфер, в который будет помещен путь к файлу
point_fname dd file_name
string db 80 dup (" ")
len_stnng=$-string
point_string dd string
>handle dw 0 дескриптор файла
[size_f dd 0 :размер файла
.code
main: :копируем командную строку в filejiame
;вначале уберем (установкой указателя) ведущие пробелы в командной строке
:перед путем к файлу: movdi ,81h mov al," " mov ex. 128 repe scasb
dec di push di pop si
movax.@data -.адрес сегмента данных - в регистр АХ
mov es.ax :ax в es iTOvcl.ds:[80h] deccl
lea di .filejiame rep movsb push es pop ds
:--------открываем файл--......-----------------.........
moval.OOh :режим доступа - только чтение
Ids dx.point_fname:формируем указатель на имя файла
movah.3dh ;номер функции DOS
int 21h открываем файл
jc exit :переход в случае ошибки
mov handle.ax
;--------определяем размер файла-------------------------
raovbx.ax -.дескриптор файла - в bх mov al .2 xor ex. ex
xordx.dx :CX:DX =0 - нулевое смещение mov ah.42h
int 21h ;в DX:AX возвращается длина файла в байтах jc exit
:если ошибка :формируем полную длину в
edx shl eax.16 shld edx.eax.16 mov size_f.edx сохраним как условие выхода из программы при достижении снизу
;--------устанавливаем указатель на начало файла---.......
mov Ьх.handle :дескриптор файла - в Ьх
mov al .0
xor ex.ex
xordx.dx ;CX:DX =0 - нулевое смещение
mov ah,42h
int 21h :текущий указатель в начале файла
jc exit :если ошибка
;.........читаем файл по lenjstring байт................---
cycl: mov bx.handle :дескриптор файла в Ьх mov cx.lenjsthng
Ids dx.pointjstring :формируем указатель на строку string movah.3fh
:номер функции DOS int 21h :открываем файл jc exit ;переход в случае ошибки
;.........выводим на экран целиком.....---------.......----------
movbx.l стандартный дескриптор - экран
mov cx.len_string
Ids dx.point_string .формируем указатель на строку string movah.40h
;номер функции DOS
int 21h открываем файл
jc exit :переход в случае ошибки
cwde расширяем количество выведенных байт
sub size_f.eax cmp size_f.О
jleexit :достигли конца файла
. jmp cycl
exit: :выход из программы
mov al .1 int 21h
.......
He забывайте после определения размера файла возвращать файловый указатель в нужное место файла.
Содержание Назад Вперед