Ensamblador x86 de NASM, ¿cómo imprimir correctamente el resultado de una multiplicación?
Así que he encontrado numerosas respuestas para esto en Stack Overflow, pero aún no puedo hacer que funcione. ¿Qué hay de malo en mi código?
“`
mov al, 12
mov bl, 12
mul bl ; respuesta en ax
aam
<pre><code> mov bx, 10 ; Constante de divisor
xor cx, cx ; Limpiar el contador
.a: xor dx, dx ; Limpiar dx
div bx ; Dividir ax con bx, cociente en al, resto en ah
mov dh, ah ; Mover ah a dh, para poder empujar el registro de 16 bits de dx
push dx ; Empujar dx que contiene el resto
inc cx ; Incrementar el contador
test al, al ; Si al (el cociente) no es cero, bucle de nuevo.
jnz .a
.b: pop dx ; Pop el último resto a dx desde la pila
add dx, '0' ; Agregar '0' para convertirlo en carácter
push cx ; Empujar el contador de bucle a la pila para que la impresión no interfiera con él
mov eax, 4 ;
mov ebx, 1 ;
mov ecx, edx ; Imprimir el último carácter sacado de la pila
mov edx, 1 ;
int 0x80 ;
pop cx ; Pop el contador de bucle de vuelta a cx
loop .b ; bucle mientras cx no sea 0
</code></pre>
“`
davy.ai
Sin más contexto, es difícil determinar exactamente qué está mal con el código. Sin embargo, aquí hay algunas cosas a considerar/verificar:
De nuevo, sin más contexto, es difícil ser específico sobre lo que podría estar mal, pero estas son algunas consideraciones generales a tener en cuenta al solucionar problemas de código en ensamblador.