Даны два множества в виде массивов. Найти сумму (объединение) множеств - Assembler
Формулировка задачи:
Даны два множества заданные в виде массивов А(I) и В(I); I=1,2,..,10. Найти сумму (об’единение) множеств. C(J) - сумма двух множеств есть множество всех элементов принадлежащих А или В. Например, {1,2,3} U {2,3,4} = {1,2,3,4}. Задачу добавления нового элемента массива оформить в виде подпрограммы.
Решение задачи: «Даны два множества в виде массивов. Найти сумму (объединение) множеств»
textual
Листинг программы
mov timeCx, 0 ; Количество элементов в массиве С пока нулевое mov si, offset A ; Указатель в массиве A mov di, offset C ; Указатель в массиве C mov cx, len ; Цикл будет по числу элементов в массиве A copying: mov al, [si] ; Прочли элемент из массива A mov [di], al ; Записали его в массив C inc si ; Продвинули указатель в массиве A inc di ; Продвинули указатель в массиве C inc timeCx ; В массиве C стало на один элемент больше loop copying ; Завернули цикл len раз ; Значение регистра DI тут можно дальше использовать ; как указатель для продолжения заполнения массива C
Объяснение кода листинга программы
- Длина массива A сохраняется в регистре len.
- Начальный адрес массива A сохраняется в регистре si.
- Начальный адрес массива C сохраняется в регистре di.
- Цикл будет выполняться, пока счётчик timeCx не станет равным нулю.
- В каждой итерации цикла считывается очередной элемент массива A в регистр al.
- Этот элемент записывается в массив C по адресу, который хранится в регистре di.
- Указатель в массиве A смещается вперёд на единицу (inc si).
- Указатель в массиве C смещается вперёд на единицу (inc di).
- Счётчик timeCx увеличивается на единицу (inc timeCx).
- Если времяCx не равно нулю, то происходит переход к следующей итерации цикла (loop copying).
- По завершении цикла, значение регистра DI можно использовать для продолжения заполнения массива C.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д