В заданной строке с нулевым завершителем определить номера цифр - Assembler

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

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

Собственно сама задача: В заданной строке с нулевым завершителем определить номера цифр. Помогите решить и если не сложно, объясните какая команда, что выполняет. Насколько понял, задаваемая строка может быть любой, например:
str1 db "qwe32056",0
И как итог Для строки qwe32056, должно выйти: 1-3 2-2 3-0 4-5 5-6

Решение задачи: «В заданной строке с нулевым завершителем определить номера цифр»

textual
Листинг программы
.data
str1 db "gfr352",0 ; Исходная строка
n = $ - str1 - 1;символов в строке 
res db n dup (0),0
.code
mov ax,@data
mov ds,ax
mov es,ax
mov cx,n
lea si,str1
lea di,res
a: lodsb
    cmp al,'0'
    jb a; не цифра
    cmp al,'9'
    ja a; не цифра
    mov ax,si
    sub ax,offset str1+1
    add al,'0'
    stosb
    loop a

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

  1. В сегменте .data задана исходная строка с нулевым завершением.
  2. В переменной n хранится количество символов в строке.
  3. В переменной res будет храниться результат. Эта переменная инициализируется нулями.
  4. В сегменте .code начинается выполнение кода.
  5. Первым делом перемещаются сегменты данных и кода в соответствующие регистры.
  6. В регистре cx содержится количество символов в строке.
  7. В переменной si хранится адрес первого символа строки.
  8. В переменной di хранится адрес первого элемента результата.
  9. Далее начинается цикл, который будет обрабатывать каждый символ строки.
  10. С помощью команды lodsb в регистр al загружается следующий символ строки.
  11. Если символ является цифрой, то он преобразуется в десятичное число и записывается в память по адресу, который хранится в переменной di.
  12. Цикл продолжается до тех пор, пока не будут обработаны все символы строки.

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


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

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

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