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

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

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

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

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

textual
Листинг программы
.model small            
 
.data
arr db 16,0,17 dup('$')
 
.stack 100h             
 
.code                   
start:                  
mov ax,@data    
mov ds,ax
 
mov ah,0Ah
lea dx,arr
int 21h
 
lea si,arr+2
xor ch,ch
mov cl,byte ptr [arr+1]
change:
mov al,byte ptr [si]
 
sub al,41h
 
cmp al,19h
ja skip
 
or byte ptr [si],20h
 
skip:
inc si
loop change
 
mov ah,02h
mov dl,0Ah
int 21h
 
mov ah,02h
mov dl,0Dh
int 21h
 
mov ah,09h
lea dx,arr+2
int 21h
 
mov ah,4Ch
mov al,00h
int 21h
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
Похожие ответы