Pregunta

Me he encontrado problemas con el código ensamblador. Soy un novato en ensamblador, por lo que parece difícil para mí para resolverlo yo mismo.

La tarea es: "Para encontrar los elementos mínimos y máximos de la matriz"

Todo lo que ya he hecho es la búsqueda de elemento máximo. No puedo saber, cómo hacer de verificación del elemento mínimo y donde debo poner dicha verificación. O, probablemente, que debe reproducirse a través de elementos segunda vez después de encontrar elemento maximal?

Código:

#include <conio.h>
#include <stdio.h>
#include <iostream.h>
void main() {
   int  N = 10, i;
   clrscr();
   // on this platform, int is 16-bit
   int a[] = { 1, 4, -6, 12, -25, 10, 3, -4, 15, 7}, MAX, MIN, RESULT;

    __asm{
    mov cx, N
    lea si, a
    lodsw
    mov bx, ax
    mov dx, ax
    dec cx }
    m:
       __asm{
     lodsw
     cmp dx, ax
     jge m1
     mov dx, ax
       }
    m1:
       __asm{
       loop m
       mov MAX, dx
    }

cout << "Max = " << MAX;
//cout << "Min = " << MIN;
getch();
}
¿Fue útil?

Solución 2

Si es interesante para alguien, aquí está la solución para mi pregunta (me di cuenta que hoy en día con la ayuda de mi tutor):

#include <conio.h>
#include <stdio.h>
#include <iostream.h>
void main() {
   int  N = 10, i;
   clrscr();
   int a[] = { 1, 4, -6, 12, -25, 10, 3, -4, 15, 7}, MAX, MIN, RESULT;

    __asm{
      mov cx, N
      lea si, a
      lodsw
      mov MIN, ax
      mov MAX, ax
      dec cx
    }
    m:
     __asm{
       lodsw
       cmp MIN, ax
       jle m1
       mov MIN, ax
       jmp m2
    }
    m1:
     __asm{
       cmp MAX, ax
       jge m2
       mov MAX, ax
    }
    m2:
     __asm{
       loop m;
    }

cout << "Max = " << MAX << "\n";
cout << "Min = " << MIN;
getch();
}

Algoritmo : si cmp MIN, ax tiene resultado negativo, significa ax es mayor, que MIN. Así guión salta a la etiqueta m1 para comparar el valor ax con MAX. Cuando vuelve cmp MIN, ax valor positivo, el valor guiones cesionarios de registro ax a la variable MIN y después de eso salta a la etiqueta m2 al contador del bucle decremento. Algoritmo de búsqueda de valor máximo funciona de manera similar (m1 etiqueta).

Otros consejos

¿Qué ocurre si se reemplaza "JGE" con "JLE"? Probarlo y ver.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top