问题描述
我正在尝试将维度为3x3的两个矩阵相乘,并将结果存储在新的2d数组中。我对C ++中的算法非常了解,但是对我来说主要的问题是迭代三个循环并在8086情况下设置指针
In c++,below will be the simple code
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
for(int k=0;k<3;k++)
mat3[i][j]+=(mat1[i][k]*mat2[k][j]);
}
}
但是用MASM编码上面的代码似乎非常困难,请帮助我如何处理MASM(8086)中的编码部分 下面是我编写的代码,下面是示例数组,实际上,我知道下面的代码是不完整的,但是我无法考虑如何在有限的寄存器内容数量的情况下走得更远(也许会有一个好的方法但我对此的了解有限)
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
ARR1 DW 01H,02H,03H
DW 05H,06H,07H
DW 08H,09H,02H
ARR2 DW 03H,04H,05H
DW 06H,07H,08H
DW 10H,11H,12H
ARR RES DW 00H,00H,00H
DW 00H,00H
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET ARR1
MOV DX,OFFSET ARR2
MOV AX,OFFSET RES3
MOV CL,00H
MOV CH,03H
MOV BL,03H
MOV BH,00H
LOOP1:
LOOP2:
LOOP3:
ADD CL,03H
SUB CL,09H
JZ END
JMP LOOP1
CODE ENDS
END START
;DOUBTS
;HOW TO USE INTIALIZE THE STARTING ADDRESS OF THE 2D ARRAY WITH SO MYCH
;LIMITED REGISTERS
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)