.text # Inicio # Debemos exportar el punto de inicio al ligador. .global main # Por defecto main. main: # Lectura del teclado. # Manda mensaje de solicitud de N movl $4, %eax # funcion write movl $1, %ebx # io movl $Sol, %ecx # cadena a mostrar movl $SSize, %edx # Longitud de lo que se lee int $0x80 # llamada al sistema ######################################### movl $3, %eax # funcion read movl $1, %ebx # io movl $3, %edx # Longitud de lo que se lee int $0x80 # llamada al sistema ######################################### movb (%ecx), %al # se lee el primer byte. (si es 23 entonces es el 2) subl $48, %eax # Como se lee un ascii, hay que restarle 48 (1 = 49 entonces 49 - 48 = 1) movl $10, %ebx # se almacena un 10 para el producto mul %ebx # se multiplica por 10 y se guarda en eax movb 1(%ecx), %bl # se lee el segundo byte. (si es 23 entonces es el 3) subl $48, %ebx # Como se lee un ascii, hay que restarle 48 (1 = 49 entonces 49 - 48 = 1) addl %ebx, %eax # se le suman las unidades a eax. (20 + 3 = 23) movl %eax, %ecx # se transfiere eax a ecx dada la logica del programa (ciclo) ######################################### ciclo: pushl %ecx movl $4, %eax movl $1, %ebx movl $Cad, %ecx movl $CSize, %edx int $0x80 popl %ecx loop ciclo jmp salir salir: movl $0,%ebx movl $1,%eax int $0x80 .data # Seccion de datos Sol: .ascii "Introduce la cantidad: " SSize = . - Sol Cad: .ascii "R" CSize = . - Cad DIF: .ascii "00"