В заданной строке с нулевым завершителем определить номера цифр - Assembler
Формулировка задачи:
Собственно сама задача: В заданной строке с нулевым завершителем определить номера цифр.
Помогите решить и если не сложно, объясните какая команда, что выполняет.
Насколько понял, задаваемая строка может быть любой, например:
И как итог Для строки qwe32056, должно выйти:
1-3 2-2 3-0 4-5 5-6
str1 db "qwe32056",0
Решение задачи: «В заданной строке с нулевым завершителем определить номера цифр»
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
Объяснение кода листинга программы
- В сегменте .data задана исходная строка с нулевым завершением.
- В переменной n хранится количество символов в строке.
- В переменной res будет храниться результат. Эта переменная инициализируется нулями.
- В сегменте .code начинается выполнение кода.
- Первым делом перемещаются сегменты данных и кода в соответствующие регистры.
- В регистре cx содержится количество символов в строке.
- В переменной si хранится адрес первого символа строки.
- В переменной di хранится адрес первого элемента результата.
- Далее начинается цикл, который будет обрабатывать каждый символ строки.
- С помощью команды lodsb в регистр al загружается следующий символ строки.
- Если символ является цифрой, то он преобразуется в десятичное число и записывается в память по адресу, который хранится в переменной di.
- Цикл продолжается до тех пор, пока не будут обработаны все символы строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д