section .data
matrix dw 1,2,3,4,5
dw 6,7,8,9,10
dw 11,12,13,14,15
dw 16,17,18,19,20
dw 21,22,23,24,25
;defined as word in order to be used in stack as well as ASCII representing numbers in 2 bytes(1 byte for each digit)
msg db "The smallest value in this matrix is:",10
msgL equ $-msg
section .bss
smallVal resw 2
section .text
global _start
_start:
mov edi, 0 ;will be used in order to indicate when end of matrix has been reached
mov esi,0 ; will be used to indicate when end of row has been reached
mov ecx, [matrix + edi +esi*2]

我正在开发一个程序,它接受矩阵并试图找到矩阵中的最小值。我对编程很陌生,现在只开始编程java大约4个月了,我现在也在学习ASM。我的问题是关于间接寻址。下面的语句实际上会做什么[eax + edx](给定存储在eax和edx中的任意值)。根据一个网站,我发现它有效地找到了有效的地址,但我不确定这意味着什么。
由于
感谢您的快速回复。我的问题实际上在于间接寻址如何适用于寄存器。我已将代码片段附加到此主题的顶部。我的问题在于mov ecx,[matrix + edi + esi * 2]。我不确定这条线的作用。
答案 0 :(得分:0)
代码行
mov ecx, [matrix + edi +esi*2]
从数组中获取一个元素,但这是错误的!由于数组已被定义为单词,因此您必须使用CX而不是ECX。
进一步了解寻址模式 EDI控制外环并将以10为步长从0到40(停止在50)进行 ESI控制内循环并将从0循环到4(停止在5)