Заменить в исходном файле русские буквы "а" на "о" - Assembler

Узнай цену своей работы

Формулировка задачи:

1.написать программу, заменяющую в исходном файле русские буквы "а" на "о"! разобралась с функциями открытия, чтения, записи и закрытия файлов, но осталась проблема с заменой букв помогите написать эту часть программы

Решение задачи: «Заменить в исходном файле русские буквы "а" на "о"»

textual
Листинг программы
  1. .model small
  2. .386
  3.  
  4. .stack 100h
  5.  
  6. .data
  7. filename db 'hello.txt',0
  8. handle dw ?
  9. buf db 50 dup(?)
  10. err1 db 'file wasn"t opened!!!$'
  11. err2 db 'text wasn"t read!!!$'
  12. err3 db 'writing failed$'
  13.  
  14. .code
  15. start:
  16. mov ax,@data
  17. mov ds,ax
  18. mov es,ax
  19.  
  20. mov ah,3Dh
  21. mov al,2
  22. xor cx,cx
  23. lea dx,filename
  24. int 21h
  25. jc open_error
  26.  
  27. mov handle,ax
  28.  
  29. mov ah,3Fh
  30. mov bx,handle
  31. lea dx,buf
  32. mov cx,50
  33. int 21h
  34. jc read_error
  35.  
  36. lea si,buf
  37. mov cx,ax
  38.  
  39. push cx
  40.  
  41. change:
  42. lodsb
  43.  
  44. cmp al,'a'
  45. jnz skip
  46.  
  47. mov di,si
  48. dec di
  49.  
  50. mov al,'o'
  51.  
  52. stosb
  53.  
  54. skip:
  55. loop change
  56.  
  57. pop cx
  58.  
  59. mov ah,40h
  60. mov bx,handle
  61. lea dx,buf
  62. int 21h
  63. jc write_error
  64.  
  65. jmp exit
  66.  
  67. open_error:
  68. mov ah,09h
  69. lea dx,err1
  70. int 21h
  71.  
  72. jmp exit
  73.  
  74. read_error:
  75. mov ah,09h
  76. lea dx,err2
  77. int 21h
  78.  
  79. jmp exit
  80.  
  81. write_error:
  82. mov ah,09h
  83. lea dx,err3
  84. int 21h
  85.  
  86. exit:
  87. mov ah,3Eh
  88. mov bx,handle
  89. int 21h
  90.  
  91. mov ah,4Ch
  92. mov al,00h
  93. int 21h
  94. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы