如何将两个矩阵(来自输入)相乘?

问题描述 投票:0回答:1

我想获取 n 并定义两个 n*n 矩阵,然后将它们作为输入,然后将它们相乘,但我不知道如何获取两个矩阵作为输入。

section .data
    input_format: db "%d", 0
    n: dd 1
    array: times n dd 0.0

我尝试定义一个大小为 n 的数组,但它会导致一些错误。

assembly multidimensional-array x86 nasm matrix-multiplication
1个回答
0
投票

您要查找的关键字是行和列主序。 矩阵本质上是一个

array[rowMinimum..rowMaximum, columnMinimum..columnMaximum] of baseType

按照行优先顺序,您将属于同一行的元素彼此相邻存储。 换句话说,

array
(根据上面的声明)的最右边的尺寸首先增加。 要将其放入不必要冗长的代码中,一个 2×2 矩阵:

matrix_a:
.left_column_top_row:     db 42   ; In mathematical notation:
.right_column_top_row:    db  3   ;        ⎡ 42,  3 ⎤
.left_column_bottom_row:  db -9   ;    A ≔ ⎢        ⎥
.right_column_bottom_row: db 99   ;        ⎣ −9, 99 ⎦

首先使用静态数据完成任务。 如果工作正常,您可以转换为动态数据。 查询 n,预留足够的内存空间,并提示输入 元素,最好按行优先顺序,因为它在从左到右的书写系统中最自然,并将数据传递给函数。

© www.soinside.com 2019 - 2024. All rights reserved.