Перевод в заглавные буквы Assembler

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

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

Здравствуйте, не ругайте косорукого,подскажите ,пожалуйста, почему не работает перевод ... ( И как найти символ по середине слова... Был в других темах, но не понял код
Листинг программы
  1. .model small
  2. .stack 100h
  3. .data
  4. string db 256 dup ('$')
  5. .code
  6. start:
  7. string1 EQU string[2]
  8. mov ax, @data
  9. mov ds, ax
  10. xor dx,dx
  11. mov ah,0Ah
  12. mov [string], 253
  13. lea dx,string
  14. int 21h
  15. lea si,string1
  16. L1:
  17. mov bl, [si]
  18. cmp bl, 64
  19. jbe konec
  20. cmp bl, 90
  21. ja stroki
  22. add bl, 32
  23. mov [si], bl
  24. jmp konec
  25. stroki:
  26. cmp bl, 97
  27. jb konec
  28. cmp bl, 122
  29. ja konec
  30. mov [si], bl
  31. konec:
  32. inc si
  33. loop L1
  34. mov bl, byte ptr '$'
  35. mov [si], bl
  36. mov ah, 09h
  37. lea dx, [si]
  38. int 21h
  39. mov ax,4c00h
  40. int 21h
  41. end start

Решение задачи: «Перевод в заглавные буквы Assembler»

textual
Листинг программы
  1. .model small
  2. .386
  3.  
  4. .data
  5. string db 255,0,255 dup('$')
  6.  
  7. .stack
  8. db 255 dup(?)
  9.  
  10. .code
  11. start:
  12. mov ax,@data
  13. mov ds,ax
  14.  
  15. mov ah,0Ah
  16. lea dx,string
  17. int 21h
  18.  
  19. lea si,string[2]
  20. l1:
  21. mov bl,byte ptr [si]
  22.  
  23. cmp bl,64
  24. jbe konec
  25.  
  26. cmp bl,90
  27. ja stroki
  28.  
  29. add bl,32
  30. mov byte ptr [si],bl
  31.  
  32. jmp konec
  33.  
  34. stroki:
  35. cmp bl,97
  36. jb konec
  37.  
  38. cmp bl,122
  39. ja konec
  40.  
  41. and bl,11011111b
  42. mov byte ptr [si],bl
  43.  
  44. konec:
  45. inc si
  46. loop l1
  47.  
  48. mov byte ptr [si],'$'
  49.  
  50. mov ah,02h
  51. mov dl,0Dh
  52. int 21h
  53.  
  54. mov ah,02h
  55. mov dl,0Ah
  56. int 21h
  57.  
  58. mov ah,09h
  59. lea dx,string[2]
  60. int 21h
  61.  
  62. mov ah,4Ch
  63. mov al,00h
  64. int 21h
  65. end start

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

  1. Объявлены две переменные в сегменте данных: string (строка) и stack (стек).
  2. Начальный адрес стека установлен в 255,0,255 (для примера, заглавные буквы не переводятся).
  3. Код начинается с сегментации регистров.
  4. Далее выполняется проверка символа в строке на возможность перевода в заглавную букву.
  5. Если символ меньше или равен 90 (U), то он переводится в заглавную букву.
  6. Если символ больше 90 (U), но меньше или равен 122 (z), то он переводится в строчную букву.
  7. Если символ больше 122 (z), то он остается без изменений.
  8. В конце строки добавляется символ '$'.
  9. Выполняется вывод строки на экран.
  10. Выполняется вывод символа возврата каретки и символа перевода строки.
  11. Выполняется вывод строки на экран с использованием функции 9 (D).
  12. Выполняется выход из программы.

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


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

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

15   голосов , оценка 3.467 из 5

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

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

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