lunes, 30 de septiembre de 2013

Capitulo IV preguntas


1.- Cuáles son las diferencias entre un compilador y un ensamblador?

Un compilador
Es un programa que, a su vez, traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente. Usualmente el segundo lenguaje es código máquina, pero también puede ser simplemente texto. Este proceso de traducción se conoce como compilación.

Ensamblador
El término ensamblador (del inglés assembler) se refiere a un tipo de programa informático que se encarga de traducir un fichero fuente escrito en un lenguaje ensamblador, a un fichero objeto que contiene código máquina, ejecutable directamente por la máquina para la que se ha generado. El propósito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de programas, ya que escribir directamente en código binario, que es el único código entendible por la computadora, es en la práctica imposible.

2.- Que es una palabra reservada en un lenguaje ensamblador?

Ciertas palabras en lenguaje ensamblador están reservadas para propósitos propios, y son usadas solo bajo condiciones especiales. Por categorías, las palabras reservadas incluyen

Instrucciones, cómo 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; y
Símbolos preferidos, como @Data y @Mod que regresan información a su programa.
El uso de una palabra reservada para un propósito equivocado que el ensamblador genere un mensaje de error. El apéndice C muestra una lista de palabras reservadas del lenguaje ensamblador.

3.- Cuales son los dos tipos de identificadores?

Un identificador es un nombre que se aplica a elementos en el programa. Los dos tipos de identificadores son: 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. Las mismas reglas se aplican tanto para los nombres como para las etiquetas.

4.- Determine cuáles de los nombres siguientes son válidos?

a) PC_AT

b) $50

c)@$_Z

d) 34B7 No es válido por que inicia con número

e) AX solo es válido si se prefiere al registro AX

5.- Cuales son las diferencias entre una directiva y una instrucción?

Directivas: son órdenes para el ensamblador y no tienen
Traducción a código máquina.
INTERRUPCIONES
Se producen mediante la activación de los terminales #IPL2­0 que
Codifican el nivel de petición (desde nivel 0, ausencia de petición,
Hasta nivel 7, máxima prioridad o NMI).
Una interrupción se atiende si su nivel de petición supera al fijado en
La máscara de interrupción (bits I2­0 del registro SR), excepto para
El nivel 7, que siempre se atenderá

6.- Que comandos hacen que el ensamblador:
(a) imprima un encabezado en la parte superior de una página en el listado de un programa
TITLE
(b) salte a una nueva pagina
7.- Cual es el objetivo de cada uno de los tres segmentos descritos en este capítulo?

8.- El formato de la directiva SEGMENT es
Nombre SEGMENT alineación combinar clase
Explicar el objetivo de (a) alineación: (b) combinar: (c) clase.
(a) Provoca alineación de un segmento en una frontera, tal como la de un párrafo.

9.-(a) Cual es el objetivo de un procedimiento? (b) Como define el inicio y el final de un procedimiento? (c) Cuando define un procedimiento como FAR y cuando como NEAR?

(a) Proporciona una sección de código relacionado, como una subrutina

10.- Explique qué enunciados END particulares tratan la finalización de (a) un programa; (b) un procedimiento; (c) un segmento.
(a) END; (c) ENDS

11.- Establezca las diferencias entre los enunciados que finalizan un encabezado y los enunciados que finalizan una ejecución.

La directiva END le indica al ensamblador que no existen más instrucciones por ensamblar, instrucciones que hagan el control regrese al sistema operativo son MOV AX, $C00H e INT 21H

12.-De 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

ASSUME SS: STKSEG, DS: DATASEG, CS: CDSEG

13.- considere las instrucciones MOV AX, 4C00H utilizadas con INT 21H. (a) Que hace la instrucción (b) Cual es la finalidad del 4C y el 00?

14.- para las directivas simplificadas de segmentos, la directiva, MODEL proporciona los modelos TINY, SMALL, MEDIUM, COMPACT y LARGE. Bajo qué circunstancias se utiliza cada uno de estos modelos?

15.- De las longitudes, en bytes, generadas por las siguientes directivas de datos (a)DD (b)DW (c)DT (d)DQ (e)DB
 a.-4 c.-10 e.-1

16.-Defina una cadena de caracteres con nombre TITLE que contenga la constante RGB electrónicos.

TITLE1 DB RGB electrónicos

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 de 215 decimales
(b) Un elemento de un byte con el equivalente hexadecimal de 35 decimales.
(c) Un elemento de dos bytes con un valor no definido
(d) Un elemento de un byte con el equivalente binario de 25 decimales
(e) Un DW con los valores consecutivos 17, 19, 21,26 y 31
a.- FLDA DD73H
c. - FLDC DW?
e.-FLDE DW 17, 19,21,26,31
18.-Muestre el código objeto hexadecimal generado por (a) DB 28 (b) DB 28
a.-ASCII 3238; b.- ex IC

19- Determine el código objeto hexadecimal ensamblado por (a) DB 28H (b) DW 2845H (c) DD 2833AH (d) DQ 28733AH
a.-28 c.-3A732800





















jueves, 26 de septiembre de 2013

Principales instrucciones de programación en 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.

MOV

MOVS (MOVSB) (MOVSW)

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)

LAHF

LDS

LEA

LES

Instrucciones de la pila

Estas instrucciones permiten el uso de la pila para almacenar y extraer datos.

POP

POPF

PUSH

PUSHF

Instrucción MOV
Propósito: Transferencia de datos entre celdas de memoria, registros y acumulador.

Sintaxis:
MOV Destino,Fuente

Donde Destino es el lugar a donde se moverán los datos y fuente es el lugar donde se encuentran dichos datos.

Ejemplo:
MOV AX,0006h
MOV BX,AX
MOV AX,4C00h
INT 21H

Este pequeño programa mueve el valor 0006H al registro AX, luego mueve el contenido de AX (0006h) al registro BX, por último mueve el valor 4C00h al registro AX para terminar la ejecución con la opción 4C de la interrupción 21h.

Instrucción MOVS (MOVSB) (MOVSW)
Propósito: Mover cadenas de bytes o palabras desde la fuente, direccionada por SI, hasta el destino direccionado por DI.

Sintaxis:
MOVS

Este comando no necesita parametros ya que toma como dirección fuente el contenido del registro SI y como destino el contenido de DI. La secuencia de instrucciones siguiente ilustran esto:

MOV SI, OFFSET VAR1

MOV DI, OFFSET VAR2

MOVS

Primero inicializamos los valores de SI y DI con las direcciones de las variables VAR1 y VAR2 respectivamente, despues al ejecutar MOVS se copia el contenido de VAR1 a VAR2.

Los comandos MOVSB y MOVSW se utilizan de la misma forma que MOVS, el primero mueve un byte y el segundo una palabra.

Instrucción LODS (LODSB) (LODSW)
Propósito: Cargar cadenas de un byte o palabra al acumulador.

Sintaxis:
LODS

Esta instrucción toma la cadena que se encuentre en la dirección especificada por SI, la carga al registro AL (o AX) y suma o resta 1 (segun el estado de DF) a SI si la transferencia es de bytes o 2 si la transferencia es de palabras.

MOV SI, OFFSET VAR1

LODS

La primer linea carga la dirección de VAR1 en SI y la segunda linea lleva el contenido de esa localidad al registro AL.

Los comandos LODSB y LODSW se utilizan de la misma forma, el primero carga un byte y el segundo una palabra (utiliza el registro completo AX).

Instrucción LAHF
Propósito: Transfiere al registro AH el contenido de las banderas

Sintaxis:
LAHF

Esta instrucción es útil para verificar el estado de las banderas durante la ejecución de nuestro programa.

Las banderas quedan en el siguiente orden dentro del registro:

SF ZF ¿? AF ¿? PF ¿? CF

El simbolo "¿?" significa que en esos bits habrá. un valor indefinido.

Instrucción LDS
Propósito: Cargar el registro del segmento de datos

Sintaxis:

LDS destino, fuente

El operando fuente debe ser una palabra doble en memoria. La palabra asociada con la dirección más grande es transferida a DS, o sea que se toma como la dirección del segmento. La palabra asociada con la dirección menor es la dirección del desplazamiento y se deposita en el registro señalado como destino.

Instrucción LEA
Propósito: Carga la dirección del operando fuente.

Sintaxis:
LEA destino, fuente

El operando fuente debe estar ubicado en memoria, y se coloca su desplazamiento en el registro índice o apuntador especificado en destino.

Instrucción LES
Propósito: Carga el registro del segmento extra

Sintaxis:
LES destino, fuente

El operando fuente debe ser un operando en memoria de palabra doble. El contenido de la palabra con la dirección mayor se interpreta como la dirección del segmento y se coloca en ES. La palabra con la dirección menor es la dirección del desplazamiento y se coloca en el registro especificado en el parámetro destino.

Instrucción POP
Propósito: Recupera un dato de la pila

Sintaxis:
POP destino

Esta instrucción transfiere el último valor almacenado en la pila al operando destino, después incrementa en dos el registro SP.

Este incremento se debe a que la pila va creciendo desde la dirección mas alta de memoria del segmento hacia la mas baja, y la pila solo trabaja con palabras (2 bytes), entonces al incrementar en dos el registro SP realmente se le esta restando dos al tamaño real de la pila.

Instrucción POPF
Propósito: Extrae las banderas almacenadas en la pila.

Sintaxis:
POPF

Este comando transfiere bits de la palabra almacenada en la parte superior de la pila hacia el registro de banderas.

La forma de transferencia es la siguiente:
BIT BANDERA
0 CF
2 PF
4 AF
6 ZF
7 SF
8 TF
9 IF
10 DF
11 OF

Instrucción PUSH
Propósito: Coloca una palabra en la pila.

Sintaxis:
PUSH fuente

La instrucción PUSH decrementa en dos el valor de SP y luego transfiere el contenido del operando fuente a la nueva dirección resultante en el registro recién modificado.

Instrucción PUSHF
Propósito: Coloca el valor de las banderas en la pila

Sintaxis:
PUSHF

Este comando decrementa en 2 el valor del registro SP y luego se transfiere el contenido del registro de banderas a la pila, en la dirección indicada por SP.

Las banderas quedan almacenadas en memoria en los mismos bits indicados en el comando POPF

Instrucciones lógicas. Son utilizadas para realizar operaciones lógicas sobre los operandos.

AND

NEG

NOT

OR

TEST

XOR

Instrucciones aritméticas. Se usan para realizar operaciones aritméticas sobre los operandos.

ADC

ADD

DIV

IDIV

MUL

IMUL

SBB

SUB

Instrucción AND
Propósito: Realiza la conjunción de los operandos bit por bit.

Sintaxis:
AND destino, fuente

Con esta instrucción se lleva a cabo la operación "y" lógica de los dos operandos:

Fuente Destino | Destino

--------------------------

1 1 | 1

1 0 | 0

0 1 | 0

0 0 | 0

El resultado de la operación se almacena en el operando destino.

Instrucción NEG

Propósito: Genera el complemento a 2

Sintaxis:

NEG destino

Esta instrucción genera el complemento a 2 del operando destino y lo almacena en este mismo operando. Por ejemplo, si AX guarda el valor de 1234H, entonces:

NEG AX

Nos dejaría almacenado en el registro AX el valor EDCCH.

Instrucción NOT

Propósito: Lleva a cabo la negación bit por bit del operando destino.

Sintaxis:

NOT destino

El resultado se guarda en el mismo operando destino.

Instrucción OR

Propósito: OR inclusivo lógico

Sintaxis:

OR destino, fuente

La instrucción OR lleva a cabo, bit por bit, la disyunción inclusiva lógica de los dos operandos:

Fuente Destino | Destino

--------------------------

1 1 | 1

1 0 | 1

0 1 | 1

0 0 | 0

Instrucción TEST

Propósito: Comparar logicamente los operandos

Sintaxis:

TEST destino, fuente

Realiza una conjunción, bit por bit, de los operandos, pero a diferencia de AND esta instrucción no coloca el resultado en el operando destino, solo tiene efecto sobre el estado de las banderas.

Instrucción XOR

Propósito: OR exclusivo

Sintaxis:

XOR destino, fuente

Su función es efectuar bit por bit la disyunción exclusiva lógica de los dos operandos.


Fuente Destino | Destino

--------------------------

1 1 | 0

0 0 | 1

0 1 | 1

0 0 | 0

Instrucción ADC

Propósito: Adición con acarreo.

Sintaxis:

ADC destino, fuente

Lleva a cabo la suma de dos operandos y suma uno al resultado en caso de que la bandera CF esté activada, esto es, en caso de que exista acarreo.

El resultado se guarda en el operando destino.

Instrucción ADD

Propósito: Adición de los operandos.

Sintaxis:

ADD destino, fuente

Suma los dos operandos y guarda el resultado en el operando destino.

Instrucción DIV

Propósito: División sin signo

Sintaxis:

DIV fuente

El divisor puede ser un byte o palabra y es el operando que se le da a la instrucción.

Si el divisor es de 8 bits se toma como dividendo el registro de 16 bits AX y si el divisor es de 16 bits se tomara como dividendo el registro par DX:AX, tomando como palabra alta DX y como baja AX.

Si el divisor fué un byte el cociente se almacena en el registro AL y el residuo en AH, si fué una palabra el cociente se guarda en AX y el residuo en DX.

Instrucción IDIV

Propósito: División con signo

Sintaxis:

IDIV fuente

Consiste basicamente en lo mismo que la instrucción DIV, solo que esta última realiza la operación con signo.

Para sus resultados utiliza los mismos registros que la instrucción DIV.

Instrucción MUL

Propósito: Multiplicación sin signo

Sintaxis:

MUL fuente

El ensamblador asume que el multiplicando sera del mismo tamaño que el del multiplicador, por lo tanto multiplica el valor almacenado en el registro que se le da como operando por el que se encuentre contenido en AH si el multiplicador es de 8 bits o por AX si el multiplicador es de 16 bits.

Cuando se realiza una multiplicación con valores de 8 bits el resultado se almacena en el registro AX y cuando la multiplicación es con valores de 16 bits el resultado se almacena en el registro par DX:AX.

Instrucción IMUL

Propósito: Multiplicación de dos enteros con signo.

Sintaxis:

IMUL fuente

Este comando hace lo mismo que el anterior, solo que si toma en cuenta los signos de las cantidades que se multiplican.

Los resultados se guardan en los mismos registros que en la instrucción MUL.

Instrucción SBB

Propósito: Substracción con acarreo

Sintaxis:

SBB destino, fuente

Esta instrucción resta los operandos y resta uno al resultado si CF está activada. El operando fuente siempre se resta del destino.

Este tipo de substracción se utiliza cuando se trabaja con cantidades de 32 bits.

Instrucción SUB

Propósito: Substracción

Sintaxis:

SUB destino, fuente

Resta el operando fuente del destino.

Instrucciones de salto Son utilizadas para transferir el flujo del proceso al operando indicado.

JMP

JA (JNBE)

JAE (JNBE)

JB (JNAE)

JBE (JNA)

JE (JZ)

JNE (JNZ)

JG (JNLE)

JGE (JNL)

JL (JNGE)

JLE (JNG)

JC

JNC

JNO

JNP (JPO)

JNS

JO

JP (JPE)

JS

Instrucciones para ciclos: LOOP Transfieren el flujo del proceso, condicional o incondicionalmente, a un destino repitiendose esta acción hasta que el contador sea cero.

LOOP

LOOPE

LOOPNE

Instrucciones de conteo Se utilizan para decrementar o incrementar el contenido de los contadores.

DEC

INC

Instrucciones de comparación Son usadas para comparar operandos, afectan al contenido de las banderas.

CMP

CMPS (CMPSB) (CMPSW)

Instrucciones de banderas Afectan directamente al contenido de las banderas.

CLC

CLD

CLI

CMC

STC

STD

STI

Instrucción JMP

Propósito: Salto incondicional

Sintaxis:

JMP destino

Esta instrucción se utiliza para desviar el flujo de un programa sin tomar en cuenta las condiciones actuales de las banderas ni de los datos.

Instrucción JA (JNBE)

Propósito: Brinco condicional

Sintaxis:

JA Etiqueta

Después de una comparación este comando salta si está arriba o salta si no está abajo o si no es igual.

Esto significa que el salto se realiza solo si la bandera CF esta desactivada o si la bandera ZF esta desactivada (que alguna de las dos sea igual a cero).

Instrucción JAE (JNB)

Propósito: salto condicional

Sintaxis:

JAE etiqueta

Salta si está arriba o si es igual o salta si no está abajo.

El salto se efectua si CF esta desactivada.

Instrucción JB (JNAE)

Propósito: salto condicional

Sintaxis:

JB etiqueta

Salta si está abajo o salta si no está arriba o si no es igual.

Se efectúa el salto si CF esta activada.

Instrucción JBE (JNA)

Propósito: salto condicional

Sintaxis:

JBE etiqueta

Salta si está abajo o si es igual o salta si no está arriba.

El salto se efectúa si CF está activado o si ZF está activado (que cualquiera sea igual a 1).

Instrucción JE (JZ)

Propósito: salto condicional

Sintaxis:

JE etiqueta

Salta si es igual o salta si es cero.

El salto se realiza si ZF está activada.

Instrucción JNE (JNZ)

Propósito: salto condicional

Sintaxis:

JNE etiqueta

Salta si no es igual o salta si no es cero.

El salto se efectua si ZF está desactivada.

Instrucción JG (JNLE)

Propósito: salto condicional, se toma en cuenta el signo.

Sintaxis:

JG etiqueta

Salta si es más grande o salta si no es menor o igual.

El salto ocurre si ZF = 0 u OF = SF.

Instrucción JGE (JNL)

Propósito: salto condicional, se toma en cuenta el signo.

Sintaxis:

JGE etiqueta

Salta si es más grande o igual o salta si no es menor que.

El salto se realiza si SF = OF

Instrucción JL (JNGE)

Propósito: salto condicional, se toma en cuenta el signo.

Sintaxis:

JL etiqueta

Salta si es menor que o salta si no es mayor o igual.

El salto se efectúa si SF es diferente a OF.

Instrucción JLE (JNG)

Propósito: salto condicional, se toma en cuenta el signo.

Sintaxis:

JLE etiqueta

Salta si es menor o igual o salta si no es más grande.

El salto se realiza si ZF = 1 o si SF es diferente a OF

Instrucción JC

Propósito: salto condicional, se toman en cuenta las banderas.

Sintaxis:

JC etiqueta

Salta si hay acarreo.

El salto se realiza si CF = 1

Instrucción JNC

Propósito: salto condicional, se toma en cuenta el estado de las banderas.

Sintaxis:

JNC etiqueta

Salta si no hay acarreo.

El salto se efectúa si CF = 0.

Instrucción JNO

Propósito: salto condicional, se toma en cuenta el estado de las banderas.

Sintaxis:

JNO etiqueta

Salta si no hay desbordamiento.

El salto se efectua si OF = 0.

Instrucción JNP (JPO)

Propósito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JNP etiqueta

Salta si no hay paridad o salta si la paridad es non.

El salto ocurre si PF = 0.

Instrucción JNS

Propósito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JNP etiqueta

Salta si el signo esta desactivado.

El salto se efectúa si SF = 0.

Instrucción JO

Propósito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JO etiqueta

Salta si hay desbordamiento (overflow).

El salto se realiza si OF = 1.

Instrucción JP (JPE)

Propósito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JP etiqueta

Salta si hay paridad o salta si la paridad es par.

El salto se efectúa si PF = 1.

Instrucción JS

Propósito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JS etiqueta

Salta si el signo está prendido.

El salto se efectúa si SF = 1.

Instrucción LOOP

Propósito: Generar un ciclo en el programa.

Sintaxis:

LOOP etiqueta

La instrucción loop decrementa CX en 1, y transfiere el flujo del programa a la etiqueta dada como operando si CX es diferente a 1.

Instrucción LOOPE

Propósito: Generar un ciclo en el programa considerando el estado de ZF

Sintaxis:

LOOPE etiqueta

Esta instrucción decrementa CX en 1. Si CX es diferente a cero y ZF es igual a 1, entonces el flujo del programa se transfiere a la etiqueta indicada como operando.

Instrucción LOOPNE

Propósito: Generar un ciclo en el programa, considerando el estado de ZF

Sintaxis:

LOOPNE etiqueta

Esta instrucción decrementa en uno a CX y transfiere el flujo del programa solo si ZF es diferente a 0.

Instrucción DEC

Propósito: Decrementar el operando

Sintaxis:

DEC destino

Esta operación resta 1 al operando destino y almacena el nuevo valor en el mismo oeprando.

Instrucción INC

Propósito: Incrementar el operando.

Sintaxis:

INC destino

La instrucción suma 1 al operando destino y guarda el resultado en el mismo operando destino.

Instrucción CMP

Propósito: Comparar los operandos.

Sintaxis:

CMP destino, fuente

Esta instrucción resta el operando fuente al operando destino pero sin que éste almacene el resultado de la operación, solo se afecta el estado de las banderas.

Instrucción CMPS (CMPSB) (CMPSW)

Propósito: Comparar cadenas de un byte o palabra.

Sintaxis:

CMP destino, fuente

Con esta instrucción la cadena de caracteres fuente se resta de la cadena destino.

Se utilizan DI como indice para el segmento extra de la cadena fuente y SI como indice de la cadena destino.

Solo se afecta el contenido de las banderas y tanto DI como SI se incrementan.

Instrucción CLC

Propósito: Limpiar bandera de acarreo.

Sintaxis:

CLC

Esta instrucción apaga el bit correspondiente a la bandera de acarreo, o sea, lo pone en cero.

Instrucción CLD

Propósito: Limpiar bandera de dirección

Sintaxis:

CLD

La instrucción CLD pone en cero el bit correspondiente a la bandera de dirección.

Instrucción CLI

Propósito: Limpiar bandera de interrupción

Sintaxis:

CLI

CLI pone en cero la bandera de interrupciones, desabilitando así aquellas interrupciones enmascarables.

Una interrupción enmascarable es aquella cuyas funciones son desactivadas cuando IF = 0.

Instrucción CMC

Propósito: Complementar la bandera de acarreo.

Sintaxis:

CMC

Esta instrucción complementa el estado de la bandera CF, si CF = 0 la instrucción la iguala a 1, y si es 1 la instrucción la iguala a 0.

Podemos decir que unicamente "invierte" el valor de la bandera.

Instrucción STC

Propósito: Activar la bandera de acarreo.

Sintaxis:

STC

Esta instrucción pone la bandera CF en 1.

Instrucción STD

Propósito: Activar la bandera de dirección.

Sintaxis:

STD

La instrucción STD pone la bandera DF en 1.

Instrucción STI

Propósito: Acticar la bandera de interrupción.

Sintaxis:

STI

La instrucción activa la bandera IF, esto habilita las interrupciones externas enmascarables (las qu

miércoles, 18 de septiembre de 2013

Ejercicios

1. LDA #100.- Direccionamiento inmediato

2. MOVE AL, BL.-Direccionamiento por registro

3. MOVE DX, CX.-Direccionamiento de Registro

4. MOVE AX, DATO.- Direccionamiento Directo

5. MOVE AX, [100].- Direccionamiento Directo

6. MOVE AX, [BP].-Direccionamiento de registro indirecto IRECCIONAMIENTO DEREGISTRO INDIRECTO

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

8. MOVE AX [SI].-Direccionamiento de Registro

1.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)___unidad de control________es quien crea y controla el flujo de datos

e)_______bus de datos_______se encarga de transferir datos entrecpu, memoria y periféricos

f)______unidad aritmatica logica________se encuentran las diferentes señales encargadas de la sincronización y control del sistema

4.escriba nombre y función de los registros

a)AX.-El registro AX, el acumulador principal, es utilizado para operaciones que implican entrada/salida y la mayor parte de la aritmética

b)BX El BX.-es conocido como el registro base ya que es el único registro de propósito general que puede ser índice para direccionamiento indexado. También es común emplear el BX para cálculos.

c)CX CX = Registro contador, dividido en CH y CL. Se utiliza como contador en bucles (instrucción LOOP), en operaciones con cadenas (usando el prefijo REP) y en desplazamientos y rotaciones (usando el registro CL en los dos últimos casos).

d)DX El DX.-es conocido como l registro de datos. Alguna operaciones de entrada/salida requieren uso, y las operaciones de multiplicación y división con cifras grandes suponen al DX y al AX trabajando juntos.

e)DS Registro DS.-La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. En términos sencillos, esta dirección, mas un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un bytes especifico en el segmento de datos.

f)ES Registro 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.-El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio del segmento de pila de un programa en el registro SS. Esta dirección de segmento, más un valor de desplazamiento en el registro del apuntador de la pila (SP), indica la palabra actual en la pila que está siendo direccionada. Para propósitos de programación normal, no se necesita referenciar el registro SS.

h)CS.-El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, mas un valor de desplazamiento en el registro de apuntado de instrucción (IP), indica la dirección de una instrucción que es buscada para sí ejecución. Para propósito de programación normal, no e necesita referenciar el registro CS.



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

j)SI.-El registro índice de 16 bits es requerido por algunas operaciones con cadenas (de caracteres). En este contexto, el SI está asociado con el registro DS. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado a 32 bits, el ESI.



k)DI El registro índice destino también es requerido por algunas operaciones con cadenas de caracteres. En este contexto, el Di está asociado con el registro ES. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado a 32 bits, el EDI.

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

domingo, 8 de septiembre de 2013

Actividad Jueves 5 de septiembre

Conteste las siguientes preguntas

1 Determina la configuración binaria de los siguientes números : a)6, b)14, c)22, d)28, e)30:
a)6 = 0110
b)14 = 0110
c) 22 = 10100
d) 28 = 11100
e) 30 = 11110

2 Sume los siguientes números binarios:
00010101
00111101
00011101
01010111
+00001101
00101010
00000011
+00111101
00100010
01100111
00100000
10010100
 
3   Halle el complemento a dos de los siguientes números binarios: a)00010110, b)00111101, c)00111100:
a)00010110=11101001+00000001=11101010
b)00111101=11000010+00000001=11000011
d)00111100=11000011+00000001=11000100
4 Encuentra el valor positivo (absoluto) de los siguientes números binarios negativos: a) 11001000, b)10111101, c)11111110, d)11111111:
a)11001000=00110111+00000001=00111000
b)10111101=01000010+00000001=01000011
c)11111110=00000001+00000001=00000010
d)11111111=00000000+00000001=00000001
5 Determine la representación hexadecimal de los valores siguientes:
a) Codigo ASCII de la letra Q, b)Codigo ASCII del numero 7, c)01011101 binario, d)011110111 binario:
a)Código ASCII de Q = 51h
b)Código ASCII de 7 = 37h
c)01011101 binario = 5Dh
d)01110111 binario = 77h
6 Suma los numeros Hexadecimales siguientes:
23A6
51FD
7779
EABE
FBAC
+0022
+0003
+0887
+26C4
+0CBE
23C8
5200
8000
11182
1086A
7 Determina la representacion hexadecimal de los numeros decimals siguientes. Consulte el apéndice A para ver el método de conversión . Tambien debe verificar su resutado al convertir el hexadecimal a binario y al sumar los bits de 1
a)19, b)33, c)89, d)255, e)4095,f)63389:
a) 19 = 13h b)33 = 21h c)89 = 59h d)255 = FF e)4095 = FFF f)63398 = F7A6
8 Proporcione la configuración ASCII en bits de los siguientes caracteres de un byte, utilice el apéndice B:
a)=50h=01010000
b)=70h=01110000
c)=23h=00100011
d)=35h=00110101
9Cual es el objetivo del procesador?
 Realiza todo el procesamiento de datos e instrucciones.
10 Cuáles son las dos clases principales de memoria en la Pc y cuales sus principales usos?
ROM: Realiza el proceso de arranque y maneja la entrada/salida.
RAM: Es la memoria donde los programas y datos residen temporalmente cuando se ejecutan
11 Muestre como el sistema almacena 012345 hexadecimal como un valor en la memoria. R=01 23 45 = 45 23 01
12Explica los siguientes a)Segmento, b)desplazamiento (offset),c)limite de dirección.
13 Cuales son? :a) las tres clases de segmento b) su tamaño máximo y c) el limite de dirección en el que ellos inician?R= Segmento: Sección de un programa de hasta 64k en tamaño con código, datos o pila.
Desplazamiento (offset): La distancia en bytes desde la dirección del segmento.
14 Señale el objetivo de cada uno de los tres registros de segmentos.
a)CS: Indica la dirección de una instrucción que es buscada para su ejecución
b)DS: Genera una referencia a la localidad de un byte especifico en el segmento de datos.
c)SS: Indica la palabra actual en la pila que está siendo direccionada.
15 Expliquen que registros de utilizan para los siguientes propósitos a) sumar y restar, b) contar los ciclos, c)multiplicar y dividir d)segmentos de direccionamiento e) indicaccion de un resultado igual a cero, f)desplazamiento de dirección de una instrucción que se va a ejecutar.
a)Sumar y restar: AX,BX,CX
b)Contar ciclos: CX
c)Multiplicar y dividir: AX,DX
d)Segmentos de direccionamiento: SI,DI
e)Indicación de un resultado igual a 0: ZF
f)Desplazamiento de dirección de una instrucción que se va a ejecutar: DF
16 Muestre el registro EAX y el tamaño y posición de AH. AL y AX en el.
a)AH: 8 bits
b)AL: 8 bits
c)AX: 16 bits
d)EAX: 32 bits.
17codifique las instrucciones en lenguaje de de ensamblador para mover el numero 25 a los registros siguientes:  a)CH, b) CL, c)CX, d) E CX.
a)CH: MOV CH,25
b)CL: MOV CL,25
c)CX: MOV CX,25

d)ECX: MOV ECX,25

Convertir los dos bytes primeros a binario


lunes, 2 de septiembre de 2013

Crucigrama


1.- Es quien crea y controla el flujo de datos, que circula por el computador a partir de las instrucciones recibidas de la memoria, que sirven para indicar las operaciones o tratamiento a realizar sobre los datos recibidos desde el exterior o previamente almacenados en la memoria.
2.- Recibe secuencialmente las instrucciones desde la memoria, a través del bus de datos, almacenándolas en el registro de instrucciones (IR). Desde IR las instrucciones pasan al decodificador de instrucciones, el cual se encarga de interpretarlas y producir una serie de impulsos de gobierno y control.
3.- Es la encargada del procesamiento lógico y aritmético de los datos, según el carácter que determine cada instrucción.
4.- El programa o secuencia de instrucciones, que debe seguir la máquina para realizar el procesamiento de los datos, está almacenado en.
5.- La memoria de sólo lectura también permite el acceso directo a cada uno de los elementos que la componen, pero la información en ella contenida puede ser leída pero no alterada.
6.- La memoria  de acceso al azar debe su nombre al hecho de permitir el acceso a cualquiera de las localidades de memoria en forma directa, en contraste con las memorias de acceso secuencial en las cuales para acceder al N-ésimo elemento.
7.- Son los encargados de enviar y/o recoger información del mundo externo a la computadora e intercambiarla con la unidad central de procesamiento a través de la unidad de entradas y salidas.
8.- No son más que los conductores que interconectan cada una de las partes que componen al computador. A través de ellos viaja información.
9.- Se encarga de transferir información entre el CPU, la memoria y los periféricos. Es bidireccional, ya que la información  puede fluir en ambos sentidos.
10.- Permite seleccionar la localidad de memoria o el periférico que el CPU desea accesar. Este bus es unidireccional ya que la información a través de él siempre fluye desde el microprocesador.

domingo, 1 de septiembre de 2013

Organización Interna del Computador

Arquitectura fundamental de un computador.

Todo computador digital consta de cuatro partes bien definidas: Unidad Central de Procesamiento (CPU),

Memoria, Periféricos y Buses.





Unidad Central de Procesamiento.

La CPU es quien crea y controla el flujo de datos, que circula por el computador a partir de las instrucciones recibidas de la memoria, que sirven para indicar las operaciones o tratamiento a realizar sobre los datos recibidos desde el exterior o previamente almacenados en la memoria. La misma consta de dos partes: la Unidad de Control y la Unidad Aritmético-Lógica (ALU).Unidad de Control.

La Unidad de Control recibe secuencialmente las instrucciones desde la memoria, a través del bus de datos,  almacenándolas en el registro de instrucciones (IR). Desde IR las instrucciones pasan al decodificador de instrucciones, el cual se encarga de interpretarlas y producir una serie de impulsos de gobierno y control.




Unidad aritmético-lógica.

La Unidad  aritmético-lógica (ALU) es la encargada del procesamiento lógico y aritmético de los datos, según el carácter que determine cada instrucción.

Esquema interno de la Unidad Aritmético-Lógica.






Memoria.

El programa o secuencia de instrucciones, que debe seguir la máquina para realizar el procesamiento de los datos, está almacenado en una parte de la memoria, denominada  memoria o segmento de instrucciones para diferenciarla del resto de la misma, que se emplea para guardar datos y resultados en forma temporal.


Memoria ROM.

La memoria  ROM (Read Only Memory) o memoria de sólo lectura también permite el acceso directo a cada uno de los elementos que la componen, pero la información en ella contenida puede ser leída pero no alterada. Debido a que conserva la información, aún en el caso de ausencia de energía, se usa para almacenar las rutinas de más bajo nivel, que sirven para el arranque del sistema.

Memoria RAM.

La memoria  RAM  (Random Access Memory) o memoria de acceso al azar debe su nombre al hecho de permitir el acceso a cualquiera de las localidades de memoria en forma directa, en contraste con las memorias de acceso secuencial en las cuales para acceder al N-ésimo elemento.

Buses

Los buses no son más que los conductores que interconectan cada una de las partes que componen al computador. A través de ellos viaja información que según su función permite clasificarlos en tres tipos: bus de Datos, bus de Direcciones y bus de Control.

Bus de datos.

El bus de datos se encarga de transferir información entre el CPU, la memoria y los periféricos. Es bidireccional, ya que la información  puede fluir en ambos sentidos, es decir, desde o hacia el microprocesador.

Bus de direcciones.

El bus de direcciones permite seleccionar la localidad de memoria o el periférico que el CPU desea acceso. Este bus es unidireccional ya que la información a través de él siempre fluye desde el microprocesador.

Bus de control.

En el Bus de Control se encuentran las diferentes señales encargadas de la sincronización y control del sistema. Su naturaleza es unidireccional aun cuando existen señales que salen del microprocesador así como otras que entran al microprocesador. Ejemplos de las señales de control son:

WR (escritura)

RD (lectura)

WAIT (espera)

READY (listo), etc.

 
 

 



Modos De Direccionamiento

Cuando el campo de dirección especifica un registro del procesador, la instrucción se dice que está en el modo de registro.



Directo
El campo de operando en la instrucción contiene la dirección en memoria donde se encuentra el operando.
En este modo la dirección efectiva es igual a la parte de dirección de la instrucción. El operando reside en la memoria y su dirección es dada directamente por el campo de dirección de la instrucción. En una instrucción de tipo ramificación el campo de dirección especifica la dirección de la rama actual.




De registro
Sirve para especificar operan dos que están en registros.El control localiza la instrucción de la memoria y utiliza su parte de dirección para acceder a la memoria de nuevo para leer una dirección efectiva. Unos pocos modos de direccionamiento requieren que el campo de dirección de la instrucción sea sumado al control de un registro especificado en el procesador.




Indexado respecto a una base
Se trata de una combinación de los dos anteriores y consiste en calcular la dirección efectiva como:
EA = RI+RB+DM
Respecto al contador de programa
Consiste en dirección una posición de memoria usando como registro base al contador de programa (PC), el funcionamiento es análogo al direccionamiento respecto a registro base con la salvedad de que, en este caso, el offset puede ser también negativo.

Indexado con autoincremento/autodecremento

Es un modo de direccionamiento análogo al indexado, explicado anteriormente.
La única diferencia es que permite un incremento o decremento de la dirección final o el registro índice según
los siguientes casos:

-> Indexado con autopreincremento: Incrementa el registro índice primero (se incrementa un valor, según el tamaño del objeto direccionado) y luego calcula la EA al igual que el direccionamiento indexado.

-> Indexado con autoposincremento: Calcula la dirección efectiva y después incrementa esta.

-> Indexado con autopredecremento: Decrementa el registro índice y después calcula la dirección efectiva.
-> Indexado con autoposdecremento: Calcula la dirección efectica y después decrementa esta.

Indirecto
El campo de operando contiene una dirección de memoria, en la que se encuentra la dirección efectiva del operando.






Modos simples de direccionamiento de datos

Registros

+------+-----+-----+-----+

| mul | reg1| reg2| reg3| reg1 := reg2 * reg3;

+------+-----+-----+-----+

Este "modo de direccionamiento" no tiene una dirección efectiva y no se considera como un modo de dirección en algunas computadoras.
En este ejemplo, todos los operandos están en registros, y el resultado se coloca en un registro.
Base más desplazamiento y variaciones
Muchas veces nos referimos a él como "base más desplazamiento"

+------+-----+-----+----------------+

| load | reg | base| offset | reg := RAM[base + offset]

+------+-----+-----+----------------+

(La dirección efectiva = desplazamiento + contenidos de la base especificada del registro)

El desplazamiento suele ser un valor con signo de 16 bits (aunque la 80386 se expandió a 32 bits).

Si el desplazamiento es cero, esto se convierte en un ejemplo de registro indirecto frente, la dirección efectiva es sólo el valor en el registro de base.
En muchas máquinas RISC, el registro 0 se fija en el valor cero. Si el registro 0 se utiliza como el registro de base, esto se convierte en un ejemplo de direccionamiento absoluto. Sin embargo, sólo una pequeña parte de la memoria se puede acceder (64 kilobytes, si el desplazamiento es de 16 bits).