Как сложить две матрицы - 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

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

  1. push ds — откладывает в стек текущее значение регистра ds
  2. pop es — восстанавливает из стека предыдущее значение регистра es
  3. lea si,matr1 — инициализирует регистр si с адресом матрицы matr1
  4. lea bx,matr2 — инициализирует регистр bx с адресом матрицы matr2
  5. lea di,matr_sum — инициализирует регистр di с адресом матрицы matr_sum
  6. mov cx,9 — устанавливает счётчик циклов в 9
  7. lodsb — загружает в al байт из матрицы matr2, начиная с адреса bx
  8. add al,[bx] — складывает байт из матрицы matr2 с байтом из матрицы matr1, начиная с адреса bx, и сохраняет результат в матрице matr_sum, начиная с адреса di
  9. stosb — записывает в матрицу matr_sum, начиная с адреса di, байт, содержащийся в al
  10. inc bx — увеличивает bx на единицу
  11. loop @b — выполняет цикл 9 раз (до тех пор, пока счётчик циклов не станет равным нулю)
  12. На следующей итерации цикла содержимое регистра bx будет равно 10, поэтому после выполнения команды loop произойдёт переход к метке @b, а затем к следующему оператору после неё (первый из них — lodsb).
  13. Цикл завершится, когда счётчик циклов станет равным нулю (то есть, когда bx станет равным 0).

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

7   голосов , оценка 4 из 5