Правильное объявление массива символов - Assembler

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

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

Доброго времени суток. Подскажите, пожалуйста, как правильно объявлять массив символов, чтобы он корректно работал с функцией

scasb

? Мне необходимо задать массив символов, который будет хранить различные разделители слов, т.е пробел и знаки препинания. Затем с клавиатуры вводится строка, в которой нужно найти эти разделители. Я выдергиваю из строки символ, начиная с нулевого, и ищу данный символ в массиве символов. Если я задаю массив символов так:
CharString db " ",",",".","!","?"
То функция scasb находит только проблемы, то есть первостоящий символ в этом массиве, если поменять пробел и запятую местами, будет находить только запятые. Если задать массив таким образом:
CharString db " ,.!?"
То функция scasb вообще ничего не находит Сама функция поиска реализована следующим образом:
mov al,myString[si]
mov di,offset CharString
mov cx,LENGTH CharString
cld
repne scasb

Решение задачи: «Правильное объявление массива символов»

textual
Листинг программы
CharString db " ,.!?",0

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

В данном коде происходит следующее:

  1. Объявляется переменная CharString типа db (в языке Assembler это означает буфер символов).
  2. Значение переменной CharString инициализируется строкой ,.!? (в кавычках).
  3. Последний символ строки (после которого идет ноль) указывает на количество элементов в массиве.
  4. Таким образом, в данном случае массив CharString содержит 5 элементов: `,.,!,?` и ноль. Важно отметить, что в языке Assembler размер строки (и, соответственно, массива) определяется самим массивом, а не указывается явно, как это делается в других языках программирования.

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


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

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

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