Как сложить две матрицы - Assembler
Формулировка задачи:
Как сложить две матрицы 3x3 и поместить в третью ?
Решение задачи: «Как сложить две матрицы»
textual
Листинг программы
push ds pop es lea si,matr1 lea bx,matr2 lea di,matr_sum mov cx,9 @@: lodsb add al,[bx] stosb inc bx loop @b
Объяснение кода листинга программы
- push ds — откладывает в стек текущее значение регистра ds
- pop es — восстанавливает из стека предыдущее значение регистра es
- lea si,matr1 — инициализирует регистр si с адресом матрицы matr1
- lea bx,matr2 — инициализирует регистр bx с адресом матрицы matr2
- lea di,matr_sum — инициализирует регистр di с адресом матрицы matr_sum
- mov cx,9 — устанавливает счётчик циклов в 9
- lodsb — загружает в al байт из матрицы matr2, начиная с адреса bx
- add al,[bx] — складывает байт из матрицы matr2 с байтом из матрицы matr1, начиная с адреса bx, и сохраняет результат в матрице matr_sum, начиная с адреса di
- stosb — записывает в матрицу matr_sum, начиная с адреса di, байт, содержащийся в al
- inc bx — увеличивает bx на единицу
- loop @b — выполняет цикл 9 раз (до тех пор, пока счётчик циклов не станет равным нулю)
- На следующей итерации цикла содержимое регистра bx будет равно 10, поэтому после выполнения команды loop произойдёт переход к метке @b, а затем к следующему оператору после неё (первый из них — lodsb).
- Цикл завершится, когда счётчик циклов станет равным нулю (то есть, когда bx станет равным 0).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д