Работа со строками: убрать из строки все цифры - Assembler

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

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

Дана строка, содержащая латинские буквы и цифры. Необходимо убрать из строки все цифры

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

textual
Листинг программы
  1. org  100h
  2. jmp  start
  3.  
  4. buff    db  'ASD1D2F54R712VBCC69D52GHJK'
  5. len     =   $ - buff     ; длина строки
  6. result  db  len dup(0)   ; буфер для отфильтрованной строки
  7.  
  8. start:
  9.      xor   ax,ax         ; AH будет длина строки результата
  10.      mov   si,buff       ; адрес источника
  11.      mov   di,result     ;     ..приёмника
  12.      mov   cx,len        ; длина строки юзера
  13. readByte:                ;
  14.      lodsb               ; берём байт из SI в AL
  15.      cmp   al,'0'        ;
  16.      jb    ok            ; пропуск, если меньше 0
  17.      cmp   al,'9'        ;
  18.      ja    ok            ; пропуск, если больше 9
  19.      jmp   readByte      ; значит цифра. сл.байт..
  20. ok:  inc   ah            ; считаем длину строки
  21.      stosb               ;   ..и сохраняем байт в приёмнике
  22.      loop  readByte      ; мотаем цикл СХ-раз..
  23.      shr   ax,8          ; АХ = кол-во букв в строке
  24.  
  25.      xor   ax,ax         ; выход
  26.      int   16h           ;
  27.      mov   ax,4c00h      ;
  28.      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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы