@HamsterGamer

Почему происходит ошибка сегментирования?

Всем привет, следующий код должен сложить все элементы array и вывести их сумму (по крайней мере так планировалось), однако он выдает segsig и я не понимаю почему. Помогите разобраться:
section .data
array dw 1,1,2,-4,13,14

section .bss
res resd 1

section .text
global _start
_start:
    mov ecx, 6
    mov esi, array
    mov eax, 0
lp:
    add eax, [esi]
    add esi, 4
    loop lp
    mov [res], eax
    mov ecx, [res]
    mov edx, 4
    mov ebx, 1
    mov eax, 4
    int 0x80
  • Вопрос задан
  • 257 просмотров
Решения вопроса 1
includedlibrary
@includedlibrary
Из-за того, что вы в конце не вызвали системный вызов exit. Системный вызов write ожидает строку, а не число, так что перед выводом суммы нужно выполнить преобразование. Кстати, в 32-х битных линуксах системные вызовы принято делать через комманду sysenter, т.к это быстрее, а не через int 0x80.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы