Заменить заглавные буквы строчными в данном слове - Assembler

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

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

Здравствуйте, помогите пожалуйста исправить код так, чтобы надпись 'HELLO, MY NAME IS NASTYA’ оставалась заглавными буквами, а имя NASTYA начиналось с заглавной а все последующие были строчными:
Листинг программы
  1. .model tiny
  2. .data
  3. Mystr db HELLO, MY NAME IS NASTYA , 13, 10, $
  4. .code
  5. .startup
  6. Mov ah, 9
  7. Lea dx, MyStr
  8. Int 21h
  9. Cld
  10. Lea si, Mystr
  11. Mov d1,
  12. Mov ah, 2
  13. Next:
  14. Lodsb
  15. Cmp AL, $
  16. Je Finish
  17. Cmp al, A
  18. Jb Skip
  19. Cmp al, z
  20. Ja Skip
  21. Cmp al, Z
  22. Jbe Letter
  23. Cmp al, a
  24. Jb skip
  25. And al, not 20h
  26. Letter:
  27. Cmp dl,
  28. Je skip
  29. Or al, 20h
  30. Skip:
  31. Mov dl, al
  32. Int 21h
  33. Jmp next
  34. Finish:
  35. Int 20h
  36. end
или этот:
Листинг программы
  1. CODESG ENDS
  2. DATASG SEGMENT PARA
  3. MYTEXT DB 'HELLO, MY NAME NASTYA' ,13,10, '$'
  4. DATASG ENDS
  5. STACKSG SEGMENT 'Stack'
  6. DB 12 DUP(?)
  7. STACKSG ENDS
  8. CODESG SEGMENT PARA 'Code'
  9. BEGIN PROC FAR
  10. ASSUME SS:STACKSG, CS:CODESG, DS:DATASG
  11. PUSH DS ; сохраняем сегмент данных в стек
  12. SUB AX, AX ; Обнуляем AX
  13. PUSH AX ; сохраняем содержимое АХ в стек
  14. MOV AX, DATASG ; заносим в сегментный
  15. MOV DS, AX ; регистр DS адрес сегмента данных
  16. LEA BX, MYTEXT ; заносим в BX адрес начального символа переменной Mytext
  17. MOV CX, 19H ; Вносим в СХ значение 17Н - параметр цикла
  18. MOV AH, 09H ;
  19. MOV DX, OFFSET MYTEXT ;
  20. INT 21H ; вывода на экран
  21. MT1:
  22. MOV AH, [BX] ; Метка1: заносим в АН код первого символа переменной Mytext
  23. CMP AH, 41H ; Сравниваем значения регистра AH и кода символа 41Н (символа A)
  24. JB MT2 ; преход к метке 2 если код, лежащий в AH больше 41H (символ старше A в таблице ASCII)
  25. CMP AH, 5AH ; Сравниваем значения регистра AH и кода символа 5АН (символа Z)
  26. JA MT2 ; преход к метке 2 если код, лежащий в AH меньше 5АH (символ младше Z в таблице ASCII)
  27. CALL COR ; вызов процедуры COR
  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

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

textual
Листинг программы
  1. .model small
  2.  
  3. .data
  4. mystr db 'HELLO, MY NAME IS NASTYA$'
  5.  
  6. .code
  7. start:
  8. mov ax,@data
  9. mov ds,ax
  10.  
  11. cld
  12. lea si,mystr+19
  13. next:
  14. lodsb
  15.  
  16. cmp al,'$'
  17. je finish
  18.  
  19. cmp al,'A'
  20. jb skip
  21.  
  22. cmp al,'z'
  23. ja skip
  24.  
  25. cmp al,'Z'
  26. jbe letter
  27.  
  28. cmp al,'a'
  29. jb skip
  30.  
  31. letter:
  32. or al,20h
  33.  
  34. skip:
  35. mov byte ptr [si-1],al
  36.  
  37. jmp next
  38.  
  39. finish:
  40. mov ah,09h
  41. lea dx,mystr
  42. int 21h
  43.  
  44. mov ah,4Ch
  45. mov al,00h
  46. int 21h
  47. end start

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


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

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

13   голосов , оценка 4.154 из 5

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

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

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