В заданном массиве чисел удалить заданную последовательность, сколько бы раз она не встречалась - Assembler

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

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

Помогите пожалуйста! Нужно в заданном массиве чисел удалить заданную последовательность чисел, сколько бы раз она не встречалась в массиве. Например: для массива 01234512345124 удалить последовательность 123. В результате должны получить массив: 04545124. Помогите, уже несколько дней сижу в МАСМе, не могу решить...

Решение задачи: «В заданном массиве чисел удалить заданную последовательность, сколько бы раз она не встречалась»

textual
Листинг программы
.486
    .model flat, stdcall
    include \masm32\include\windows.inc
    include \masm32\include\masm32.inc
    include \masm32\include\kernel32.inc
    include \masm32\macros\macros.asm
    includelib \masm32\lib\masm32.lib
    includelib \masm32\lib\kernel32.lib
 
    .data
mas1   db     0,1,2,3,4,5,1,2,3,4,5,1,2,4
mas2   db     1,2,3
mas3   db     ?
 
 
.code
start:
 
lea di, mas1 
lea al, mas2
 
cycl:
repe scasb
 
end start

Объяснение кода листинга программы

  1. Установка начального адреса для регистров DI и AX на старте программы
  2. Переменная MAS1 содержит массив чисел для удаления последовательности
  3. Переменная MAS2 содержит последовательность чисел, которую необходимо удалить
  4. Переменная MAS3 используется, но не определена (возможно, это ошибка в коде)
  5. Используется цикл для последовательного сравнения чисел в массиве MAS1 и последовательности MAS2
  6. Если числа совпадают, то они удаляются из массива MAS1 с помощью команды SCASB
  7. Цикл повторяется до тех пор, пока не будет выполнено условие для выхода из цикла (не найдено совпадение)
  8. В конце программы возвращается управление в операционную систему Windows Код не тестировался и может содержать ошибки, так как он представлен в виде отрывка.

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


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

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

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