我正在研究一個能夠在數組中找到最大元素的程序。出於某種原因,當我嘗試將矩陣的第一個元素移至ecx寄存器以輸出時(僅對其進行測試),我遇到了分段錯誤。在簡單的NASM操作中獲取分段錯誤;將矩陣指針移動到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
您將值傳遞給sys_write。它期望一個字符串/字符的地址。即使你做'mov ecx,矩陣'然後'添加ecx,4',它仍然不起作用。您可以將矩陣定義爲雙字節字節數組或將其轉換爲ASCII碼 – Gunner 2013-03-19 16:47:24
因此,無法自行輸出值?我如何將其轉換爲ASCII? – CodyBugstein 2013-03-19 16:57:21