Заменить в исходном файле русские буквы "а" на "о" - 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)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д