我正在开发一个能够在数组中找到最大元素的程序。出于某种原因,当我尝试将矩阵上的第一个元素移动到 ecx 寄存器中以进行输出(只是测试它)时,我遇到了分段错误。
可以肯定的是,我已经尝试了所有不同类型的寻址模式,但我无法弄清楚为什么我会遇到这个错误并且没有任何工作。
这是我的代码:
segment .data
NUM_ROWS: equ 5
NUM_COLUMNS: equ 5
NUM_ROW_BYTES: equ 10
;Default matrix
matrix: dd 5, 4, 9, 7, 2, 1, 4, 6, 8, 7
;9, 9, 2, 3, 7
;6, 5, 8, 3, 4
;1, 2, 8, 2, 6
matrixLen: equ $-matrix
sum: db "The sum of the last column is: ", 10
;FOR TESTING
works: db 'Works!', 10
worksLen: equ $-works
segment .bss
counter resb 1
segment .text
global main
main:
mov eax, 4 ; system call 4
mov ebx, 1 ; standard output
mov ecx, [matrix + 4]
mov edx, 4
int 0x80