RShow_NCs2.s



####################################
# se imprime N veces el caracter C #
# OJO:  <<< N es de 1 digito >>>   #
####################################

.text			# Inicio

			# Debemos exportar el punto de inicio al ligador.
   .global main		# Por defecto main.


main:
# Pide la cantidad de repeticion
	# Manda mensaje de solicitud de N
	movl    $4,	%eax		# Funcion escritura
        movl    $1,	%ebx		# io
        movl    $PideN,	%ecx		# mensaje
        movl    $LonPN,	%edx		# longitud del mensaje
        int     $0x80			# llamada al sistema
# Lee la cantidad de repeticion
	movl    $3,     %eax		# funcion lectura
        movl    $1,     %ebx		# io
        movl    $2,	%edx		# longitud de lo que se va a leer (1 y el enter 2)
        int     $0x80
# Como se lee un ascii, hay que restarle 48 (1 = 49 entonces 49 - 48 = 1)
	movb	(%ecx),	%al
	subl	$48,	%eax
	pushl	%eax			# Se respalda N en la pila
# Pide el caracter a repetir
	movl	$4,	%eax
	movl	$1,	%ebx
	movl	$PideC,	%ecx
	movl	$LonPC,	%edx
	int	$0x80
# Lee el caracter a repetir
	movl	$3,	%eax		# funcion lectura
	movl	$1,	%ebx
	movl	$2,	%edx		# Longitud
	int	$0x80

	movl	%ecx,	%eax		# se guarda en eax por la logica del programa (ciclo)

	popl	%ecx			# Se obtiene N
	pushl	%eax			# Se guarda el Caracter
ciclo:
	pushl   %ecx			# Se guarda N
        movl    $1,	%ebx
	popl	%eax			# Se lee N
        popl	%ecx			# Se fija el caracter
	pushl	%ecx			# Se guarda el caracter
	pushl	%eax			# Se guarda N
        movl    $1,	%edx
        movl    $4,	%eax
        int     $0x80
        popl	%ecx			# Se pone N en %ecx para ser usada con loop
        loop    ciclo
        jmp     salir

salir:
        movl    $0,%ebx
        movl    $1,%eax
        int     $0x80

.data                                   # Seccion de datos

        PideN:    .ascii  "Introduce la cantidad: "
                LonPN = . - PideN
	PideC:
		.ascii	"Introduce el caracter: "
		LonPC = .-PideC