#------------------------------------------ # Se piden 10 numeros de un digito # y se localiza a max y a min # Mayo - 2006 #------------------------------------------ .data vector: .int 0,0,0,0,0,0,0,0,0,0 CAD: .ascii "0123456789" max: .int -500 min: .int 500 Pide: .ascii "Dato: " LPide = . - Pide CadMax: .ascii "\nEl mayor es: " LCadMax = .- CadMax CadMin: .ascii "\nEl menor es: " LCadMin = .- CadMin .text .global main main: mov %esp, %ebp movl $0, 8(%ebp) # valor del ciclo # --------------------------Lectura del teclado cicloLee: movl 8(%ebp), %eax # rescato el paso de iteracion cmp $9, %eax jle PideDato jmp MinMax PideDato: movl $4, %eax # funcion write movl $1, %ebx # io movl $Pide, %ecx # cadena a mostrar movl $LPide, %edx # Longitud de lo que se lee int $0x80 # llamada al sistema # ------------------------ movl $3, %eax # funcion read movl $1, %ebx # io movl $2, %edx # Longitud ( el caracter y el enter ) int $0x80 # llamada al sistema # ------------------------ movb (%ecx), %al # se lee el primer byte. (si es 23 entonces es el 2) subl $48, %eax # Es un ascii. (1 = 49 entonces 49 - 48 = 1) # Se almacena en su posicion movl 8(%ebp), %edx movl %eax, vector(, %edx, 4) # se actualiza el paso iterativo leal 8(%ebp), %eax incl (%eax) jmp cicloLee # Busqueda de max y min MinMax: movl $0, 8(%ebp) cicloRevisa: movl 8(%ebp), %ebx # rescato el paso de iteracion cmp $9, %ebx jle Revisa jmp Respuesta Revisa: movl 8(%ebp), %ebx movl vector(, %ebx, 4), %eax cmpl max, %eax jg SwapMax RevMin: movl vector(, %ebx, 4), %eax cmpl min, %eax jl SwapMin next: leal 8(%ebp), %eax incl (%eax) jmp cicloRevisa SwapMax: movl vector(, %ebx, 4), %eax movl %eax, max jmp RevMin SwapMin: movl vector(, %ebx, 4), %eax movl %eax, min jmp next Respuesta: movl $4, %eax # funcion write movl $1, %ebx # io movl $CadMax, %ecx # cadena a mostrar movl $LCadMax, %edx # Longitud de lo que se lee int $0x80 mov max, %eax leal CAD(,%eax,1), %eax mov %eax, %ecx movl $4, %eax movl $1, %ebx movl $1, %edx int $0x80 movl $4, %eax # funcion write movl $1, %ebx # io movl $CadMin, %ecx movl $LCadMin, %edx int $0x80 movl min, %eax leal CAD(,%eax,1), %eax mov %eax, %ecx movl $4, %eax movl $1, %ebx movl $1, %edx int $0x80 Salir: pop %ebp ret