配列内の最大要素を見つけることができるプログラムに取り組んでいます。何らかの理由で、マトリックスの最初の要素を出力用の 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