В заданном массиве чисел удалить заданную последовательность, сколько бы раз она не встречалась - 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
Объяснение кода листинга программы
- Установка начального адреса для регистров DI и AX на старте программы
- Переменная MAS1 содержит массив чисел для удаления последовательности
- Переменная MAS2 содержит последовательность чисел, которую необходимо удалить
- Переменная MAS3 используется, но не определена (возможно, это ошибка в коде)
- Используется цикл для последовательного сравнения чисел в массиве MAS1 и последовательности MAS2
- Если числа совпадают, то они удаляются из массива MAS1 с помощью команды SCASB
- Цикл повторяется до тех пор, пока не будет выполнено условие для выхода из цикла (не найдено совпадение)
- В конце программы возвращается управление в операционную систему Windows Код не тестировался и может содержать ошибки, так как он представлен в виде отрывка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д