【发布时间】:2017-03-27 17:41:57
【问题描述】:
我必须添加两个 3*3 的单词数组并将结果存储在另一个数组中。这是我的代码:
.data
a1 WORD 1,2,3
WORD 4,2,3
WORD 1,4,3
a2 WORD 4, 3, 8
WORD 5, 6, 8
WORD 4, 8, 9
a3 WORD DUP 9(0)
.code
main PROC
mov eax,0;
mov ebx,0;
mov ecx,0;
mov edx,0;
mov edi,0;
mov esi,0;
mov edi,offset a1
mov esi,offset a2
mov ebx, offset a3
mov ecx,LENGTHOF a2
LOOP:
mov eax,[esi]
add eax,[edi]
mov [ebx], eax
inc ebx
inc esi
inc edi
call DumpRegs
loop LOOP
exit
main ENDP
END main
但这将 a2 和 a1 的所有元素相加。如何逐行逐列添加它们?我想在另一个一维数组中显示每一行的总和结果(列相同)。
【问题讨论】:
-
原谅我的无知,但有什么区别?无论顺序如何,您都可以逐个元素添加矩阵。
-
令人印象深刻的是,您如何设法在单个代码中使用所有三种基本数据类型。
word定义元素,dword加载/存储它,byte解决它。 (也许“使用”是夸大其词,“混合”更准确?) -
@jester 我想在另一个一维数组中显示每一行的总和结果。列也一样。
-
我明白了。嗯,有很多方法可以做到这一点,最直观的是使用两个嵌套循环。
-
外循环迭代行(或列),内循环迭代每行(列)中的元素。在您的情况下,两个循环都转到
3。您可以像在当前代码中一样访问项目,但要遍历需要添加行大小的列(例如3)。请注意,您需要按项目大小进行缩放(您忘记在代码中执行此操作)。