Hola amigos, esoty dando mis primeros pasos en Nasm.
Hago un programa para preguntar las tablas de multiplicar. Por ahora solo trato de imprimirlas, y es que mi problema es que el bucle no continúa, se detiene luego de imprimir el primer resultado. Si alguien puede ayudarme le agradezco .
;; pregunta por las tablas de multiplicar del 2 al 10
%macro read 2
mov eax, 3
mov ebx, 0
mov ecx, %1
mov edx, %2
int 0x80
%endmacro
%macro print 2
mov eax, 4
mov ebx, 1
mov ecx, %1
mov edx, %2
int 0x80
%endmacro
section .data
msg db "Elige una tabla de Multiplicar del 2 al 10", 0xa
lenmsg equ $-msg
nwln db 0xa, 0xd
lennwln equ $-nwln
section .bss
prod resb 3
op resb 1
section .text
global _start
_start:
print msg, lenmsg
read op, 2
mov ecx, 10
mov ax, 1
multiplica:
mov bx, [op]
sub bx, '0'
push ax
mul bx
cmp ax, 90
jg m90
aam ; separa lo que hay en al. ah=decena al=unidad
add al, 48
add ah, 48
mov [prod+0], byte '0'
mov [prod+1], ah
mov [prod+2], al
push ecx
print prod, 3
print nwln, lennwln
pop ecx
pop ax
inc ax
cmp ecx, 1
je exit
loop multiplica
m90:
aam ; separo al. ah=10 al=0
add al, 48
mov [prod+2], al
mov al, ah ; muevo ah=10 a al
aam ; separo lo que hay en al. ah=1, al=0
add al, 48
add ah, 48
mov [prod+1], al ; muevo la decena
mov [prod+0], ah ; muevo la centena
print prod, 3
exit:
mov eax, 1
mov ebx, 0
int 0x80