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

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

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

Помогите решить задачу Введите массив ASCII – кодов. Замените входящие в массив заглавные латинские буквы на строчные i8086

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

textual
Листинг программы
  1. .model small           
  2.  
  3. .data
  4. arr db 16,0,17 dup('$')
  5.  
  6. .stack 100h            
  7.  
  8. .code                  
  9. start:                 
  10. mov ax,@data   
  11. mov ds,ax
  12.  
  13. mov ah,0Ah
  14. lea dx,arr
  15. int 21h
  16.  
  17. lea si,arr+2
  18. xor ch,ch
  19. mov cl,byte ptr [arr+1]
  20. change:
  21. mov al,byte ptr [si]
  22.  
  23. sub al,41h
  24.  
  25. cmp al,19h
  26. ja skip
  27.  
  28. or byte ptr [si],20h
  29.  
  30. skip:
  31. inc si
  32. loop change
  33.  
  34. mov ah,02h
  35. mov dl,0Ah
  36. int 21h
  37.  
  38. mov ah,02h
  39. mov dl,0Dh
  40. int 21h
  41.  
  42. mov ah,09h
  43. lea dx,arr+2
  44. int 21h
  45.  
  46. mov ah,4Ch
  47. mov al,00h
  48. int 21h
  49. end start

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

  1. Создается маленькая модель памяти: .model small
  2. Объявляется массив данных arr длиной 16 элементов. По умолчанию все элементы массива установлены в $.
  3. Выделяется стек размером 100h.
  4. Начало исполнения программы start:.
  5. Помещается адрес сегмента данных в регистр ax, после чего он загружается в регистр данных ds.
  6. Инициализируется регистр ah значением 0Ah, а в регистр dx загружается адрес массива arr. Затем вызывается прерывание 21h для чтения строки.
  7. Загружается адрес в регистр si, смещенный на 2 байта от начала массива arr. Обнуляется регистр ch, а в регистр cl загружается значение, находящееся во втором байте массива arr, то есть количество введенных символов.
  8. Запускается цикл change, который выполняется столько раз, сколько было введено символов. При этом для каждого символа выполняются следующие действия:
    • Загружается значение байта из памяти, расположенное по адресу si, в регистр al.
    • Из регистра al вычитается значение 41h для преобразования заглавной латинской буквы в строчную.
    • Проверяется, если значение в регистре al больше 19h (значение 'Z' в ASCII), то пропускается.
    • В остальных случаях к значению из si добавляется 20h для преобразования заглавной буквы в строчную.
    • Инкрементируется регистр si.
    • Выполняется цикл loop change для продолжения обработки следующего символа.
  9. Выводится 0Ah (для переноса строки).
  10. Выводится 0Dh (для возврата каретки).
  11. Выводится содержимое массива arr после преобразования заглавных букв в строчные.
  12. Программа завершает свою работу, вызывается прерывание 4Ch с параметром 00h.

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


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

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

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

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

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

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