Заменить в исходном файле русские буквы "а" на "о" - 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

Объяснение кода листинга программы

  1. Установка начального адреса для сегментов данных и кода, используя модель small
  2. Создание стека размером 100 байт
  3. Объявление переменных:
    • filename (буфер для имени файла)
    • handle (регистр для хранения дескриптора файла)
    • buf (буфер для чтения и записи текста)
    • err1, err2, err3 (буферы для хранения сообщений об ошибках)
  4. Начало выполнения программы (label start)
  5. Открытие файла с помощью функции open, сохранённой в регистре handle, с использованием режима работы 02 (открытие файла для чтения)
  6. Проверка успешности операции открытия файла. Если операция не удалась, программа переходит к метке open_error
  7. Чтение данных из файла в буфер buf с помощью функции read, сохранённой в регистре handle
  8. Проверка успешности операции чтения файла. Если операция не удалась, программа переходит к метке read_error
  9. Замена каждой русской буквы а на о в буфере buf с помощью цикла change
  10. Запись данных из буфера buf в файл с помощью функции write, сохранённой в регистре handle
  11. Проверка успешности операции записи в файл. Если операция не удалась, программа переходит к метке write_error
  12. Закрытие файла с помощью функции close, сохранённой в регистре handle
  13. Завершение работы программы (label exit)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы