introduccion -...

57

Upload: others

Post on 08-Sep-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

INTRODUCCIONINTRODUCCION

---- 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 maquina, ejecutable

---- Familiarizarnos con el lenguaje ensamblador.Familiarizarnos con el lenguaje ensamblador.Familiarizarnos con el lenguaje ensamblador.Familiarizarnos con el lenguaje ensamblador.

---- Adquirir destreza suficiente para comenzar a escribir y Adquirir destreza suficiente para comenzar a escribir y Adquirir destreza suficiente para comenzar a escribir y Adquirir destreza suficiente para comenzar a escribir y ejecutar programas en ensamblador.ejecutar programas en ensamblador.ejecutar programas en ensamblador.ejecutar programas en ensamblador.

contiene código maquina, ejecutable directamente por la máquina para la que se ha generado

LENGUAJELENGUAJELENGUAJELENGUAJELENGUAJELENGUAJELENGUAJELENGUAJEForma de comunicarnos con la computadoraForma de comunicarnos con la computadoraForma de comunicarnos con la computadoraForma de comunicarnos con la computadora

¿Cómo?

CPU

Lenguaje BinarioLenguaje BinarioLenguaje BinarioLenguaje Binario

Lenguaje de alto nivel

Sistema Operativo

Lenguaje Ensamblador

Lenguaje de Máq.Lenguaje BinarioLenguaje BinarioLenguaje BinarioLenguaje BinarioEj. 1010011010Ej. 1010011010Ej. 1010011010Ej. 1010011010

Conjunto de Instrucciones y Conjunto de Instrucciones y Conjunto de Instrucciones y Conjunto de Instrucciones y op. Arit. elementalesop. Arit. elementalesop. Arit. elementalesop. Arit. elementales

Conjunto de Instruciones Conjunto de Instruciones Conjunto de Instruciones Conjunto de Instruciones que no dependen de la que no dependen de la que no dependen de la que no dependen de la maquina.maquina.maquina.maquina.

ENSAMBLADORENSAMBLADOR

Macro ensamblador Lenguaje de Máquina

software

Programa en lenguaje ensamblador

Hace referencia directaCPU

traduce

Lenguaje de Alto Nivel

traducir Único Medio

Hace referencia directaAl hardware

No es portable, dependeDe sus circuitosintegrados

CPUPrograma específico

Estrecha relación con laArquitectura de cada

computadora

Circuitos Electrónicos de memoria de propósitoGeneral para formar registros

AX, BX, CX, DX

AMBIENTE DEL SOFTWARE EN EL AMBIENTE DEL SOFTWARE EN EL

MICROPROCESADOR IBM 8088MICROPROCESADOR IBM 8088

MicroprocesadorIntel 8088

-ROM -Integra la configuración

SOFTWARE

Configuración PC

-ROM

-RAM

-Generador Reloj (8259A)

-Multiplexores

-Controlador de Periféricos de

E/S.

-Integra la configuración del Sistema.- Mov. De Datos entre dif. Componentes.

ARQUITECTURA PRINCIPAL DEL S.OARQUITECTURA PRINCIPAL DEL S.O

Iniciar PC ROMMicroprograma

SO(Flexible o Duro) SSOO

MEMORIA

Rutinas del BIOS

Procesador de Comandos

COMMAND.COMIBMBIO.COM IBMDOS.COM

Carga

COMMAND.COMIBMBIO.COM IBMDOS.COM

No Visibles

Porción del Bios(ROM)

- Que Permite Manejar

Todos los dispositivos

- Controlar Tareas I/O

Rutinas de servicio al S.O

->Llamadas mediante

Interrupciones

EJ. 10H (Monitor de video)

Espacio LibrePara comandos

Según se requiera.Programas y datos.

Maneja comandos ingresados desde teclado.

SEGMENTO Y DESPLAZAMIENTOSEGMENTO Y DESPLAZAMIENTO

CPU

Trabaja

20 bits

64 KBytes

Memoria RAM64 K

BytesLa dirección inicial de un segmento

define su localización.

16 Bytes

Puede estar contenida 1 de los 4 registros disponibles.

- Código

- Datos

- Stack

- Extra

SEGMENTOSSEGMENTOS

SegmentoSegmentoSegmentoSegmento dededede CódigoCódigoCódigoCódigo:::: ContieneContieneContieneContiene lalalala direccióndireccióndireccióndirección dededede inicioinicioinicioinicio dededede

segmentosegmentosegmentosegmento dondedondedondedonde residenresidenresidenresiden laslaslaslas instruccionesinstruccionesinstruccionesinstrucciones deldeldeldel programaprogramaprogramaprograma enenenen

ejecuciónejecuciónejecuciónejecución....

SegmentoSegmentoSegmentoSegmento dededede DatosDatosDatosDatos:::: SeñalaSeñalaSeñalaSeñala haciahaciahaciahacia lalalala direccióndireccióndireccióndirección enenenen dondedondedondedonde sesesese

iniciainiciainiciainicia elelelel segmentosegmentosegmentosegmento enenenen elelelel sesesese definedefinedefinedefine laslaslaslas variablesvariablesvariablesvariables....iniciainiciainiciainicia elelelel segmentosegmentosegmentosegmento enenenen elelelel sesesese definedefinedefinedefine laslaslaslas variablesvariablesvariablesvariables....

SegmentoSegmentoSegmentoSegmento dededede StackStackStackStack.... SeñalaSeñalaSeñalaSeñala elelelel segmentosegmentosegmentosegmento enenenen dondedondedondedonde sesesese

encuentraencuentraencuentraencuentra lalalala pilapilapilapila....(En(En(En(En dondedondedondedonde puedenpuedenpuedenpueden colocarsecolocarsecolocarsecolocarse bytesbytesbytesbytes oooo labraslabraslabraslabras

unaunaunauna trastrastrastras otrasotrasotrasotras yyyy luegoluegoluegoluego recuperarse)recuperarse)recuperarse)recuperarse)....

SegmentoSegmentoSegmentoSegmento ExtraExtraExtraExtra:::: ApuntaApuntaApuntaApunta alalalal segmentosegmentosegmentosegmento definidodefinidodefinidodefinido porporporpor elelelel usuariousuariousuariousuario

yyyy quequequeque contienecontienecontienecontiene datosdatosdatosdatos adicionalesadicionalesadicionalesadicionales....

Dirección Completa en 1 MBDirección Completa en 1 MBMemoria RAM

65 535….

Dirección del segmento

0

1

2

….

DIRECCIÓN SEGMENTO +

DIRECCIÓN DEL DESPLAZAMIETNO

El encadenador linker es quien define las direcciones de los segmentos.

Ejemplo.Ejemplo.

En BinarioEn BinarioEn BinarioEn Binario

0001 0000 1010 1111 (0000) Dir. Segemnto0001 0000 1010 1111 (0000) Dir. Segemnto0001 0000 1010 1111 (0000) Dir. Segemnto0001 0000 1010 1111 (0000) Dir. Segemnto

1111 0000 1111 1111 Dir. Dezplazamient1111 0000 1111 1111 Dir. Dezplazamient1111 0000 1111 1111 Dir. Dezplazamient1111 0000 1111 1111 Dir. Dezplazamient

0001 1111 1011 1110 1111 Dir. 20 Bits0001 1111 1011 1110 1111 Dir. 20 Bits0001 1111 1011 1110 1111 Dir. 20 Bits0001 1111 1011 1110 1111 Dir. 20 Bits0001 1111 1011 1110 1111 Dir. 20 Bits0001 1111 1011 1110 1111 Dir. 20 Bits0001 1111 1011 1110 1111 Dir. 20 Bits0001 1111 1011 1110 1111 Dir. 20 Bits

En Hexadecimal.En Hexadecimal.En Hexadecimal.En Hexadecimal.

10AF(0)10AF(0)10AF(0)10AF(0)

F 0F FF 0F FF 0F FF 0F F

1FBEF1FBEF1FBEF1FBEF

REGISTROSREGISTROS

� CS Registro del segmento de código CS Registro del segmento de código CS Registro del segmento de código CS Registro del segmento de código ---- DS Registro del segmento de datosDS Registro del segmento de datosDS Registro del segmento de datosDS Registro del segmento de datos� SS Registro del segmento de pila SS Registro del segmento de pila SS Registro del segmento de pila SS Registro del segmento de pila ---- ES Registro del segmento extraES Registro del segmento extraES Registro del segmento extraES Registro del segmento extra

Los registros internos del microprocesador INTEL 8088 son conocidos por sus Los registros internos del microprocesador INTEL 8088 son conocidos por sus Los registros internos del microprocesador INTEL 8088 son conocidos por sus Los registros internos del microprocesador INTEL 8088 son conocidos por sus nombres específicos: nombres específicos: nombres específicos: nombres específicos:

---- AX AcumuladorAX AcumuladorAX AcumuladorAX Acumulador ---- BX Registro baseBX Registro baseBX Registro baseBX Registro base---- CX Registro contadorCX Registro contadorCX Registro contadorCX Registro contador ---- DX Registro de datosDX Registro de datosDX Registro de datosDX Registro de datos

� SS Registro del segmento de pila SS Registro del segmento de pila SS Registro del segmento de pila SS Registro del segmento de pila ---- ES Registro del segmento extraES Registro del segmento extraES Registro del segmento extraES Registro del segmento extra

• SI Registro Índice fuenteSI Registro Índice fuenteSI Registro Índice fuenteSI Registro Índice fuente• DI Registro Índice destinoDI Registro Índice destinoDI Registro Índice destinoDI Registro Índice destino• IP Registro de apuntador de siguiente instrucciónIP Registro de apuntador de siguiente instrucciónIP Registro de apuntador de siguiente instrucciónIP Registro de apuntador de siguiente instrucción• F Registro de banderasF Registro de banderasF Registro de banderasF Registro de banderas

• BP Registro de apuntadores baseBP Registro de apuntadores baseBP Registro de apuntadores baseBP Registro de apuntadores base• SP Registro del apuntador de la pilaSP Registro del apuntador de la pilaSP Registro del apuntador de la pilaSP Registro del apuntador de la pila

REGISTROSREGISTROSREGISTROSREGISTROSREGISTROSREGISTROSREGISTROSREGISTROSREGISTROSREGISTROSREGISTROSREGISTROSREGISTROSREGISTROSREGISTROSREGISTROS

Proporcionar

capacidad aritmética.

Los registros del procesador se emplean para:

Los registros se dividen en:

Controlar Controlar instruccion

es en ejecución,

Manejar Manejar direccionamiento de memoria y

Los registros se dividen en:

◦ Registros de segmento◦ Registros de apuntadores de instrucciones◦ Registros apuntadores◦ Registros de propósitos generales◦ Registro índice◦ Registro de bandera.

CUADRO COMPARATIVOCUADRO COMPARATIVOCUADRO COMPARATIVOCUADRO COMPARATIVOCUADRO COMPARATIVOCUADRO COMPARATIVOCUADRO COMPARATIVOCUADRO COMPARATIVOTIPOS DE REGISTROS FUNCION

Registros de Segmento

Un registro de segmento tiene 16 bits de longitud y facilita un

área de memoria para el direccionamiento conocida como el

segmento actual

Registros de Apuntador de

Instrucciones

Este registro esta compuesto por 16 bits y contiene el

desplazamiento de la siguiente instrucción que se va a ejecutar.

Registros Apuntadores Permiten al sistema accesar datos al segmento de la pila.

Registros de Propósito

General

Son los caballos de batalla del sistema y pueden ser

direccionados como una palabra o como una parte de un bytes.

Registros Indices Sirven para el direccionamiento de indexado y para las

operaciones de sumas y restas.

Registros de Banderas Sirven para indicar el estado actual de la maquina y el resultado

del procesamiento. De los 16 bits de registro de bandera 9 son

comunes a toda la familia de los procesadores 8086.

INTEL 8088INTEL 8088INTEL 8088INTEL 8088INTEL 8088INTEL 8088INTEL 8088INTEL 8088

� Los IntelIntelIntelIntel 8088808880888088 es un microprocesador de 16 bitsdiseñados por Intel en 1978, iniciadores de laarquitectura x86, utiliza un bus externo de 8bits, para poder emplear circuitos de soporte almicroprocesador.

Registros de propósito general

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

| AH | AL | | AX+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| BH | BL | | BX

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

| CH | CL | | CX

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

| DH | DL | | DX

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

Registros de segmento+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| CS | | Código+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| DS | | Datos+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| ES | | Extra+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| SS | | Pila+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

LosLosLosLos registrosregistrosregistrosregistros internosinternosinternosinternos deldeldeldel microprocesadormicroprocesadormicroprocesadormicroprocesador INTELINTELINTELINTEL 8088808880888088 sonsonsonson conocidosconocidosconocidosconocidosporporporpor sussussussus nombresnombresnombresnombres específicosespecíficosespecíficosespecíficos::::

Registros índices

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

| SI | | Indice Fuente+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| DI | | Ind. Destino+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| BP | | A. Base+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| SP | | A. de Pila+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Apuntador de Instrucción+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| IP | | A. I.+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

CF Bandera de acarreos

PF Bandera de Paridad

AF Bandera auxiliar de acarreos

ZF Bandera de cero

Registro de Banderas+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|- - - - O D I T S Z - A - P – C | Banderas+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

ZF Bandera de cero

SF Bandera de signo

TF Bandera de trampa

IF Bandera de habilitación de interrupción

DF Bandera de Dirección

OF Bandera de sobre flujo

INTERRUPCIONESINTERRUPCIONESINTERRUPCIONESINTERRUPCIONESINTERRUPCIONESINTERRUPCIONESINTERRUPCIONESINTERRUPCIONES

◦ Una interrupción es una instrucción quedetiene la ejecución de un programa parapermitir el uso de la UCP a un procesoprioritario. Una vez concluido este últimoprioritario. Una vez concluido este últimoproceso se devuelve el control a la aplicaciónanterior.

RUTINAS UTILIZADAS PARA PROGRAMAR EN RUTINAS UTILIZADAS PARA PROGRAMAR EN RUTINAS UTILIZADAS PARA PROGRAMAR EN RUTINAS UTILIZADAS PARA PROGRAMAR EN RUTINAS UTILIZADAS PARA PROGRAMAR EN RUTINAS UTILIZADAS PARA PROGRAMAR EN RUTINAS UTILIZADAS PARA PROGRAMAR EN RUTINAS UTILIZADAS PARA PROGRAMAR EN LENGUAJE ENSABLADORLENGUAJE ENSABLADORLENGUAJE ENSABLADORLENGUAJE ENSABLADORLENGUAJE ENSABLADORLENGUAJE ENSABLADORLENGUAJE ENSABLADORLENGUAJE ENSABLADOR

EDITOREDITOREDITOREDITOR:::: Programa en el cual se puede crear código fuente. (Bloc denotas, Word, Edit de DOS, etc). Este archivo puede tener extensión.asm, .txt.

TASMTASMTASMTASM:::: Programa que se emplea para ensamblar código fuente y

generar código objeto ( Código intermedio). Este archivo tendrá

extensión .obj.extensión .obj.

TLINKTLINKTLINKTLINK:::: Programa que se emplea para encadenar diversos módulosobjeto. Se encarga de asignar localidades de memoria absolutas pararelocalizar al código objeto. En esta rutina se creará dos archivo uno deextensión *.exe y *.map.

DEBUGDEBUGDEBUGDEBUG:::: Para correr un programa paso a paso, y examinando el cambiodinámico d la memoria.

FORMATO INTERNO DE UN PROGRAMAFORMATO INTERNO DE UN PROGRAMAFORMATO INTERNO DE UN PROGRAMAFORMATO INTERNO DE UN PROGRAMAFORMATO INTERNO DE UN PROGRAMAFORMATO INTERNO DE UN PROGRAMAFORMATO INTERNO DE UN PROGRAMAFORMATO INTERNO DE UN PROGRAMA

Básicamente el formato de una línea de código en lenguaje

ensamblador consta de cuatro partes:

---- Etiqueta,Etiqueta,Etiqueta,Etiqueta, variablevariablevariablevariable oooo constanteconstanteconstanteconstante:::: No siempre es definida, si se

define es necesario utilizar separadores para diferenciarla dedefine es necesario utilizar separadores para diferenciarla de

las otras partes, usualmente espacios, o algún símbolo

especial.

---- DirectivaDirectivaDirectivaDirectiva oooo instruccióninstruccióninstruccióninstrucción:::: Es el nombre con el que se conoce

a la instrucción que queremos que se ejecute.

---- OperandoOperandoOperandoOperando (s)(s)(s)(s):::: la mayoría de las instrucciones en ensamblador

trabajan con dos operándos, aunque hay instrucciones que

funcionan solo con uno. Los operandos se separan uno del

otro por medio de una coma ",".

FORMATO INTERNO DE UN PROGRAMAFORMATO INTERNO DE UN PROGRAMAFORMATO INTERNO DE UN PROGRAMAFORMATO INTERNO DE UN PROGRAMAFORMATO INTERNO DE UN PROGRAMAFORMATO INTERNO DE UN PROGRAMAFORMATO INTERNO DE UN PROGRAMAFORMATO INTERNO DE UN PROGRAMA

EjEjEjEj.... MOV destino, fuente

---- ComentariosComentariosComentariosComentarios:::: SeSeSeSe empiezanempiezanempiezanempiezan conconconcon ““““;;;;””””

EjEjEjEj.... MOVMOVMOVMOV AX,AX,AX,AX,001001001001HHHH ; Inicializa AX con el valor 001HInicializa AX con el valor 001HInicializa AX con el valor 001HInicializa AX con el valor 001H

FORMATO EXTERNO DE UN PROGRAMAFORMATO EXTERNO DE UN PROGRAMAFORMATO EXTERNO DE UN PROGRAMAFORMATO EXTERNO DE UN PROGRAMAFORMATO EXTERNO DE UN PROGRAMAFORMATO EXTERNO DE UN PROGRAMAFORMATO EXTERNO DE UN PROGRAMAFORMATO EXTERNO DE UN PROGRAMA

DIRECCIONAMIENTODIRECCIONAMIENTO

El campo de operación de una instrucción, especifica la operación que se deberealizar. Esta debe ser ejecutada sobre algunos datos almacenados en registrosdel computador o en palabras de memoria, es decir, sobre los operandos. Elmodo de direccionamiento especifica la forma de interpretar la informacióncontenida en cada campo de operando, para localizar en base a estainformación el operando.

Los ordenadores utilizan técnicas de direccionamiento con los siguientesfines:Dar versatilidad de programación al usuario proporcionando facilidades talescomo índices,direccionamientos indirectos, etc., esta versatilidad nos servirá para manejarestructuras dedatos complejas como vectores, matrices, etc.

Reducir el número de bits del campo de operando.

La variedad de modos de direccionamiento en un ordenador puede parecerexcesivamente complicada. Sin embargo, la disponibilidad de diferentesesquemas de direccionamiento da flexibilidad para escribir programas que sonmás eficientes en cuanto a número de instrucciones y tiempo de ejecución.Es tal la importancia de los modos de direccionamiento que la potencia deuna máquina se mide tanto por su repertorio de instrucciones como por lavariedad de modos de direccionamiento que es capaz de admitir.

Definición : Los modos de direccionamiento de un ordenador son las diferentes•Definición : Los modos de direccionamiento de un ordenador son las diferentesformas de transformación del campo de operando de la instrucción en ladirección del operando.

En esta definición el término dirección debe interpretarse en su sentido másgeneral de localización del operando, en cualquier lugar, y no en el sentido másestricto de dirección de memoria.

Modos de DIRECCIONAMIENTO más usualesModos de DIRECCIONAMIENTO más usuales

MLa mayoría de estos modos son comunes en muchas máquinas, sin embargo,hay otros que sólo se usan en determinados procesadores.

InmediatoDirectoDirectoIndirectoRegistroIndirecto con registroCon desplazamientoPila

Modos de Direccionamiento BásicosModos de Direccionamiento Básicos

MODOMODOMODOMODO ALGORITMOALGORITMOALGORITMOALGORITMO PRINCIPALPRINCIPALPRINCIPALPRINCIPAL VENTAJAVENTAJAVENTAJAVENTAJA PRINCIPALPRINCIPALPRINCIPALPRINCIPAL DESVENTAJADESVENTAJADESVENTAJADESVENTAJA

Inmediato Operando =A No referencia a memoria Operando de magnitudlimitada

Indirecto EA = A Es sencillo Espacio de direccioneslimitado

Directo EA = (A) Espacio de direcciones grande Referencia a memoriasmúltiples

Registro EA = R No referencia a memoria Número limitado deregistros

Indirecto conregistro

EA = (R) Espacio de direcciones grande Referencia extra amemoria

Con dezpla-zamiento

EA = A + (R) Flexibilidad Complejidad

Pila EA = cabecera dela pila

No referencia a memoria Aplicabilidad limitada

operando

Instrucción

Direccionamiento InmediatoDireccionamiento Inmediato (o literal)

Es la forma más sencilla, en la que eloperando esta presente en la propiainstrucción.

OPERANDO = A

Este nodo es utilizado para definir y utilizar constantes y para fijar valores iníciales devariables. Normalmente, el número se almacena en complemento a dos. Cuando elvariables. Normalmente, el número se almacena en complemento a dos. Cuando eloperando se carga en un registro de datos, el bit de signo se replica hacia la izquierdahasta la longitud total de la palabra de datos.* La ventaja es que una vez captada la instrucción, no se requiere una referencia a

memoria para obtener el operando, ahorrándose pues un ciclo de memoria o de cacheen el ciclo de instrucción.* La desventaja es que el tamaño del número está restringido a la longitud del campo

de direcciones.

A

Instrucción

Memoria

Direccionamiento Directo Direccionamiento Directo (o absoluto)

Es otra de las formas sencillas en la que elcampo de direcciones contiene la direcciónefectiva del operando.

EA = AEsta técnica fue común en las primerasgeneraciones de computadores y se encuentra

Operando

generaciones de computadores y se encuentraaún en un pequeño grupo de sistemas. Sólonecesita una referencia a memoria y nonecesita ningún cálculo especial.

Direccionamiento Indirecto

El Problema del direccionamiento directo esque la longitud del campo de direcciones esnormalmente menor que la longitud de palabra,limitando pues el rango de direcciones. Unasolución es hacer que el campo de direccionesreferencie la dirección de una palabra dememoria , la cual contenga la direccióncompleta del operando.

AInstrucción

Memoria

Operando

EA = (A)

**La ventaja de esta aproximación es que para una longitud de palabra de N bits, sedispone ahora de un espacio de direcciones de 2N.

**La desventaja es que la ejecución de la instrucción requiere dos referencias a memoriapara capturar el operando: una para captar su dirección, y otra para obtener su valor.

Direccionamiento Direccionamiento de registrode registro

El direccionamiento de registros es similar al directo. La única diferencia es que el campo de

Direcciones. Referencia. Un registro, en lugar de una dirección de memoria principal.EA = R

Normalmente un campo de direcciones que referencia a registros consta de 3 o 4 bits de manera que pueden referenciarse un total de 8 a 16 registros de uso general.

Ventajas:

Solo es necesario un campo pequeño en la instrucción.No se requiere referencias a memoria.

Desventajas:

Es que el espacio de memoria es muy limitado.

RInstrucción

Registros

Operando

DIRECCIONAMIENTO INDIRECTO CON DIRECCIONAMIENTO INDIRECTO CON REGISTROSREGISTROS

Igual que el direccionamiento de registroses análogo al directo, eldireccionamiento indirecto con registros esanálogo al direccionamiento indirecto.En ambos casos, la diferencia estriba en si elcampo de direcciones hace referenciaA una posición de memoria o a un registro.

EA = (R)

R

Instrucción

Registros

Operando

Memoria

EA = (R)

Las ventajas y limitaciones del direccionamiento indirecto con registros son básicamenteLas mismas que se tienen para el direccionamiento indirecto.En ambos casos la limitación del espacio.Además el direccionamiento indirecto con registro emplea una referencia menos amemoria que el direccionamiento indirecto

Operando

Direccionamiento con Direccionamiento con desplazamientodesplazamientoUn modo muy potente dedireccionamiento combina lasposibilidades de losDireccionamientos directo eindirecto con registros . A este sele conoce conDistintos nombres dependiendo elcontexto en que se emplee.

R A

Instrucción

RegistrosOperando

Memoria

contexto en que se emplee.EA = A + (R)

Este requiere que las instrucciones tengan dos campos de direcciones al menosUno de ellos explicito .El valor contenido en uno de los campos de direcciones (valor = A) se utilizadirectamente ; el otro campo de direcciones, o una referencia implícita definidapor el código de operación, se refiere a un registro cuyo contenido se suma a Apara generar la dirección afectiva

Registros

Direccionamiento de PilaDireccionamiento de Pila

Esta definida una pila como una matriz linealde posiciones. A veces se le denomina lista deapilamiento o cola ultimo en entrar –primero en salirUna pila es un bloque de posicionesreservado.los elementos se añaden en lacabecera de la pila.La pila tiene asociado un puntero, cuyo valor

Instrucción

Implícita

La pila tiene asociado un puntero, cuyo valores la dirección de la cabecera o tope de lapila.

El modo de direccionamiento de pila es una forma de direccionamiento implícito.Las instrucciones maquina no necesitan incluir una referencia a memoria sino queOperan implícitamente a la cabecera de la pila.

Registro cabecerade pila

Modos de direccionamiento en el Pentium y Modos de direccionamiento en el Pentium y el Power PCel Power PC

Modos de direccionamiento en el Pentium II.-El Pentium II esta equipado con diversos modos de direccionamiento ideado para Permitir la ejecución eficiente de lenguajes de alto nivel.

ModoModoModoModo AlgoritmoAlgoritmoAlgoritmoAlgoritmo

Inmediato Operando = A

Registro LA = RRegistro LA = R

Con desplazamiento LA = ( SR ) + A

Base LA = ( SR ) + ( B )

Base con desplazamiento LA = ( SR ) + ( B ) +A

Índice escalado con desplazamiento LA = ( SR ) + ( I ) * S + A

Base con índice y desplazamiento LA = ( SR ) + ( B ) + ( I ) + A

Base con índice escalado ydesplazamiento

LA = ( SR ) + ( I ) * S + ( B) + A

Relativo LA = ( PC ) + A

Siendo :LA = dirección lineal(X) = contenido de XSR = registro de segmentosPC = contador de programaA = contenido de un campo de dirección de una instrucciónR = registroB = registro baseI = registro índiceS = factor de escala

En el modo inmediato, el operando se incluye en la instrucción. El operando Puede ser un byte, una palabra o una palabra doble de datos.

En el modo de operando de registro, el operando esta situado en un registropara instrucciones de tipo general tales como instrucciones de transferencia de datos, aritméticas y lógicas el operando puede ser :De 32 bits (EAX, ECX, EDX, ESI, EDI, ESP, EBP)De 16 bits (AX, BX, CX, DX,SI, DI,SP,BP)De 8 bits ( AH, BH, CH, DH, AL, BL, CL, DL)

En el modo de desplazamiento, el desplazamiento del operando esta incluido formandoEn el modo de desplazamiento, el desplazamiento del operando esta incluido formandoparte de la instrucción como desplazamiento de 8, 16 o 32 bits.El modo de direccionamiento con desplazamiento se puede encontrar en pocasmáquinas ya que estas implica instrucciones largas, en el caso del Pentium IIEl valor del desplazamiento puede ser tan largo como 32 bits.El direccionamiento con desplazamiento puede ser util para referenciarvariables globales.

El modo base especifica que uno de los registros de 8,16 o 32 bits contienela dirección efectiva. Esto es equivalente a lo que hemos denominado “direccionamiento indirecto con registros”

En el modo base con desplazamiento, la instrucción incluye un desplazamientoque hay que sumar a un registro base que puede ser cualquiera de los registros de uso general.

En el modo desplazamiento con índice escalonado, la instrucción incluye un En el modo desplazamiento con índice escalonado, la instrucción incluye un desplazamiento a sumar un registro llamado en este caso “registro índice ”el registro índice puede ser cualquiera de los registros de uso excepto el ESP,que normalmente se emplea para procesamiento de pila.

El modo base con índice y desplazamiento, suma los contenidos de los registros base e índice y un desplazamiento para formar una dirección efectiva.

El modo base con índice escalonado y desplazamiento suma el contenido de registros índice multiplicado por un factor de escala, con el contenido de registro base y el desplazamiento.

Finalmente el direccionamiento relativo puede emplearse en instrucciones de transferencia de control. Se suma un desplazamiento al valor del contador de programa que apunta a la instrucción siguiente.

MODO DE DIRECCIONAMIENTO DEL PowerPCMODO DE DIRECCIONAMIENTO DEL PowerPCMODO DE DIRECCIONAMIENTO DEL PowerPCMODO DE DIRECCIONAMIENTO DEL PowerPC

El PowerPc emplea un conjunto de modos de direccionamiento sencillo y relativamente evidente, como lo vemos a continuación.

Modo Algoritmo

Índice Indirecto indexado Direccionamiento para carga/memorizaciónEA = ( BR ) + DEA = ( BR ) + ( IR )

Absoluto Relativo Indirecto Direccionamiento de bifurcacionesEA = IEA = ( PC ) +IEA = ( L/CR )

Registro Inmediato Cálculos en coma fijaEA = GPROperando = 1

Registro Calculo en coma flotanteRegistro Calculo en coma flotanteEA = FPR

Siendo :

LA = dirección lineal GPR = registro de uso general(X) = contenido de X FPR = registro de coma flotanteBR = registro base D = desplazamientoIR = registro índice I = valor inmediatoL/CR = registro de enlace o de cuenta PC = contador de programa

Direccionamiento para Carga/memorizaciónDireccionamiento para Carga/memorización

El PowerPc proporciona dos modos de direccionamiento alternativos parainstrucciones de carga/memorización.En el direccionamiento indirecto, la instrucción incluye un desplazamiento de 16bits que se suma a un registro base, que puede ser alguno de los registros de usogeneral. Además, la instrucción puede especificar que la nueva dirección efectiva.

Registro Base

Desplazamiento con signo

Registro Base

Registro Índice

Dirección Lógica

s des

+

Con actualización

Dirección Lógica

s des

+

Base Índice

Con actualización

Direccionamiento de bifurcacionesDireccionamiento de bifurcaciones.

Se dispone de tres modos de direccionamiento para bifurcaciones.* Si se emplea direccionamiento absoluto* Con direccionamiento relativo* Con direccionamiento Indirecto

INSTRUCCIONESINSTRUCCIONESDELDEL

LENGUAJE LENGUAJE ENSAMBLADORENSAMBLADOR

INSTRUCCIONES DE TRANSFERENCIA

INSTRUCCIONES ARITMÉTICASINSTRUCCIONES ARITMÉTICAS

Las instrucciones ADD y SUBADD y SUBADD y SUBADD y SUB permiten realizar sumas y restas sencillas respectivamente.

Sintaxis:Sintaxis:Sintaxis:Sintaxis:ADD Destino, FuenteSUB Destino, Fuente

Ejemplos:Ejemplos:Ejemplos:Ejemplos:Ejemplos:Ejemplos:Ejemplos:Ejemplos:ADD AX,10 ;AX=AX+10SUB AX,BX ;AX=AX-BX

En las operaciones de suma y resta el resultado siempre es almacenado en el operando de destino, el cual puede ser un registro o una variable.

� MULMULMULMUL, El producto de una multiplicación siempre tiene eldoble de ancho. Si se multiplican dos números de 8 bits, elresultado será de 16 bits…

◦ EjemplosEjemplosEjemplosEjemplos::::MOV BL,5 ;Cargar datosMOV AL,10 ;MUL BL ; AX=AL*BL

� DIV,DIV,DIV,DIV, el dividendo es almacenado en el registro AX y el divisor puede ser cualquier registro de 8 bits o cualquier variable puede ser cualquier registro de 8 bits o cualquier variable declarada de tipo byte. Después de la división, el cociente es cargado en el registro AL y el residuo en el registro AH.

◦ Ejemplo de división sin signo:MOV AX,10MOV BL,5DIV BL

INSTRUCCIONES DE CONTEO

� Las instrucciones INCINCINCINC yyyy DECDECDECDEC permitenincrementar los contenidos de los registros y delas variables almacenadas en memoria.

� Ejemplos:

INC AX ;AX=AX+1INC AX ;AX=AX+1INC VAR1 ;VAR1=VAR1+1DEC AX ;AX=AX-1DEC VAR1 ;VAR1=VAR1-1

INSTRUCCIONES LOOP

� LOOPLOOPLOOPLOOP permite la programación de ciclos finitos.Esta instrucción trabaja en forma conjunta con el registro contadorCX. El formato general de esta instrucción es:

Mov CX,No_VecesEtiqueta:-------Loop Etiqueta

La instrucción LOOP ejecuta las instrucciones que se encuentran entre la Etiqueta: y Loop Etiqueta el numero de veces que indique el campo No_Veces.campo No_Veces.

Por ejemplo, el siguiente grupo de instrucciones incrementa en 1 el registro AX, esto lo repite 10 veces.Mov CX,10 ;10 vecesOtro:Inc AX ; AX=AX+1Loop Otro

La instrucción Loop decrementa el registro CX en cada iteración y se detiene cuando CX es igual a cero.

INSTRUCCIONES DEL STACK

� La pila es un grupo de localidades de memoria que sereservan con la finalidad de proporcionar un espacio parael almacenamiento temporal de información.

La pila de los programas es del tipo LIFO (Ultimo enentrar, Primero en salir).Para controlar la pila el microprocesador cuenta con dosinstrucciones básicas: Push (Meter) y Pop (sacar).

El formato de estas instrucciones es el siguiente:El formato de estas instrucciones es el siguiente:

Push operando Push AX ;Pila=5

Pop operando Pop BX ;BX=5

Cuando se ejecuta la instrucción Push, el contenido del operando se almacena en la ultima posición de la pila.

INSTRUCCIONES LOGICASINSTRUCCIONES LOGICAS

INSTRUCCIONES DE CARGA

CONCLUSIONESCONCLUSIONES

� Trabaja directamente con el microprocesador alejecutar un programa, como este lenguaje es el mascercano a la máquina la computadora lo procesamas rápido.

� Un programa en ensamblador no ocupa mucho� Un programa en ensamblador no ocupa muchoespacio en memoria porque no tiene que cargarlibrerías como lo hacen los lenguajes de alto nivel.

� Uno de los limitantes es el tiempo de programación,como es un lenguaje de bajo nivel requiere másinstrucciones para realizar el mismo proceso, encomparación con un lenguaje de alto nivel.