Заменить символы A, E, I на $ - Assembler

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

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

Здравствуйте, помогите пожалуйста доделать доп задание к лабораторной, последняя осталась. По заданию дан алфавит в верхнем регистре нужно: 1. согласные буквы от B до L преобразовать в нижний регистр (это вроде сделал) 2. все гласные от A до I (A, E, I) заменить на $ (это не смог) PS. код не мой он был в методички я лишь разобрался с ни как смог
Листинг программы
  1. DATASG SEGMENT PARA
  2. MYTEXT DB 'ABCDEGHIJKLMNOPQRSTUVWXYZ' ,13,10, '$'
  3. DATASG ENDS
  4. STACKSG SEGMENT 'Stack'
  5. DB 12 DUP(?)
  6. STACKSG ENDS
  7. CODESG SEGMENT PARA 'Code'
  8. BEGIN PROC FAR
  9. ASSUME SS:STACKSG, CS:CODESG, DS:DATASG
  10. PUSH DS ; сохраняем сегмент данных в стек
  11. SUB AX, AX ; Обнуляем AX
  12. PUSH AX ; сохраняем содержимое АХ в стек
  13. MOV AX, DATASG ; заносим в сегментный
  14. MOV DS, AX ; регистр DS адрес сегмента данных
  15. LEA BX, MYTEXT ; заносим в BX адрес начального символа переменной Mytext
  16. MOV CX, 19H ; Вносим в СХ значение 17Н - параметр цикла
  17. MOV AH, 09H ;
  18. MOV DX, OFFSET MYTEXT ;
  19. INT 21H ; вывода на экран
  20. MT1:
  21. MOV AH, [BX] ; Метка1: заносим в АН код первого символа переменной Mytext
  22. CMP AH, 42H ; Сравниваем значения регистра AH и кода символа 41Н (символа A)
  23. JB MT2 ; преход к метке 2 если код, лежащий в AH больше 41H (символ старше A в таблице ASCII)
  24. CMP AH, 4CH ; Сравниваем значения регистра AH и кода символа 5АН (символа Z)
  25. JA MT2 ; преход к метке 2 если код, лежащий в AH меньше 5АH (символ младше Z в таблице ASCII)
  26. CALL COR ; вызов процедуры COR
  27.  
  28. MT2:
  29. INC BX ; Метка 2: увеличиваем значение в BX на 1
  30. LOOP MT1 ; Цикл с параметром, лежащим в СХ, передающий управление коду под меткой 1.
  31. LEA DX, MYTEXT ; Заносим в DX адрес переменной MYTEXT для вывода на экран
  32. MOV AH, 09H ; оформляем функцию DOS
  33. INT 21H ; вывода на экран
  34. RET ; воврат
  35. BEGIN ENDP
  36. COR PROC NEAR ; Начало процедуры COR
  37. NOP ; пауза
  38. ADD AH, 20H ; прибавляем к коду символа смещение 20H по таблице ASCII
  39. MOV [BX], AH ; занесение в ячейку с адресом, лежащим в BX, кода символа из AH
  40. RET ; воврат
  41. COR ENDP ; завершение процедуры
  42. CODESG ENDS
  43. END BEGIN

Решение задачи: «Заменить символы A, E, I на $»

textual
Листинг программы
  1. MT2:
  2.         cmp ah, 'A'
  3.         je @@ProcessAEI
  4.         cmp ah, 'E'
  5.         je @@ProcessAEI
  6.         cmp ah, 'I'
  7.         je @@ProcessAEI
  8.         jmp @@SkipProcessAEI
  9. @@ProcessAEI:
  10.         mov ah, '$'
  11.         mov [bx], ah
  12. @@SkipProcessAEI:
  13. ;тут пойдут существующие строки INC BX и прочие

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

  1. Сначала происходит сравнение символа в регистре AH с 'A'.
  2. Если символ равен 'A', то выполняется переход к метке @@ProcessAEI.
  3. Если символ не равен 'A', то происходит сравнение с 'E'.
  4. Если символ равен 'E', то также выполняется переход к метке @@ProcessAEI.
  5. Если символ не равен 'E', то происходит сравнение с 'I'.
  6. Если символ равен 'I', то снова выполняется переход к метке @@ProcessAEI.
  7. Если символ не равен 'I', то происходит переход к метке @@SkipProcessAEI.
  8. Переменная BX увеличивается на единицу.
  9. Выполняется движение символа '$' в регистр AH.
  10. В памяти по адресу, который хранится в BX, записывается символ из регистра AH.

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


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

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

9   голосов , оценка 3.667 из 5

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

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

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