El bucle en el ensamblaje de Intel x86 va para siempre
Actualmente estoy aprendiendo Intel x86 Assembly, y me he encontrado con un problema al intentar construir un bucle simple, que se repite 10 veces. Se supone que debe detenerse después de los 10 bucles, pero sigue y sigue, para siempre.
Este es el código que estoy usando:
section .data
msg db "Hello, World!", 0x0a
len equ $-msg
section .text
global _start
_start:
mov cx, 10 ; loop counter
_loop_start:
mov ebx, 0x01
mov ecx, msg
mov edx, len
mov eax, 0x04
int 0x80
dec cx
cmp cx, 0
jge _loop_start
_done:
mov ebx, 0x00
mov eax, 0x01
int 0x80
Antes de intentar escribir este código, miréeste tutorial Para hacer aritmética simple.
Lo compilo así:
nasm -f elf64 test.s -o test.o
Y enlace como este:
ld -s -o test_exec test.o
Gracias de antemano, Anickyan