Открытие текстового файла - Assembler
Формулировка задачи:
День добрый. Я в ассемблере разбираюсь очень плохо, но нужна программа, которая выводит ФИО, а затем открывает файл на компьютере, читает его и выводит содержимое на экран. Видел подобную тему, пытался скомпилировать приведенный в ней листинг, но компилятор находит ошибки. Ах да, для дос интел х86. Если кто-то напишет с комментариями буду очень благодарен!
Решение задачи: «Открытие текстового файла»
textual
Листинг программы
- DATA SEGMENT
- path db "result.txt",0 ; имя файла для октрытия
- buf db ?
- str_fio db 10,13, 'Ivanov Ivan', '$'
- DATA ENDS
- SSEG SEGMENT STACK
- db 200 dup(?)
- SSEG ENDS
- CODE SEGMENT
- ASSUME CS:CODE, DS:DATA, SS:SSEG
- start:
- mov ax,DATA ; настроим DS
- mov DS,ax ; на реальный сегмент
- lea dx,str_fio
- mov ah,09h
- int 21h
- ;открываем файл
- mov ax,3d00h ; открываем для чтения
- lea dx,path ; DS:dx указатель на имя файла
- int 21h ; в ax деcкриптор файла
- jc exit ; если поднят флаг С, то ошибка открытия
- mov bx,ax ; копируем в bx указатель файла
- xor cx,cx
- xor dx,dx
- mov ax,4200h
- int 21h ; идем к началу файла
- out_str:
- mov ah,3fh ; будем читать из файла
- mov cx,1 ; 1 байт
- lea dx,buf ; в память buf
- int 21h
- cmp ax,cx ; если достигнуть EoF или ошибка чтения
- jnz close ; то закрываем файл закрываем файл
- mov dl,buf
- mov ah,2 ; выводим символ в dl
- int 21h ; на стандартное устройство вывода
- jmp out_str
- close: ; закрываем файл, после чтения
- mov ah,3eh
- int 21h
- exit: ; завершаем программу
- mov ah,4ch
- int 21h
- CODE ENDS
- end start
Объяснение кода листинга программы
- Указываем сегменты данных и кода, а также сегмент стека.
- Задаем начальный адрес для сегмента данных.
- Объявляем переменные:
- path (путь к файлу).
- buf (буфер для чтения файла).
- str_fio (строка, которую выводим на экран).
- Инициализируем сегментный регистр DS значением из регистра AX.
- Перемещаем указатель на сегмент данных в регистр DS.
- Копируем адрес файла в регистр BX.
- Инициализируем цикл чтения файла:
- Вычисляем начальный адрес файла.
- Перемещаем указатель на начало файла.
- Читаем файл до конца или до ошибки.
- Если произошла ошибка или достигнут конец файла, закрываем файл.
- Выводим прочитанный символ на экран.
- Если файл успешно закрыт, закрываем файл.
- Завершаем программу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д