#------------------------------------------ # Se piden N numeros de un digito # y se localiza a max y a min # Mayo - 2006 #------------------------------------------ .data max: .int -50 min: .int 0xA Pide: .ascii "Dato: " LPide = . - Pide CadMax: .ascii "\nEl mayor es: " LCadMax = .- CadMax CadMin: .ascii "\nEl menor es: " LCadMin = .- CadMin N: .ascii "\N= " LN = .- N .text .global main main: mov %esp, %ebp # Se pide N movl $4, %eax movl $1, %ebx movl $N, %ecx movl $LN, %edx int $0x80 movl $3, %eax movl $1, %ebx movl $2, %edx int $0x80 movb (%ecx), %al subl $48, %eax mov %eax, 12(%ebp) # se guarda N movl $0, 8(%ebp) # valor del ciclo # --------------------------Lectura del teclado cicloLee: movl 8(%ebp), %eax # rescato el paso de iteracion cmp 12(%ebp), %eax jl PideDato jmp MinMax PideDato: movl $4, %eax movl $1, %ebx movl $Pide, %ecx movl $LPide, %edx int $0x80 # ------------------------ movl $3, %eax movl $1, %ebx movl $2, %edx int $0x80 # ------------------------ movb (%ecx), %al subl $48, %eax # Se almacena en su posicion mov 8(%ebp), %edx movl %eax, 16(%ebp, %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 12(%ebp), %ebx jle Revisa jmp Respuesta Revisa: movl 8(%ebp), %ebx movl 16(%ebp, %ebx, 4), %eax cmpl max, %eax jg SwapMax RevMin: movl 8(%ebp), %ebx movl 16(%ebp, %ebx, 4), %eax cmpl min, %eax jl SwapMin next: leal 8(%ebp), %eax incl (%eax) jmp cicloRevisa SwapMax: movl 16(%ebp, %ebx, 4), %eax movl %eax, max jmp RevMin SwapMin: movl 16(%ebp, %ebx, 4), %eax movl %eax, min jmp next Respuesta: movl $4, %eax movl $1, %ebx movl $CadMax, %ecx movl $LCadMax, %edx int $0x80 # conversion a ascii leal max, %eax add $48, (%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 # conversion a ascii leal min, %eax add $48, (%eax) mov %eax, %ecx mov $4, %eax mov $1, %ebx mov $1, %edx int $0x80 movl $4, %eax movl $1, %ebx movl $N, %ecx movl $LN, %edx int $0x80 Salir: pop %ebp ret