Работа со строками: убрать из строки все цифры - 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.
- Вывод сообщения об успешном выполнении программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д