Заменить в исходном файле русские буквы "а" на "о" - Assembler
Формулировка задачи:
1.написать программу, заменяющую в исходном файле русские буквы "а" на "о"!
разобралась с функциями открытия, чтения, записи и закрытия файлов, но осталась проблема с заменой букв
помогите написать эту часть программы
Решение задачи: «Заменить в исходном файле русские буквы "а" на "о"»
textual
Листинг программы
.model small .386 .stack 100h .data filename db 'hello.txt',0 handle dw ? buf db 50 dup(?) err1 db 'file wasn"t opened!!!$' err2 db 'text wasn"t read!!!$' err3 db 'writing failed$' .code start: mov ax,@data mov ds,ax mov es,ax mov ah,3Dh mov al,2 xor cx,cx lea dx,filename int 21h jc open_error mov handle,ax mov ah,3Fh mov bx,handle lea dx,buf mov cx,50 int 21h jc read_error lea si,buf mov cx,ax push cx change: lodsb cmp al,'a' jnz skip mov di,si dec di mov al,'o' stosb skip: loop change pop cx mov ah,40h mov bx,handle lea dx,buf int 21h jc write_error jmp exit open_error: mov ah,09h lea dx,err1 int 21h jmp exit read_error: mov ah,09h lea dx,err2 int 21h jmp exit write_error: mov ah,09h lea dx,err3 int 21h exit: mov ah,3Eh mov bx,handle int 21h mov ah,4Ch mov al,00h int 21h end start
Объяснение кода листинга программы
- Установка начального адреса для сегментов данных и кода, используя модель small
- Создание стека размером 100 байт
- Объявление переменных:
- filename (буфер для имени файла)
- handle (регистр для хранения дескриптора файла)
- buf (буфер для чтения и записи текста)
- err1, err2, err3 (буферы для хранения сообщений об ошибках)
- Начало выполнения программы (label start)
- Открытие файла с помощью функции open, сохранённой в регистре handle, с использованием режима работы 02 (открытие файла для чтения)
- Проверка успешности операции открытия файла. Если операция не удалась, программа переходит к метке open_error
- Чтение данных из файла в буфер buf с помощью функции read, сохранённой в регистре handle
- Проверка успешности операции чтения файла. Если операция не удалась, программа переходит к метке read_error
- Замена каждой русской буквы
а
нао
в буфере buf с помощью цикла change - Запись данных из буфера buf в файл с помощью функции write, сохранённой в регистре handle
- Проверка успешности операции записи в файл. Если операция не удалась, программа переходит к метке write_error
- Закрытие файла с помощью функции close, сохранённой в регистре handle
- Завершение работы программы (label exit)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д