miércoles, 25 de septiembre de 2013

Actividad # 9

Realizar una investigación y en listar las principales instrucciones de programación en lenguaje ensamblador.
Las herramientas son de suma importancia ya que son las que se hacen cargo de convertir los archivos en código ASCII para que la maquina lo pueda comprender mejor.
En el lenguaje ensamblador existen 3 tipos de instrcciones:
Instrucciones con 2 operandos:
Mov AX, BX
Mov es el nemonico, Ax es el operando 1 y el BX es el operando 2.
Instrucciones con un operando:
INC BX
En este ejemplo INC es un nemonico, mientras que el unico operando es BX.
Intrucciones con 3 operandos:
PUSHF
Donde PUSHF es el nemonico y el unico elemento de nuestra instruccion.
Instrucciones de transferencia de datos: Estas instrucciones son como su nombre lo dice "transfieren datos" algunos ejemplos de ellas son:
  • Mov: Copia o transfiere los datos, de OP2 a OP1, por ejemplo de
    Mov AX,0 ; AX=0
  • LEA : Carga un registro con la direccion de dezplazamiento de alguna variable en memoria. Su formato es LEA REG, Variable, por ejemplo
    Data
    Mensaje db ´Hola´, ´$´
    Code
    -------
    Lea DX, Mensaje   ; DS:DX  -> Mensaje
  • LDS: Inicializa el registro DS.
  • LES: Inicializa el registro ES.

las instrucciones LDS y LES modifican directamente el registro de segmento DS y ES por lo que solo es recomendable para programadores avanzados. 

Instrucciones del ensamblador: 

Transferencia: Mueve el contenido de los operandos
 MOV
MOVS (MOVSB) (MOVSW).

Carga: Son las instrucciones especificas de los registros.
LODS (LODSB) (LODSW) 
LAHF
LDS
LEA
LES

Pila: Permite almacenar datos a la pila. 
POP
POPF
PUSH
PUSHF

NOTA: Todos los mencionados anteriormente tienen como finalidad transferir datos entre celdas de memoria, registros y acumuladores. 

MOV Destino Fuente: Fuente es donde están los datos y destino es hacia donde se moveran.
Un ejemplo claro es 
MOV AX, 0006h
MOV BX,AX
MOV AX, 4C00H
INT 21 H


Instruccion LODS, LODSB, LODSW: El porposito de estos tipos de cadenas es que cargan de un byte o palabra al acumulador. 

LODS: En esta instruccion la cadena que se encuentr en la direccion SI la carga al registro AK o AX y suma o resta 1 segun el estado del DF. 
Por ejemplo tenemos MOV SI, OFFSET VAR1 LODS 

Instruccion LAHF: verifica el estado de las banderas. 
Por ejemplo el SF, ZF ?, PF, CF, el signo de interrogacion quiere decir los bits que abra de un valor. 

LDS destino fuente: Dice la palabra asociada y lo cambia al destino donde le marque el desplazamiento. 

LEA: Carga direccion del operando fuente.

LES: Carga el registro del segmento extra.

POP: Recuperar un dato de pila. 

POPF: Extrae las banderas almacenadas en la pila.

PUSH: Pone la palabra en la pila. 

PUSHF: coloca el valor de la bandera en la pila 



Fuentes: 
http://moisesrbb.tripod.com/unidad3.htm
http://www.monografias.com/trabajos-pdf/programacion-ensamblador-procesadores/programacion-ensamblador-procesadores.pdf






martes, 17 de septiembre de 2013

Actividad 17 de Septiembte


Ejercicio:

  1.    LDA #100 Inmediato.
  2.  
2.    MOVE AL,BL: De Registro.
 
3.    MOVE DX,CX: De registro.
 
4.    MOVE AX,DATO: Inmediato.
 
5.    MOVE AX,[100]: Inmediato de registro.
 
6.    MOVE AX,[BP]: Direccionamiento de registro indirecto.
 
7.    MOVE AX,COUNT[DI]: Registro indirecto con desplazamiento.
 
 
 
8.     MOVE AX[SI]: Inmediato de registro.
 Complete los siguientes enunciados
 
a) La memoria de un computador se compone de unidades de almacenamiento llamadas  Bit.
 
 
 
b) Byte Se agrupa 8 unidades de almacenamiento.
 
 
 
c) La agrupación de 4 bits (inferiores y superiores se les llama nibble.
 
 
 
d) CPU Es quien crea y controla el flujo de datos.
 
 
 
e)  Buses:  Se encarga de transferir datos entre cpu, memoria y periféricos.
 
 
 
f) Bus de control: Se encuentran las diferentes señales encargadas de la sincronización y control del sistema.

 
 
 Escriba nombre y función de los registros
 
 
a) AX Acumulador: Es usado para los resultados de lectura o escritura desde los puertos.
 
 
 
b) BX Registro base: Sirve como un apuntador.
 
  
c) CX Registro contador: Se usa en operaciones como un contador que funciona automaticamente.
 
  
d) DX Registro de datos: Su funcion principal es como un puente para accesar a los datos.
 
 
e) DS Registro del Segmento de datos: Su trabajo principal es encontrar datos.
 
  
f) ES Registro de Segmento extra: Permite operaciones en cadenas.
 
  
g) SS Registro de Segmento de pila: Maneja la posicion de la memoria en donde este la pila, se usa temporalmente o en operaciones internas.
 
  
h) CS Registro de segmento de codigo: Es nuestro registro mas importante porque en el se encuentra el codigo ejecutable.
 
  
i) BP Registro de apuntadores base: Con el puedes manipular la pila pero no afectas los segmentos.
 
  
j) SI Registro indice fuerte: Nos dice donde esta la cadena de valores que necesitemos.
 
  
k) DI Registro indice destino: Nos da la direccion a donde va a ser copiada la cadena.
 
  
l) SP Registro del apuntador de pila: Dice la memoria donde vamos a almacenar.
 
 
m) IP Registro del apuntador de siguiente instruccion: Apunta la instruccion que sera ejecutada en memoria.
 
  
n) F Registro de banderas: Especifica los bits de registros, tiene varios, desde desbordamiento hasta activar o desactivar interrupciones.

 

sábado, 7 de septiembre de 2013

Actividad Lunes 9 de Septiembre


          1-1  Determine la configuración en bits de los siguientes números:
a)   6 = 0110
b)  14= 1110
c)  22= 0001 0110
d)  28= 0001 1100
e)  30= 0001 1110

             1-2   Sume los siguientes números binarios:
         a) 00010101        b) 00111101        c) 00011101    d)01010111
     00001101           00101010            00000011       00111101
     00100010           01100111            00100000       10010100


 1-3 Halle el complemento a dos de los siguientes números binarios. 

    a)  00010110       b)  00111101       c) 00111100
         11101001           11000010           11000011
                     1                       1                      1 
         11101010            11000011          11000100

1-4 Encuentre el valor positivo (absoluto) de los siguientes número binarios:

a) 11001000       b) 10111101        c)11111110     d) 11111111
    00110111           01000010          00000001         00000000
               1                       1                     1                     1 
   00111000           01000011          00000010         00000001


1-5 Determine la representación hexadecimal de los valores siguientes 

    a) Código ASCII de la letra Q = 81  = 4+7=Q
    b) Código ASCII del número 7 = 55 = 3+7 = 7
    c) 0101 1101 binario = 5 - 13 = 5D
    d) 0111 0111 binario = 77 


1-6 sume los números hexadecimales siguientes: 

    a)  23A6         b) 51FD      c) 7779     d)  EABE     e)  FBAC 
         0022             0003          0887         26C4          0CBE
         23C8             5200          8000         0072          1086A


1-7 Determine la representación hexadecimal de los números decimales siguientes, Consulte el apéndice A para ver el método de conversión. También debe verificar el resultado al convertir hexadecimal y al sumar los bits 1. 

    a)19
    b) 33
    c) 89 
    d)255 
    e)4095
    f)63,398


1-8 Proporcione la configuración ASCII en bits de los siguientes caracteres de un byte. Utilice el apéndice B como guía. 

    a) P =  80   =   01001 0000
     b) p = 112  =    0111 0000
     c) # =  35   =   0010  0011
     d) 5 =  53   =   0011 0101


1-9 ¿Cuál es el objetivo del Procesador? 
  Es controlar el flujo de datos, indica operaciones. 


1-10 ¿Cuáles son las 2 clases principales de memoria en la PC y cuales, sus principales usos?
ROM: Memoria de solo lectura,  permite acceso directo a los elementos que la componen, solo puede leer la información. 
RAM: Memoria de acceso al azar, permite acceso desde cualquier lugar en forma directa, que puede leer y/o alterar, se pierde la información cuando la computadora se apaga. 


1-11 Muestre como el sistema almacena 012345 hexadecimal como un valor de memoria:



1-12 Explique lo siguiente: 

     a) Segmento: Es para alacenar las direcciones de retorno de las llamadas           rutinas. Es amas importante que el CS 
      b) Desplazamiento (offset): Permite multiplicar, dividir por potencias de             2, esta en código ejecutable. 
     c) Limite de dirección:  Limite que determina la máxima dirección lineal               permitida para cada registro de segmento.


1-13 ¿Cuáles son?

    A)  Las 3 clases de segmentos:

Un programa consta de 4 tipos de segmentos.
 Cada segmento se direcciona mediante un determinado tipo de registro de segmento:
·         Segmento código (CS): Cada instrucción se direcciona mediante el registro segmento de código y el registro de desplazamiento IP, CS:IP.
·         Segmento de datos (DS): Los datos de direccionan mediante el registro de segmento de dato y un registro de desplazamiento (BX, SI o DI), por ejemplo DS:BX.
·         Segmento de pila (SS): Los datos se direccionan mediante el registro segmento de pila y un registro de desplazamiento (SP o BP), por ejemplo SS:SP.
·         Segmento extra (ES): Igual que el de datos, sustituyendo el registro de segmento, por ejemplo ES:BX.
   
  B)  Su tamaño máximo: El tamaño máximo de todos los segmentos mencionados anteriormente es de 16 bits.

      C)  El límite de dirección en el que ellos inician?





1-14 señale el objetivo de cada uno de los 3 registros de segmentos:
 CS: Aquí es donde se encuentra el código ejecutable de cada programa el cual está directamente ligado a los diferentes modelos de memoria.
DS: Es un registro de segmento cuya función es actuar como la policía, donde se encuentran datos. Cualquier dato el que sea no debe de estar en este segmento.
SS: Este tipo de segmento solo maneja la posición de memoria donde se encuentra la pila (stack), almacena de forma temporal ya sea programa o de computadora.
ES: Permite operaciones sobre cadenas pero también puede ser una extensión del DS


1-15 Explique qué registros se utilizan para los siguientes propósitos:
     a)   Sumar y restar: 
          Sumar: ADD, ADC, AAA, DAA. 
          Restar: SUB, SBB, AAS, DAS.
          b)   Contar los ciclos:
           CX
     c)   Multiplicar y dividir: 
           Multiplicar: MUL, IMUL, AAM.
           Dividir: DIV, IDIV, AAD.
          d)   Segmentos de direccionamiento:
           CS, DS, ES,SS.
     e)   Indicación de un resultado igual a cero:  
           ZF
       f)    Desplazamiento de dirección de una instrucción que se va a ejecutar: CS, SS.


1-16 Muestre el registro EAX y el tamaño de y el tamaño y posición de AH, AL Y AX en el.
El registro EAX es un registro de datos, funcionando de solo 32 bits. El AH AL y BH son para entrar en la parte de 16 bits.


1-17 Codifique las instrucciones en lenguaje ensamblador para mover el numero 25 a los registros siguientes: 




lunes, 2 de septiembre de 2013

Actividad Capitulo #2

Capítulo # 2  
Organización interna del computador.



Arquitectura fundamental de un computador: Cualquier computador que tenga CPU (Unidad Central de Procesamiento) memoria, periféricos y Buses.


Unidad Central de Procesamiento: Esta parte de las computadoras es mejor conocida como el CPU el cual es quien crea y controla el flujo de datos, el cual circula por la computadora a partir de las instrucciones recibidas de la memoria, para trasladar o realizar operaciones sobre los datos. 
Aparte de descodificar las instrucciones y generar impulsos de control incrementa el contador (contador de programa CP)



Unidad Aritmetico-logica (ALU): Se encarga del procesamiento lógico y aritmético de los datos según la instrucción.



Memoria: Se necesita una memoria para poder estar almacenando todas las instrucciones o secuencias que debe de realizar la máquina y así tener una secuencia de instrucciones. También la podemos denominar memoria o segmento de instrucciones pero con la diferencia es que este tipo de memoria guarda de manera temporal.

Memoria ROM: (Read Only Memory) o memoria de solo lectura es la que permite el acceso directo  a cada una de los elementos que la componen, la información contenida puede leerse pero no alterarse.

Memoria RAM: (Random Access Memory) o memoria de acceso al azar permite tener acceso a cualquier tipo de localidades en forma directa, suele llamarse memoria volátil por el hecho de que la información se pierde cuando no tiene energía.

Periféricos: Estos son los encargados de recoger información del mundo externo a la computadora e intercambia con la unidad de procesamiento a  través de entradas y salidas.

Buses: Los buses son los que conducen la información la cual la clasifica en 3 tipos: bus de datos, bus de direcciones y bus de control.

Bus de datos: el Bus de datos por lo general transfiere la información entre el CPU, la memoria los periféricos, es bidireccional ya que su información fluye en ambos sentidos.

Bus de direcciones: Permite seleccionar la localidad de memoria o el periférico del CPU que desea accesar, es unidireccional.

Bus de control: Se encuentran en las diferentes señales encargadas de la sincronización y control del sistema. Es Unidireccional ejemplos son WR (escritura) RD (lectura)  Wait (espera) Ready (listo).