Работа со строками: убрать из строки все цифры - Assembler
Формулировка задачи:
Дана строка, содержащая латинские буквы и цифры. Необходимо убрать из строки все цифры
Решение задачи: «Работа со строками: убрать из строки все цифры»
textual
Листинг программы
org 100h jmp start buff db 'ASD1D2F54R712VBCC69D52GHJK' len = $ - buff ; длина строки result db len dup(0) ; буфер для отфильтрованной строки start: xor ax,ax ; AH будет длина строки результата mov si,buff ; адрес источника mov di,result ; ..приёмника mov cx,len ; длина строки юзера readByte: ; lodsb ; берём байт из SI в AL cmp al,'0' ; jb ok ; пропуск, если меньше 0 cmp al,'9' ; ja ok ; пропуск, если больше 9 jmp readByte ; значит цифра. сл.байт.. ok: inc ah ; считаем длину строки stosb ; ..и сохраняем байт в приёмнике loop readByte ; мотаем цикл СХ-раз.. shr ax,8 ; АХ = кол-во букв в строке xor ax,ax ; выход int 16h ; mov ax,4c00h ; int 21h ;
Объяснение кода листинга программы
На языке Assembler был написан код, который удаляет из строки все цифры. Список действий:
- Сохранение длины строки в переменной len.
- Выделение буфера для отфильтрованной строки result.
- Инициализация счётчика циклов readByte в СХ.
- Чтение байта из строки buff в AL.
- Проверка: если AL меньше '0', то переход к следующему байту.
- Проверка: если AL больше '9', то переход к следующему байту.
- Если байт является цифрой, то его сохранение в result.
- Увеличение счётчика длины строки в переменной ah.
- Цикл readByte выполняется до тех пор, пока не будут прочитаны все байты из buff.
- Вычисление длины строки в переменной len путём деления на 8.
- Вывод сообщения об успешном выполнении программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д