Работа со строками: убрать из строки все цифры - 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 был написан код, который удаляет из строки все цифры. Список действий:

  1. Сохранение длины строки в переменной len.
  2. Выделение буфера для отфильтрованной строки result.
  3. Инициализация счётчика циклов readByte в СХ.
  4. Чтение байта из строки buff в AL.
  5. Проверка: если AL меньше '0', то переход к следующему байту.
  6. Проверка: если AL больше '9', то переход к следующему байту.
  7. Если байт является цифрой, то его сохранение в result.
  8. Увеличение счётчика длины строки в переменной ah.
  9. Цикл readByte выполняется до тех пор, пока не будут прочитаны все байты из buff.
  10. Вычисление длины строки в переменной len путём деления на 8.
  11. Вывод сообщения об успешном выполнении программы.

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


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

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

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