Открытие текстового файла - 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.
- Инициализируем цикл чтения файла:
- Вычисляем начальный адрес файла.
- Перемещаем указатель на начало файла.
- Читаем файл до конца или до ошибки.
- Если произошла ошибка или достигнут конец файла, закрываем файл.
- Выводим прочитанный символ на экран.
- Если файл успешно закрыт, закрываем файл.
- Завершаем программу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д