domingo, 29 de septiembre de 2013

Preguntas capitulo 4

4-1. Señale las diferencias entre un compilador y un ensamblador.
 
La diferencia radica en que el compilador es usado en lenguajes de alto nivel para traducer el código fuente a lenguaje máquina, y el lenguaje ensamblador es usado por lenguajes de bajo nivel para realizer dicha traducción.

4-2. ¿Qué es una palabra reservada en un lenguaje ensamblador? Dé dos ejemplos.
 
Ciertas palabras en lenguaje ensamblador están reservadas para sus propósitos propios, y son usadas sólo bajo condiciones especiales. Por categorías, las palabras reservadas incluyen:
 
  • Instrucciones, como MOV y ADD, que son operaciones que la computadora puede ejecutar.
  • Directivas, como END o SEGMENT, que se emplean para proporcionar comandos al ensamblador.
  • Operadores, como FAR y SIZE, que se utilizan en expresiones.
  • Símbolos predefinidos, como @Data y @Model, que regresan información a su programa.

4-3. ¿Cuáles son los dos tipos de identificadores?
 
Nombre, que se refiere a la dirección de un elemento de dato, y Etiqueta, que se refiere a la dirección de una instrucción.
 
4-4. Determine cuales de los nombres siguientes son válidos:
 
a) PC_AT: Válido
 
b) $50: Válido
 
c) @$_Z: Válido
 
d) 34B7: No Válido
 
e) AX: No válido
 
4-5. ¿Cuáles son las diferencias entre una directiva y una instrucción?
 
La diferencia es que la directiva indica al ensamblador que realice una acción específica, como definir un elemento de dato y las instrucciones, como MOV y ADD, son traducidas por el ensamblador a código objeto.
 
4-6. ¿Qué comandos hacen que el ensamblador...
 
a) Imprima un encabezado en la parte superior de una página en el listado de un programa? Comando TITLE.
 
b) Salte a una nueva página? Comando PAGE.
 
4-7. ¿Cuál es el objetivo de cada uno de los tres segmentos descritos en este capítulo?
 
  • Un segmento de pila define el almacén de la pila.
  • Un segmento de datos define los elementos de datos.
  • Un segmento de código proporciona un código ejecutable.
 
4-8. El formato de la directiva SEGMENT es
 
nombre SEGMENT alineación combinar 'clase'
 
Explique el objetivo de
 
a) Alineación: Indica el límite en el que inicia el segmento.
 
b) Combinar: Indica si el segmento se combina con otros segmentos cuando son enlazados después de ensamblar.
 
c) Clase: Es utilizada para agrupar segmentos cuando se enlazan.
 
4-9. a) ¿Cuál es el objetivo de un procedimiento?

Cuando usted solicita la ejecución de un programa, el cargador de programas del DOS utiliza el nombre del procedimiento como el punto de entrada para la primera instrucción a ejecutar.
 
b) ¿Cómo define el inicio y el final de un procedimiento?

La directiva PROC inicia un procedimiento y la directiva ENDP lo finaliza.
 
c) ¿Cuándo definiría un procedimiento como FAR y cuándo como NEAR?

FAR cuando sea el primer procedimiento, y NEAR para cada procedimiento adicional.
 
4-10. Explique que enunciados END particulares tratan la finalización de
 
a) Un programa: La directiva END finaliza todo el programa.
 
b) Un procedimiento: La directiva ENDP finaliza un procedimiento.
 
c) Un segmento: La directiva ENDS finaliza un segmento.
 
4-11. Establezca las diferencias entre los enunciados que finalizan un ensamblado y los enunciados que finalizan una ejecución.

Los enunciados que finalizan un ensamblado es para terminar todo el proceso de ensamblado, en cambio los que finalizan una ejecución solo terminan un segmento o un procedimiento.
 
4-12. Dé los nombres STKSEG, DATSEG, y CDSEG a los segmentos de la pila, de los datos y del código, respectivamente, y codifique el ASSUME necesario.

STKSEG SEGMENT PARA STACK 'Stack'
STKSEG ENDS

DATSEG SEGMENT PARA 'Data'
DATSEG ENDS

CDSEG SEGMENT PARA 'Code'
BEGIN PROC FAR
    ASSUME SS: STKSEG, DS: DATSEG, CS: CDSEG
    MOV AX, DATSEG
    MOV DS, AX
    INT 21H
BEGIN ENDP
CDSEG ENDS
END BEGIN
 
4-13. Considere la instrucción MOV AX, 4C00H utilizada con INT 21H.
 
a) ¿Qué hace la instrucción? Después de la transferencia, se hace la petición para la terminación de un programa.
 
b) ¿Cuál es la finalidad del 4C y el 00? Indicar la dirección de memoria donde queremos mover el valor del registro AX.
 
4-14. Para las directivas simplificadas de segmentos, la directiva .MODEL proporciona los modelos TINY, SMALL, MEDIUM, COMPACT y LARGE. ¿Bajo qué circunstancias se utilizaría cada uno de estos modelos?
 
  • El modelo TINY esta destinado para uso exclusivo de programas .COM, los cuales tienen sus datos, código y pila en un segmento.
  • El modelo SMALL exige que el código quepa en un segmento de 64K y los datos en otro segmento de 64K.
  • El modelo MEDIUM se usaría cuando tengamos más de un segmento de código y un solo segmento de datos.
  • El modelo COMPACT se utilizaría cuando se tenga un segmento de código pero más de 1 segmento de datos.
  • El modelo LARGE se usaría cuando tengamos más de un segmento de código y más de un segmento de datos.
 
4-15. Dé las longitudes, en bytes, generadas por las siguientes directivas de datos
 
a) DD: 4 bytes
 
b) DW: 2 bytes
 
c) DT: 10 bytes
 
d) DQ: 8 bytes
 
e) DB: 1 byte
 
4-16. Defina una cadena de caracteres con nombre TITLE1 que contenga la constante: RGB Electronics.

TITLE1 DB 'RGB Electronics'
 
4-17. Defina los valores numéricos siguientes en elementos de datos FIELDA a FIELDE, respectivamente:
 
a) Un elemento de cuatro bytes con el equivalente hexadecimal del 215 decimal:

FIELDA DD EQU D7H
 
b) Un elemento de un byte con el equivalente hexadecimal del 35 decimal:

FIELDB DB EQU 25H
 
c) Un elemento de dos bytes con un valor no definido:

FIELDC DW EQU (?)
 
d) Un elemento de un byte con el equivalente binario del 25 decimal:

FIELDD DB EQU 00011001
 
e) Un DW con los valores consecutivos 17, 19, 21, 26 y 31:

FIELDE DW EQU 17
FIELDE 19 EQU DW
FIELDE 21 EQU DW
FIELDE 26 EQU DW
FIELDE 31 EQU DW
 
4-18. Muestre el código objeto hexadecimal generado por
 
a) DB '28' = 0001 22 28
 
b) DB 28 = 0001 1C
 
4-19. Determine el código objeto hexadecimal ensamblado para
 
a) DB 28H = 0001 28
 
b) DW 2845H = 0030 2845
 
c) DD 28733AH = 004A 3A732800
 

miércoles, 25 de septiembre de 2013

Instrucciones de programación del lenguaje ensamblador

Instrucciones de transferencia: Son utilizadas para mover los contenidos de los operandos. Cada instrucción se puede usar con diferentes modos de direccionamiento.
  • MOVTransferencia de datos entre celdas de memoria, registros y acumulador.

    Sintaxis: MOV Destino,Fuente

  • MOVS (MOVSB) (MOVSW) - Mover cadenas de bytes o palabras desde la fuente, direccionada por SI, hasta el destino direccionado por DI.

    Sintaxis: MOVS
Instrucciones de carga: Son instrucciones específicas de los registros. Son usadas para cargar en algœn registro bytes o cadenas de bytes.
  • LODS (LODSB) (LODSW): Cargar cadenas de un byte o palabra al acumulador.

    Sintaxis: LODS
  • LAHF: Transfiere al registro AH el contenido de las banderas.

    Sintaxis: LAHF
  • LDS: Cargar el registro del segmento de datos.

    Sintaxis: LDS destino, fuente
  • LEA: Carga la dirección del operando fuente.

    Sintaxis: LEA destino, fuente
  • LES: Carga el registro del segmento extra.

    Sintaxis: LES destino, fuente
Instrucciones de la pila: Estas instrucciones permiten el uso de la pila para almacenar y extraer datos.
  • POP: Recupera un dato de la pila.

    Sintaxis: POP destino
  • POPF: Trae las banderas almacenadas en la pila.

    Sintaxis: POPF
  • PUSH: Coloca una palabra en la pila.

    Sintaxis: PUSH fuente
  • PUSHF: Coloca el valor de las banderas en la pila.

    Sintaxis: PUSHF
En el siguiente link se pueden encontrar algunas instrucciones en una tabla:

http://www.sc.ehu.es/sbweb/webcentro/automatica/web_8051/Contenido/set_8051/set8051.htm


Instrucciones aritméticas:

Existen 8 instrucciones aritméticas básicas: ADD (Suma), SUB (Resta), MUL (Multiplicación sin signo), DIV (División sin signo), IMUL (Multiplicación con signo), IDIV (División con signo), INC (Incremento unitario) y DEC (Decremento unitario).
 
Las instrucciones ADD y SUB permiten realizar sumas y restas sencillas y tienen el siguiente formato:
 
ADD Destino, Fuente
SUB Destino, Fuente
 
Ejemplos:
ADD AX,BX ;AX=AX+BX
ADD AX,10 ;AX=AX+10
SUB AX,BX ;AX=AX-BX
SUB AX,10 ;AX=AX-10
 

Instrucciones de comparación y prueba:
 
Existen dos instrucciones especiales en el microprocesador 8086: CMP y TEST.
CMP (Comparar) compara si dos valores son iguales o diferentes. Su funcionamiento es similar al de la instrucción SUB (restar), sólo que no modifica el operando de destino, solamente modifica las banderas de signo (SF), de cero (ZF) y de acarreo (CF).
 
Por ejemplo:
CMP AX,1235


Por otro lado, la instrucción TEST realiza la operación AND de los operandos especificados sin que el resultado se almacene en algún registro, modificando únicamente ciertas banderas. Su aplicación más común es la de probar si algún bit es cero.
 
Ejemplo:
Test AL,1
Esta instrucción prueba si el bit menos significativo de AL es 1 y
Test AL,128
prueba si el bit más significativo de AL es 1.
 
 

Fuentes consultadas

http://moisesrbb.tripod.com/unidad3.htm

http://www.sisman.utm.edu.ec/libros/FACULTAD%20DE%20CIENCIAS%20ZOOT%C3%89CNICAS/CARRERA%20DE%20INGENIER%C3%8DA%20EN%20INFORMATICA%20AGROPECUARIA/05/PROGRAMACION%20IV/P.%20Avanzada%20lenguaje%20ensamblador.PDF 

http://www.monografias.com/trabajos-pdf/programacion-ensamblador-procesadores/programacion-ensamblador-procesadores.pdf

martes, 17 de septiembre de 2013

Cuestionario Direccionamiento y Registros

A qué tipo de direccionamiento corresponde cada una de las siguientes líneas
 
1. LDA #100            Direccionamiento Inmediato
 
2. MOVE AL,BL        Direccionamiento a Registro

3. MOVE DX,CX       Direccionamiento a Registro

4. MOVE AX,DATO   Direccionamiento Inmediato

5. MOVE AX,[100]    Direccionamiento Inmediato

6. MOVE AX,[BP]     Direccionamiento de Registro Indirecto
 
7. MOVE AX,COUNT[DI]   Direccionamiento de Registro Indirecto con Desplazamiento
 
8. MOVE AX[SI]       Direccionamiento Indirecto

 
 
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)  El CPU es quien crea y controla el flujo de datos


e) El Bus de datos se encarga de transferir datos entre cpu, memoria y periféricos


f) En el 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.- Se usa para almacenar resultados, lectura o escritura desde o hacia los puertos.
 
b) BX: Registro Base.- Sirve como apuntador Base o Indice.
 
c) CX: Registro Contador.- Se utiliza en operaciones de iteración, como un contador que automáticamente se incrementa de acuerdo conel tipo de instrucción usada.
 
d) DX: Registro de Datos.- Se usa como puente para el acceso de datos.
 
e) DS: Registro del Segmento de Datos.- Su función es actuar como policía donde se encuentran los     datos. Cualquier dato ya sea una variable inicializada o no debe estar dentro de este segmento.

f) ES: Registro del Segmento Extra.- Tiene el propósito general de permitir operaciones sobre cadenas, pero también puede ser una extensión del DS.

g) SS: Registro del Segmento de Pila.- Tiene la tarea exclusiva de manejar la posición de memoria donde se encuentra la piola (stack).

h) CS: Registro del Segmento de Código.- Aqui se encuentra el código ejecutable de cada programa.

i) BP: Registro de Apuntadores Base.- Se usa para manipular la pila sin afectar al registro de segmentos SS.

j) SI: Registro Indice Fuente.- Util para manejar bloques de cadenas en memoria. Representa la dirección donde se encuentra la cadena.

k) DI: Registro Indice Destino.- Util para manejar bloques de cadenas en memoria. Representa la dirección donde será copiada la cadena.

l) SP: Registro del Apuntador de Pila.- Apunta a un área específica de memoria que sirve para almacenar datos bajo la estructura LIFO.

m) IP: Registro de Apuntador de Siguiente Instrucción.- Apunta a la siguiente instrucción que será ejecutada en memoria.

n) F: Registro de Banderas.- Indica el estado actual de la máquina y los resultados de procesamiento.

sábado, 7 de septiembre de 2013

Actividad 5 Septiembre

1-1 Determine la configuración binaria en bits los siguientes números:

a) 6 = 00000110

b) 14 = 00001110

c) 22 = 00010110

d) 28 = 00011100

e) 30 = 00011110

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úmero binarios negativos:

a) 00010110 = 11101010

b) 00111101 = 11000011

c) 00111100 = 11000100

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

a) 11001000 = 00111000
 
b) 10111101 = 01000011

c) 11111110 = 00000010

d) 11111111 = 00000001

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

a) Código ASCII de la letra Q = 81 = 51

b) Código ASCII del número 7 = 37

c) 01011101 binario = 93 = 5D

d) 01110111 binario = 231 = E7

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               11182             1086A

1-7 Determine la representación hexadecimal de los numerous decimales siguientes:

a) 19 = 13

b) 33 = 21

c) 89 = 59

d) 255 = FF

e) 4,095 = FFF

f) 63,398 = F7A6

1-8 Proporcione la configuración ASCII, en bits, de los siguientes caracteres de un byte:

a) P = 80 = 01010000

b) p = 112 = 01110000

c) # = 35 = 00100011

d) 5 = 00000101

1-9 ¿Cuál es el objetivo del procesador?

Crear y controlar el flujo de datos, que circulan por el ordenador a partir de instrucciones recibidas de la memoria.

1-10 ¿Cuáles son las dos clases de memoria en la PC y cuáles son sus principales usos?

La memoria RAM sirve para darle velocidad a la computadora además de un almacenamiento volatil en ella.
 
La memoria ROM se utiliza para el arranque de las computadoras, ya que tiene datos sobre el equipo e información que el usuario no debe modificar, por ello son de solo lectura. Estas almacenan también datos importantes como la fecha, la hora, los dispositivos instalados, algún pequeño antivirus, etc., los cuáles el sistema operativo lee, utiliza y modifica como la hora y fecha.
 
1-11 Muestre como el sistema almacena 012345 hex como valor en la memoria.
 
MOV    X, 012345      M[X] <----- M[012345]
 
1-12 Explique lo siguiente:
 
a) Segemento.- Es la parte de una rutina de un ordenador, lo bastante corta para ser almacenada en la memoria interna, y que contiene el código necesario para seleccionar e introducir automáticamente otros segmentos de la rutina.
 
b) Desplazamiento (offset).- Un offset indica el número de posiciones de memoria sumadas a una dirección base para conseguir una dirección absoluta específica. 
 
c) Límite de dirección.-  Límite que determina la maxima dirección lineal permitida para cada registro de segmento.
 
1-13 ¿Cuáles son...
 
a) las tres clases de segmentos
 
- CS: segmento de código.
- DS: segmento de datos.
- SS: segmento de pila.
 
b) su tamaño máximo
 
El tamaño máximo de los registros es 64K.
 
c) y el límite de dirección en que ellos inician?
 
Una dirección entre el 16 decimal y 10 hexadecimal.
 
1-14 Señale el objetivo de cada uno de los tres segmentos.
 
CS: Contiene las instrucciones de máquina que son ejecutadas.
 
DS: Contiene datos, constants y áreas de trabajo definidos por el programa.

SS: Contiene los datos y direcciones que usted necesita guarder temporalmente o para uso de sus llamadas subrutinas.
 
1-15 Explique que registros se utilizan para los siguientes propósitos:
 
a) Sumar y restar.- Los registros SI y DI están disponibles para direccionamiento indexado y sumas y restas.
 
b) Contar los ciclos.- El CX es conocido como el registro contador. Puede contener un valor para controlar el número de veces que un ciclo se repite.
 
c) Multiplicar y dividir.- El registro AX es utilizado para operaciones que implican entrada/salida y la mayor parte de aritmética. Las instrucciones para multiplicar y dividir suponen el uso de AX. El DX tiene el mismo propósito pero para multiplicaciones o divisions más grandes.
 
d) Segmentos de direccionamiento.- El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos.
 
e) Indicación de un resultado.- Los registros de banderas sirven para indicar el estado actual de la máquina y el resultado de procesamiento.
 
f) Desplazamiento de dirección de una instrucción que se va a ejecutar.- El registro apuntador de direcciones de 16 bits contiene el desplazamiento de dirección de la siguiente instrucción que se ejecuta.
 
1-16 Muestre el registro EAX y el tamaño y posición de AH, AL y AX en él.
 
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 de ensamblador para mover el número 25 a los registros siguientes:
 
a) CH
 
MOV    CH, 25      CH <------ M[25]
 
b) CL
 
MOV    CL, 25       CL <------ M[25]
 
c) CX
 
MOV    CX, 25       CX <------ M[25]
 
d) ECX
 
MOV    ECX, 25       ECX <------- M[25]