Esto es un poco extraño, pero hoy estaba hurgando con el ensamblador GNU (quiero poder leer al menos la sintaxis), y estaba tratando de obtener este pequeño ejemplo artificial de mío para trabajar A saber, solo quiero ir de 0 a 100, imprimiendo números todo el tiempo. Así que a los pocos minutos me vienen con esto:Incremento de 0 a 100 en lenguaje ensamblador
# count.s: print the numbers from 0 to 100.
.text
string: .asciz "%d\n"
.globl _main
_main:
movl $0, %eax # The starting point/current value.
movl $100, %ebx # The ending point.
_loop:
# Display the current value.
pushl %eax
pushl $string
call _printf
addl $8, %esp
# Check against the ending value.
cmpl %eax, %ebx
je _end
# Increment the current value.
incl %eax
jmp _loop
_end:
Todo lo que consigo de esta es de 3 a imprimir una y otra vez. Como dije, solo un pequeño ejemplo artificial, así que no te preocupes demasiado por eso, no es un problema de vida o muerte.
(El formateo es un poco desordenado, pero nada importante).
'xorl% eax,% eax' es totalmente equivalente a' MOVL $ 0,% eax', y tarda de 3 bytes menos. Solo digo. :) –