Колличество русских букв в массиве (TASM) - Assembler

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

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

Доброго времени суток! Дали задание: "Дан символьный массив, подсчитать в нем количество русских букв" В теории, думаю, это можно сделать с помощью сравнения двух массивов, но это только в теории...Как это реализовать на практике - не понимаю. Очень прошу Вашей помощи!

Решение задачи: «Колличество русских букв в массиве (TASM)»

textual
Листинг программы
.286
.MODEL SMALL
.STACK 100h 
.DATA
 
mass db 'аывпПрцЙИАмаву'
 
.CODE
START: 
 
lea si, mass
 
xor cx, cx
 
cycle:
   mov al, [si]
   or al, al  
   jz short end_
   inc si
 
cmp al, 80h
jb short cycle
cmp al, 0AFh
ja short cycle2
 
inc cx
jmp short cycle
 
cycle2:
   cmp al, 0E0h
   jb short cycle
   cmp al, 0EFh
   ja short cycle
 
inc cx
jmp short cycle
 
end_:  
mov dx, cx
mov ah, 09h
int 21h
 
 
END START

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

Выполняемый код на ассемблере отвечает на вопрос: Сколько русских букв в строке? В данном случае в переменной mass содержится строка аывпПрцЙИАмаву. Код проходит по каждому символу строки. Если символ является русской буквой, то увеличивается счётчик cx. Операция jz short end_ проверяет, является ли текущий символ пустым символом. Если это так, то выполнение программы переходит к метке end_. Операции jb short cycle и ja short cycle проверяют, является ли текущий символ русской буквой. Если это так, то выполнение программы переходит на внутренний цикл. Внутренний цикл также проверяет, является ли текущий символ русской буквой. Если это так, то увеличивается счётчик cx. Операция mov dx, cx копирует значение счётчика cx в регистр dx. Операция mov ah, 09h устанавливает регистр ah равным 9. Операция int 21h выводит значение счётчика dx и значение регистра ah (что соответствует выводу числа и символа ' ' (пробел))

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


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

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

15   голосов , оценка 4.4 из 5
Похожие ответы