Sei sulla pagina 1di 12

VICTOR ANTONIO PAXTIAN VELASCO

6 SEMESTRE



INGENIERIA EN SISTEMAS
COMPUTACIONALES



L.I. MIGUEL NGEL RODRGUEZ
RANGEL



LENGUAJE DE INTERFAZ



TIERRA BLANCA, VER., AGOSTO DE
2013.
Modos de direccionamiento

Son las diferentes maneras de especificar en informtica un operando dentro de una
instruccin en lenguaje ensamblador.
Un modo de direccionamiento especifica la forma de calcular la direccin de memoria
efectiva de un operando mediante el uso de la informacin contenida en registros y/o
constantes, contenida dentro de una instruccin de la maquina o en otra parte.

Inmediato
En este modo el operando es especificado en la instruccin misma. Una instruccin de
modo inmediato tiene un campo de operando en vez de un campo de direccin. El campo
del operando contiene el operando actual que se debe utilizar en conjunto con la operacin
especificada en la instruccin. Las instrucciones de modo inmediato son tiles para
inicializar los registros en un valor constante.
Cuando el campo de direccin especifica un registro del procesador, la instruccin se dice
que est en el modo de registro.





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








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


Indexado
Consiste en direccin una posicin de memoria usando como registro base al contador de
programa (PC), el funcionamiento es anlogo al direccionamiento respecto a registro base
con la salvedad de que, en este caso, el offset puede ser tambin negativo.
Permite un incremento o decremento de la direccin final o el registro ndice segn los
siguientes casos:
->Indexado con autopreincremento: Incrementa el registro ndice primero (se incrementa un valor,
segn el tamao del objeto direccionado) y luego calcula la EA al igual que el direccionamiento
indexado.
-> Indexado con autoposincremento: Calcula la direccin efectiva y despus incrementa esta.
-> Indexado con autopredecremento: Decrementa el registro ndice y despus calcula la direccin
efectiva.
-> Indexado con autoposdecremento: Calcula la direccin efectiva y despus decrementa esta

Memoria Cache
En informtica, el cach de CPU, es un bfer especial de memoria que poseen los
ordenadores. Funciona de una manera similar a como lo hace la memoria principal (RAM),
pero es de menor tamao y de acceso ms rpido. Es usado por la unidad central de
procesamiento para reducir el tiempo de acceso a datos ubicados en la memoria principal
que se utilizan con ms frecuencia.
Cuando se accede por primera vez a un dato, se hace una copia en el cach; los accesos
siguientes se realizan a dicha copia, haciendo que el tiempo de acceso medio al dato sea
menor. Cuando el procesador necesita leer o escribir en una ubicacin en memoria
principal, primero verifica si una copia de los datos est en el cach. Si es as, el procesador
de inmediato lee o escribe en la memoria cach, que es mucho ms rpido que de la lectura
o la escritura a la memoria principal.
Diseo
En el diseo de la memoria cach se deben considerar varios factores que influyen
directamente en el rendimiento de la memoria y por lo tanto en su objetivo de aumentar la
velocidad de respuesta de la jerarqua de memoria. Estos factores son las polticas de
ubicacin, extraccin, reemplazo, escritura y el tamao de la cach y de sus bloques.
Ubicacin
Decide dnde debe colocarse un bloque de memoria principal que entra en la memoria
cach. Las ms utilizadas son:
Directa: Al bloque i-simo de memoria principal le corresponde la posicin i
mdulo n, donde n es el nmero de bloques de la memoria cach.
Asociativa: Cualquier bloque de memoria principal puede ir en cualquiera de los n
bloques de la memoria cach.
Asociativa por conjuntos: La memoria cach se divide en k conjuntos de bloques,
as al bloque i-simo de memoria principal le corresponde el conjunto i mdulo k.
Dicho bloque de memoria podr ubicarse en cualquier posicin de ese conjunto.
Extraccin
La poltica de extraccin determina cundo y qu bloque de memoria principal hay que
traer a memoria cach. Existen dos polticas muy extendidas:
Por demanda: Un bloque slo se trae a memoria cach cuando ha sido referenciado
y no se encuentre en memoria cach.
Con pre bsqueda: Cuando se referencia el bloque i-simo de memoria principal, se
trae adems el bloque (i+1)-simo. Esta poltica se basa en la propiedad de localidad
espacial de los programas.
Reemplazo
Determina qu bloque de memoria cach debe abandonarla cuando no existe espacio
disponible para un bloque entrante. Bsicamente hay cuatro polticas que son:
Aleatoria: El bloque es reemplazado de forma aleatoria.
FIFO: Se usa un algoritmo First In First Out FIFO (primero en entrar es el primero
en salir) para determinar qu bloque debe abandonar la cach. Este algoritmo
generalmente es poco eficiente.
Menos recientemente usado (LRU): Se sustituye el bloque que hace ms tiempo que
no se ha usado en la cach, traeremos a cach el bloque en cuestin y lo
modificaremos ah.
Menos frecuencias usadas (LFU): Se sustituye el bloque que ha experimentado
menos referencias.

3.4.3 Definiciones de datos BYTE y SBYTE


Definicin de cadenas
Para definir una cadena de caracteres, hay que encerrarlos entre comillas sencillas o
dobles. El tipo ms comn de cadena termina con byte nulo (que contiene 0). Las
cadenas de este tipo, conocidas como cadenas con terminacin nula se utilizan en
los programas en C, C++ y JAVA.

Saludo1 byte buenas tardes,0
Saludo2 byte buenas noches,0
Cada carcter utiliza un byte de almacenamiento. Las cadenas son una excepcin a
la regla que establece que los valores de bytes deben separarse por coma ejem:
Saludo1 byte B, U, E,N, A, S. Etc.
Una lnea puede distribuirse a travs de varias lneas sin tener que suministrar una
etiqueta para cada lnea:


Las directivas BYTE y SBYTE asignan espacio de almacenamiento para uno o ms valores con o sin signo.
Cada inicializado debe caber en bits de almacenamiento por ejemplo:

Valor1 byte A : constante tipo carcter
Valor2 byte 0 : el byte sin signo ms pequeo
Valor3 byte 255 : el byte sin signo ms grande
Valor4 sbyte -128 : el byte con signo ms pequeo
Valor5 sbyte +127 : el byte con signo ms grande
3.4.5 Definicin de datos DWORD y SDWORD
Las directivas DWORD (definir doble palabra) y SDWORD (definir doble palabra
con signo) asignan almacenamiento para uno o mas enteros de 32 bits:
Val1 DWORD 12345678h ; sin signo
Val2 SDWORD -2147483648 ; con signo
Val3 DWORD 20 DUP(?) ; arreglo sin signo

Arreglo de dobles palabras: para crear un arreglo de dobles palabras, se inicializa cada
elemento en forma explcita, o se usa el operador DUP. He aqu un arreglo que contiene
valores sin signo especficos:
miLista DWORD 1 ,2, 3, 4, 5

3.4.8 Definicin de datos de nmeros reales
REAL4 define a una variable real de 4 bytes y precisin simple.
REAL8 define a un real de 8 bytes y precisin doble.
REAL10 define a un real de 10 bytes y doble precisin extendida cada uno requiere
ms inicializadores de constantes reales:
rVal1 REAL4 -1.2
rVal2 REAL8 3.2E-260
rVal3 REAL10 4.6E+4096
rArreglo REAL4 20 DUP (0.0)

3.2 suma y resta de enteros




TITLE Suma y resta
;este programa suma y resta enteros de 32 bits
Include Irvine32.inc
.cod
Main PROC
mov eax, 10000h ;EAX= 10000h
Add eax, 40000h ;EAX=50000h
Sub eax, 20000h ;EAX=30000h
Call DumpRegs ; muestra los registros
Analizacin del programa
TITLE el ensamblador ignora todo el texto que est a la derecha de un signo de punto y
coma, as que lo usamos para los comentarios
INCLUDE Irvine32.in: copia las definiciones necesarias y la informacin de
configuracin de un archivo de texto
.code: marca el inicio del segmento del cdigo
Main PROC: PROC identifica el comienzo de un procedimiento y main es el nombre que
elegimos para el nico procedimiento del programa
Mov eax, 10000h: La instruccin MOV mueve el numero entero 10000h al registro EAX.
Add eax, 40000h: La instruccin ADD suma 40000h al registro EAX
Sub eax, 20000h: La instruccin SUB resta 20000h del registro EAX
Call DumpRegs: CALL llama a un procedimiento que muestra los valores actuales de la
CPU.
Exit y main ENDP: Exit detiene la ejecucin del programa
END: Marca la ltima linea del programa que se va a ensamblar.

Plantilla de programa
Los programas en lenguaje ensamblador tienen una estructura simple con pequeas
variaciones
Puede evitar escribieren forma redundante si rellena las partes faltantes y guarda el archivo
bajo un nuevo nombre.
3.3.1 El ciclo de ensamblado, enlazado, ejecucin
El proceso de editar, ensamblar, enlazar y ejecutar programas en leguaje
ensamblador se resume en la figura
Paso 1: un programador utiliza un editor de texto para crear un archivo de texto
ASCII, conocido como archivo de cdigo fuente.
Paso 2: el ensamblador lee el archivo de cdigo fuente y produce un archivo de
cdigo objeto, una traduccin del programa a lenguaje mquina.
Paso 3: el enlazador lee el archivo de cdigo objeto y verifica si el programa
contiene alguna llamada a los procedimientos en una biblioteca de enlace.
Paso 4: la herramienta cargador (loader) del sistema operativo lee el archivo
ejecutable y lo carga en memoria, y bifurca la CPU hacia la direccin inicial del
programa. Para que este empiece a ejecutarse.

4.5.3 suma de un arreglo de enteros
En el lenguaje ensamblador, deben seguirse estos pasos:
4.5.4 copia de una cadena
A menudo, los programas tienen que copiar bloques extensos de datos, de una ubicacin a
otra. Los datos pueden ser arreglos o cadenas, pero pueden contener cualquier tipo de
objetos. Vamos a ver cmo hacer esto en el lenguaje ensamblador, mediante un ciclo con
copia a una cadena. El direccionamiento indexado funciona bien para este tipo de
operacin, ya que el mismo registro ndice hace referencia a ambas cadenas.
La cadena de destino debe tener suficiente espacio disponible para recibir los caracteres
copiados, incluyendo el byte nulo al final:

1) Asignar la direccin del arreglo a un registro que sirva como operando
indexado.
2) Establecer ECX con el nmero de los elementos en el arreglo (en modo
de 16 bits se utiliza CX).
3) Asignar cero al registro que acumula la suma.
4) Crear una etiqueta para marcar el inicio del ciclo.
5) En el cuerpo del ciclo como usar direccionamiento indirecto para sumar
un elemento individual del arreglo con el registro que almacena la suma.
6) Establecer el registro ndice para que apunte al siguiente elemento del
arreglo.
7) Usar una instruccin LOOP para repetir el ciclo desde la etiqueta inicial.
Los pasos del 1 al 3 puede realizarse en cualquier orden.

Lenguaje ensamblador
El nico lenguaje que entienden los microcontroladores es el cdigo mquina
formado por ceros y unos del sistema binario.
El lenguaje ensamblador expresa las instrucciones de una forma ms natural al
hombre a la vez es muy cercana al microcontrolador, ya que cada una de esas
instrucciones se corresponde con otra en cdigo mquina.
El lenguaje ensamblador trabaja con nemnicos, que son grupos de caracteres
alfanumricos que simbolizan las rdenes o tareas a realizar.
La traduccin de los nemnicos a cdigo mquina entendible por el
Microcontrolador la lleva a cabo un programa ensamblador.
TITLE Copia de una cadena
; Este programa copia una cadena
; ltima actualizacin: 60/01/2006
INCLUDE Irvine32.inc
.data
Origen BYTE esta es la cadena de origen, 0
Destino BYTE SIZEOF origen DUP (0)
.code
Main PROC
mov esi, 0 ; registro ndice
mov ecx, SIZEOF origen ; contador del ciclo
L1:
mov al ,origen*esi+ ; obtiene un carcter del origen
mov destino*esi+ , al ;lo almacena en el destino
Inc esi ; se mueve al siguiente carcter
Loop L1 ; repite el proceso para toda la cadena
Exit
main ENDP
END main
El programa escrito en lenguaje ensamblador se denomina cdigo fuente
(*.asm). El programa ensamblador proporciona a partir de este fichero el
correspondiente cdigo mquina, que suele tener la extensin *.hex.
El cdigo fuente

Est compuesto por una sucesin de lneas de texto.
Cada lnea puede estructurarse en hasta cuatro campos o columnas
Separados por uno o ms espacios o tabulaciones entre s.
Campo de etiquetas. Expresiones alfanumricas escogidas por el
Usuario para identificar una determinada lnea. Todas las etiquetas
Tienen asignado el valor de la posicin de memoria en la que se encuentra
el cdigo al que acompaan.
Campo de cdigo. Corresponde al nemnico de una instruccin, de una
Directiva o de una llamada a macro.
Campo de operandos y datos. Contiene los operandos que precisa el
Nemnico utilizado. Segn el cdigo, puede haber dos, uno o ningn
Operando.
Campo de comentarios. Dentro de una lnea, todo lo que se encuentre a continuacin
de un punto y coma (;) ser ignorado por el programa ensamblador y considerado como
comentario.

Direccionamiento indirecto
El direccionamiento indirecto no es prctico para el procesamiento de arreglos. Muy raras
veces es necesario proporcionar una etiqueta nica para cada tipo de arreglo.
La nica forma prctica de manejar un arreglo es utilizar un registro como apuntador y
manipular el valor de ese registro.
Arreglos
Los operandos indirectos son tiles al manejar arreglos, ya que el valor de un operando
indirecto puede modificarse en tiempo de ejecucin. De manera similar al subndice de un
arreglo, los operandos indirectos pueden apuntar a distintos elementos del arreglo.
Instruccin JMP y LOOP
De manera predeterminada, la CPU carga y ejecuta los programas en forma secuencial. Los
programas de lenguaje ensamblador utilizan instrucciones condicionales para implementar
instrucciones de alto nivel, tales como los IF y los ciclos.
Instruccin JMP: es una transferencia incondicional hacia un destino, la cual se identifica
mediante una etiqueta de cdigo que el ensamblador traduce en un desplazamiento la
sintaxis es: JMP destino.
Instruccin LOOP
Esta instruccin permite un bloque de instrucciones, un numero especifico de veces.ECX se
utiliza de manera automtica como contador, y se decrementa cada vez que se repite el
ciclo. Su sintaxis es: LOOP destino

Potrebbero piacerti anche