miércoles, 25 de septiembre de 2013

Instrucciones de lenguaje ensamblador


Conjunto de instrucciones

 

Las instrucciones están agrupadas en los siguientes grupos y subgrupos:


1.- TRANSFERENCIA DE DATOS.

     a) De propósito general.

     b) Entrada/Salida.

     c) De operando dirección.

     d) Transferencia de banderas.


 2.-INSTRUCCIONES ARITMENTICAS.

     a) Suma.

     b) Resta.

     c) Multiplicación.

     d) División.


  3.-MANIPULACION DE BIT.

     a) Lógicas.

     b) Desplazamiento.

     c) Giro.


  4.-DE CADENA.

  5.-DE TRANSFERENCIA DE PROGRAMA.

      a) Incondicional.

      b) Condicional.

      c) Control de iteraciones.

  6.-DE INTERRUPCIONES.

  7.-CONTROL DEL PROCESADOR.

      A) Operaciones con banderas.

       b) Sincronización extrema.

       c) NOP.

   
 

CONJUNTO DE INSTRUCCIONES.

 

1)      TRANSFERENCIA DE DATOS.

A)      DE PROPOSITO GENERAL

1.-   MOV   destino, Fuente          ;Mueve datos

2.-   PUSH   fuente                          ;Mete datos a la Pila

3.-   POP     destino            ;Saca datos de la Pila

4.-   XCHG  destino, fuente          ;Intercambia contenidos

5.-   XLAT                                          ;Traduce (Uso para tablas)

      

B)       GRUPO DE ENTRADA-SALIDA.

1.-   IN        acumulador, puerto  ;Lee un dato del Puerto

2.-   OUT    puerto, acumulador  ;Saca un dato por el puerto

                 

C)      DE OPERANDO DE DIRECCION.

1.-    LEA    destino, fuente           ;Carga una dirección efectiva

2.-    LDS    destino, fuente           ;Carga el reg. De segmento datos

3.-    LES    destino,  fuente           ;Carga el reg. De segmento extra

                 

D)      TRANSFERENCIA DE BANDERAS.

1.-    LAHF                                        ;Carga al reg. AH con las banderas

2.-    SAHF                                     ;Envía el reg AH al reg. de Banderas

3.-    PUSHF                          ;Guarda las banderas en el stack

4.-    POPF                                        ;Lo que saca del stack lo pone en el

reg. De banderas


2)      INSTRUCCIONES  ARITMETICAS

 

A)      DE SUMA

 

1.-    ADD    destino, fuente         ;Suma de números binarios

2.-    ADC    destino, fuente         ;Suma con carry

3.-    INC     destino             ; Incrementos de 1

4.-    DAA                                        ;Ajuste decimal después de sumar

5.-    AAA                                        ;Ajuste ASCII después de sumar

 

B)       DE RESTA

 

1.-    SUB      destino, fuente         ;resta valores binarios

2.-    SBB      destino, fuente         ;resta con borrow

3.-    CMP     destino, fuente        ;compara datos

4.-    DAS                              ;Ajuste decimal después de restar

5.-   AAS                                          ;Ajuste ASCII después de restar

 

C)      DE MULTIPLICACION.

 

1.-   MUL      fuente (sin signo)                  ;Multiplica sin signo

2.-   IMUL     fuente  (con signo)              ;Multiplica con signo(enteros)

3.-   AAM                                         ;Ajuste ASCII para la multiplicación

D)      DIVISION

       1.-   DIV      fuente (sin signo)                   ;Divide sin signo

2.-   IDIV     fuente  (con signo)                ;Divide con signo

3.-   AAD                                         ;Ajuste ASCII para la división


3)      INSTRUCCIONES DE MANIPULACION DE BITS
 

A)      LOGICAS

 

       1.-   NOT     destino             ;Negación lógica (No)

2.-   AND      destino, fuente        ;Conjunción lógica (y)

3.-   OR        destino, fuente         ;Disyunción lógica (o)

4.-   XOR      destino, fuente         ;OR Exclusiva

5.-   TEST     destino, fuente           ;Prueba bits

6.-    NEG     destino                       ;Negación

 

B)       DE DESPLAZAMIENTO

 

       1.-  SHL      destino, contador      ;Corrimiento lógico a la izquierda

2.-   SAL      destino, contador     ;Corrimiento algebraico a la izq.

3.-   SHR     destino, contador      ;Corrimiento lógico a la Derecha

4.-   SAR     destino, contador     ; Corrimiento algebraico a la Der.
 

C)      GIROS


       1.-   ROL      destino, contador    ;Rotación a la izquierda

2.-   ROR      destino, contador    ;Rotación a la derecha

3.-   RCL       destino, contador    ; Rotación a la izquierda con carry

4.-   RCR      destino, contador    ; Rotación a la iderecha con carry

 
4)      INSTRUCCIONES DE CADENA


      1.-   MOVS      cadena-destino, cadena-fuente           ; Mueve cadenas

             MOVSB  ----- MOVSW


      2.-  LODS        cadena-fuente                                          ;carga cadena

      3.-  STOS         cadena-destino, cadena-fuente           ;Almacena una cadena

            STOSB -----STOSW

 

      4.-  CMPS       cadena-destino, cadena-fuente            ;Compara cadenas

             CMPSB ------CMPSW

 

      5.-   SCAS        cadena-destino                                       ;Explora una cadena

             SCASB ------SCASW

 

5)  INSTRUCCIONES DE TRANSFERENCIA DE PROGRAMA


A)      TRANSFERENCIA INCONDICIONAL

 

1.-  CALL    destino                               ;llama a un procedimiento

2.-   RET      (RETN, RETF)             ;regresa de un procedimiento

3.-   JMP      destino                              ;Salto incondicional

 

B)        TRANSFERENCIA CONDICIONAL

 

1.-  JB/JNAE      (Salta si es bajo / no arriba ni igual)  CF=1

2.-  JAE/JNB      (Salta si esta arriba o igual / no esta bajo)  CF=0

3.-  JBE/JNA      (Salta si es bajo ó igual / no esta arriba)  CF=1 o ZF=1

4.-  JA/JNBE      (Salta si esta arriba / no bajo ni igual)  CF=0 y ZF=0

5.-  JE/JZ            (Salta si fueron iguales)  ZF=1

6.-  JNE/JNZ       (Salta si no es igual a)  ZF=0

7.-  JL/JNGE       (menor/no mas grande ni igual) SF diferente de OF

8.-  JGE/JNL       (mas grande o igual /no menor)  SF=OF

9.-   JLE/JNG      (menor o igual/no mas grande)  ZF=1 o SF diferente   

                            de 0F.

                10.- JG/JNLE       (mas grande/no menos ni igual)  ZF=0 o SF=OF

                11.- JP/JPE         (paridad puesto/si hay paridad par)  PF=1

                12.- JNP/JPO      (paridad no puesta/ paridad impar)  PF=0

                13.- JS                 (bit de signo  puesto)  S=1

                14.- JNS               (bit de signo no puesto)  SF=0

                15.- JC                 (carry puesto)  CF=1

16.- JNC              (carry no puesto)  CF=0

17.- JO                 (sobreflujo puesto)  OF=1

18.- JNO              (sobreflujo no puesto)  OF=1 

 

C)      CONTROL DE ITERACIONES

             

                   1.-    LOOP                    ETIQ     ; Repetir hasta que CX=0

                   2.-    LOOPE/LOOPZ    ETIQ     ;Repetir hasta que CX=0 o Z=1

                   3.-    LOOPNE/LOOPNZ   ETIQ ;Rep. hasta que CX=0 o Z=0

                   4.-    JCXZ                     ETIQ      ;Salta si CX=0

 

6)      INSTRUCCIONES DE INTERRUPCION

 

       1.-    INT   vector                       ;petición de Interrupción

       2.-    IRET                                     ;Regreso de una interrupción     

 

7)      INSTRUCCIONES DE CONTROL DEL PROCESADOR

 

a.     OPERACIONES CON BANDERAS

 

1.-   STC   Pone la bandera de carry   C=1

2.-   CLC   Limpia la bandera de carry  C=0

3.-   CMC  Complementa  la bandera de carry

4.-   STD   Pone la bandera de dirección  D=1

5.-   CLD   Limpia la bandera de dirección D=0

6.-    STI     Pone la bandera de interrupción habilitada   IF=1

7.-   CLI   Limpia la bandera de interrupción habilitada    IF=0

 

b.      instrucciones de control del procesador

                   

                    1.-    HLT        Pone al micro en estado estático.

                    2.-    WAIT     Entra en edo. de espera hasta que se active la línea 

                                           TEST.


8)      INSTRUCCIONES DE CONVERSION

                         1.- CBW      Conversión de Byte a palabra                 

                         2.- CWD      Conversión de palabra a doble palabra

                                             

      

 

 

lunes, 23 de septiembre de 2013


1.     A qué tipo de direccionamiento corresponde cada una de las siguientes líneas

 

 

1.       LDA #100  direccionamiento inmediato

2.       MOVE AL,BL direccionamiento por registro

3. MOVE DX,CX  direccionamiento por registro 

4. MOVE AX,DATO direccionamiento directo 

5. MOVE AX,[100] direccionamiento directo

6. MOVE AX,[BP]   direccionamiento de registro indirecto 

7. MOVE AX,COUNT[DI]  registro indirecto con desplazamiento

8.MOVE AX[SI] inmediato por registro
MIENTO

2. Complete los siguientes enunciados

 
a) La memoria de un computador se compone de unidades de almacenamiento llamadas bits

 
b) byte se agrupa 8 unidades de almacenamiento
 

c) La agrupación de 4 bits (inferiores y superiores se les llama nibble


d)  unidad de control es quien crea y controla el flujo de datos


e) Bus de Datos 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 

 

3. escriba nombre y función de los registros
 
 

a) AX  Es utilizado para operaciones que implican entrada/salida y la mayor parte de la aritmética
 

b) BX Registro base: es el único registro de propósito general que puede ser un índice para direccionamiento indexado.
 

c) CX Registro Contador: Puede contener un valor para controlar el numero de veces que un ciclo se repite o un valor para corrimiento de bits, hacia la izq. o derecha.


d) DX  Registro de Datos: Algunas operaciones de entrada/salida requieren su uso, y las operaciones de multiplicación, división con cifras grandes suponen al DX y al AX trabajando juntos.
 

e) DS

Segmento de Datos: Direcciona el segmento de datos

f) ES

Algunas operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro esta de segmento para manejar el direccionamiento de memoria. En este contexto, el registro ES esta asociado con el registro DI (índice) . un programa que requiere el uso del registro ES puede inicializarlo con una dirección apropiada.
 
g) SS

Segmento de la pila: Contiene datos y direcciones que necesitan guardar temporalmente o para uso de sus “llamadas”  subrutinas.

h) CS Segmento de Código          Contiene las instrucciones de máquina que son ejecutadas. La primera                 instrucción  ejecutable está en el inicio del segmento, y el sistema operativo enlaza a esa localidad para iniciar la ejecución del programa.
 

i)                    BP

ii)                   El registro BP de 16 bits facilita la referencia de parámetros, los cuales son datos y direcciones transmitidos vía lapida.


j) SI Registro índice fuente de 16 bits   es requerido por algunas operaciones con cadenas, El SI está asociado con el registro DS.

k) DI registro índice destino  Es requerido por algunas operaciones con cadenas de caracteres, El DI está asociado con el registro ES.


l) SP

El apuntador de pila IP de 16 bits esta asociado con el registro SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que esta siendo procesada en la pila.
 

m) IP

El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de dirección de la siguiente instrucción que se ejecuta.

El registro IP esta asociado con el registro CS en el sentido de que el IP indica la instrucción actual dentro del segmento de código que se esta ejecutando actualmente 

n) F

Registro de banderas.

            Todas las banderas apagadas:

NV UP DI PL NZ NA PO NC    


Todas las banderas prendidas:

OV DN EI NG ZR AC PE CY


Significado de los bits:

• Overflow NV = no hay desbordamiento

OV = Sí lo hay

• Direction UP = hacia adelante

DN = hacia atrás

• Interrupts DI = desactivadas

EI = activadas

• Sign PL = positivo

NG = negativo

• Zero NZ = no es cero

ZR = sí lo es

• Auxiliary Carry NA = no hay acarreo auxiliar

AC = hay acarreo auxiliar

• Parity PO = paridad non

PE = paridad par

• Carry NC = no hay acarreo

CY = sí lo hay