miércoles, 30 de octubre de 2013

PROGRAMAS


Ejemplo # 1 : (Implementacion de la condición if-them) 
se pretende realizar un programa en lenguaje ensamblador equivalente al sig. código en C: 

#include <iostream.h>

main()

{
               int a[] = {12, 5, 34, 75, 10, 25};
      int n = 6;

              int max, i;
              for (max = i = 0; i < n; i++)
              if (a[i] > max)
              max = a[i];
              cout << max << end1;
              }



Analisis: 











Codificación en ensamblador: 



SI: registro indice fuente.

DI: Registro indice destino. 

OFFSET: Dice el numero de posiciones de memoria sumadas a una direccion base para conseguir una direccion especifica.

.Data: Data Segment

CMP: Compara dos registros o un registro y una dirección de memoria.

@Data: Para pasar la referencia a AX.

Saltos condicionales: If, Else, then, for, while-do 

JC, JNAE, JB: Comparan con el flag de acarreo se pone a 1. 

LEA: Sirve para usar como puntero a Dx.





Debug:

















Ejemplo # 2 (Implementación de la condición if-then-else) Se pretende realizar un programa en lenguaje ensamblador equivalente al siguiente código en C:
Código:  


#include <iostream.h>
main()
{
int a[] = {-12, 5, -34, -75, -10, 25};
int n = 6;
int max, i;
int npos, nneg;
for (i = npos = nneg = 0; i < n; i++)
if (a[i] > 0)
npos++;
else
nneg++;
cout << “+: “ << npos << “; -: “ << nneg << end1;

}
 

Analisis
Este programa usa un arreglo de numeros negativos y positivos que a diferencia de nuestro primer ejemplo solo eran positivos, fue un poco complicado encontrar 









Codificacion en ensamblador:

Tecleamos el ejemplo 2 en un bloc de notas, para correrlo y ver si es correcto. 



JNZ:  salta si no es igual a cero

CMP:  Compara dos registros o un registro y 1 dirección de memoria

LEA: Sirve para usar como puntero a DX

EQU: Asigna al símbolo contenido en el campo etiqueta el valor de la expresión en el campo operando. (En nuestro programa pusimos el de n equ 6, porque tenemos 6 valores en nuestro arreglo de números) 

JNS: Salta si el signo es positivo




Debug: 




























No hay comentarios:

Publicar un comentario