Vous êtes sur la page 1sur 25

Unidad I Lenguaje Ensamblador

Contenid o
1.1 Importancia de la programacin en Lenguaje Ensamblador ....................................... 3 1.2 El procesador y sus registros internos ................................................................................... 4 1.3 La memoria principal (RAM) .................................................................................................... 7 1.4 Concepto De Interrupcin. ............................................................................................................ 8 1.5 Llamadas A Servicios el Sistema. ........................................................................................ 9 1.! Modos e ireccionamiento. ................................................................................................. 10 Direccionamiento Directo. ................................................................................................. 11 Direccionamiento Relativo................................................................................................. 12 Direccionamiento Indirecto. .............................................................................................. 12 Direccionamiento Implcito. ............................................................................................... 13 Direccionamiento de Registro. ......................................................................................... 13 Direccionamiento Indirecto por Registro. ..................................................................... 13 1." #roceso de ensam$lado y ligado .......................................................................................... 14 1.% esplegado de mensa&es en el monitor ............................................................................... 15

ITS de Jes s !arranza

2 Ing. Erik Ocampo Martnez

Unidad I Lenguaje Ensamblador

UNIDAD I '()R* +,,'*( AL LE(-+A.E E(SAM/LA *R 1.1 Importancia de la programacin en Lenguaje Ensamblador De!inicin El lengua&e ensam$lador es un tipo de lengua&e de $a&o nivel utili0ado para escri$ir programas in1orm2ticos3 y constituye la representaci4n m2s directa del c4digo m25uina espec61ico para cada ar5uitectura de microprocesador. La importancia del lengua&e ensam$lador es principalmente 5ue se tra$a&a directamente con el microprocesador7 por lo cual se de$e de conocer el 1uncionamiento interno de este3 tiene la venta&a de 5ue en 8l se puede reali0ar cual5uier tipo de programas 5ue en los lengua&es de alto nivel no lo pueden reali0ar. *tro punto ser6a 5ue los programas en ensam$lador ocupan menos espacio en memoria.

"entajas # desventajas del Lenguaje Ensamblador 9enta&as 1. ,omo tra$a&a directamente con el microprocesador al e&ecutar un programa3 pues como este lengua&e es el m2s cercano a la m25uina la computadora lo procesa m2s r2pido. 2. E!iciencia de tama$o.: +n programa en ensam$lador no ocupa muc;o espacio en memoria por5ue no tiene 5ue cargan li$rer6as y dem2s como son los lengua&es de alto nivel. 3. %le&ibilidad.: En lengua&e ensam$lador se pueden ;acer tareas espec61icas 5ue en un lengua&e de alto nivel no se pueden llevar aca$o por5ue tienen ciertas limitantes 5ue no se lo permite.

ITS de Jes s !arranza

3 Ing. Erik Ocampo Martnez

Unidad I Lenguaje Ensamblador

1.2 El procesador y sus registros internos El procesador es un elemento importante del ;ard<are de la #,. Es la unidad del sistema3 5ue contiene una tar&eta de sistema3 1uente de poder y ranuras de e=pansi4n para tar&etas opcionales. Los elementos de la tar&eta de sistema son un microprocesador3 memoria de solo lectura (R*M) y memoria de acceso aleatorio (RAM).

RE'I()R*( IN)ERN*( DEL +R*,E(AD*R. Los registros del procesador se emplean para controlar instrucciones en e&ecuci4n3 mane&ar direccionamiento de memoria y proporcionar capacidad aritm8tica. Los registros son direcciona$les por medio de un nom$re. Los $its por convenci4n3 se numeran de derec;a a i05uierda3 como en> ... 15 1? 13 12 11 1@ A % " ! 5 ? 3 2 1 @ Registros de segmento +n registro de segmento tiene 1! $its de longitud y 1acilita un 2rea de memoria para direccionamiento conocida como el segmento actual. Registro ,(. El *S almacena la direcci4n inicial del segmento de c4digo de un programa en el registro ,S. Esta direcci4n de segmento3 m2s un valor de despla0amiento en el registro apuntador de instrucci4n ('#)3 indica la direcci4n de una instrucci4n 5ue es $uscada para su e&ecuci4n. Registro D(. La direcci4n inicial de un segmento de datos de programa es almacenada en el registro S. En t8rminos sencillos3 esta direcci4n3 m2s un valor de despla0amiento en una instrucci4n3 genera una re1erencia a la localidad de un $yte especi1ico en el segmento de datos. Registro ((. El registro SS permite la colocaci4n en memoria de una pila3 para almacenamiento temporal de direcciones y datos. El *S almacena la direcci4n de inicio del segmento de pila de un programa en el registro SS. Esta direcci4n de segmento3 m2s un valor de despla0amiento en el registro del apuntador de pila (S#)3 indica la pala$ra actual en la pila 5ue est2 siendo direccionada. Registros E(. Algunas operaciones con cadenas de caracteres (datos de caracteres) utili0an el registro e=tra de segmento para mane&ar el direccionamiento de memoria. En este conte=to3 el registro ES est2 asociado
4 Ing. Erik Ocampo Martnez

ITS de Jes s !arranza

Unidad I Lenguaje Ensamblador

con el registro ' (6ndice). +n programa 5ue re5uiere el uso del registro ES puede iniciali0arlo con una direcci4n de segmento apropiada. Registros %( # '(. Son registros e=tra de segmento en los procesadores %@3%! y posteriores.

Registros de propsito general. Son Bnicos en el sentido de 5ue se puede direccionarlos como una pala$ra o como una parte de un $yte. El Bltimo $yte de la i05uierda es la parte CaltaC3 y el Bltimo $yte de la derec;a es la parte C$a&aC. #or e&emplo3 el registro ,D consta de una parte ,E (alta) y una parte ,l ($a&a)3 y usted puede re1erirse a cual5uier parte por su nom$re. Registro A-. El registro AD3 el acumulador principal3 es utili0ado para operaciones 5ue implican entradaFsalida y la mayor parte de la aritm8tica. #or e&emplo3 las instrucciones para multiplicar3 dividir y traducir suponen el uso del AD. )am$i8n3 algunas operaciones generan c4digo m2s e1iciente si se re1ieren al AD en lugar de a los otros registros.

Registro .-. El /D es conocido como el registro $ase ya 5ue es el Bnico registro de prop4sito general 5ue puede ser 6ndice para direccionamiento inde=ado. )am$i8n es comBn emplear el /D para c2lculos.

Registro D-. El D es conocido como el registro de datos. Algunas operaciones de entradaFsalida re5uieren uso3 y las operaciones de multiplicaci4n y divisi4n con ci1ras grandes suponen al D y al AD tra$a&ando &untos.

Registro de Apuntador de Instrucciones.


5 Ing. Erik Ocampo Martnez

ITS de Jes s !arranza

Unidad I Lenguaje Ensamblador

El registro apuntador de instrucciones ('#) de 1! $its contiene el despla0amiento de direcci4n de la siguiente instrucci4n 5ue se e&ecuta. El '# est2 asociado con el registro ,S en el sentido de 5ue el '# indica la instrucci4n actual dentro del segmento de c4digo 5ue se est2 e&ecutando actualmente. Los procesadores %@3%! y posteriores tienen un '# ampliado de 32 $its3 llamado E'#. Registros Apuntadores. Los registros S# (apuntador de la pila) G /# (apuntador de $ase) est2n asociados con el registro SS y permiten al sistema accesar datos en el segmento de la pila. Registro (+. El apuntador de la pila de 1! $its est2 asociado con el registro SS y proporciona un valor de despla0amiento 5ue se re1iere a la pala$ra actual 5ue est2 siendo procesada en la pila. El sistema mane&a de 1orma autom2tica estos registros. Registro .+. El /# de 1! $its 1acilita la re1erencia de par2metros3 los cuales son datos y direcciones transmitidos v6a pila. Registros /ndice. Los registros S' y para sumas y restas. ' est2n disponi$les para direccionamiento inde=ado y

Registro (I. El registro 6ndice 1uente de 1! $its es re5uerido por algunas operaciones con cadenas (de caracteres). En este conte=to3 el S' est2 asociado con el registro S. Registro DI. El registro 6ndice destino tam$i8n es re5uerido por algunas operaciones con cadenas de caracteres. En este conte=to3 el ' est2 asociado con el registro ES. Registro de .anderas. Sirven para indicar el estado actual de la m25uina y el resultado del procesamiento. Muc;as instrucciones 5ue piden comparaciones y aritm8tica cam$ian el estado de las $anderas3 algunas cuyas instrucciones pueden reali0ar prue$as para determinar la acci4n su$secuente> *% 0*ver!lo12 desbordamiento3. 'ndica des$ordamiento de un $it de orden alto (mas a la i05uierda) despu8s de una operaci4n aritm8tica. D% 0direccin3. esigna la direcci4n ;acia la i05uierda o ;acia la derec;a para mover o comparar cadenas de caracteres.
ITS !arrillo %uerto Lenguajes &e Inter'az 6 IS!" #$

Unidad I Lenguaje Ensamblador

I% 0interrupcin3. 'ndica 5ue una interrupci4n e=terna3 como la entrada desde el teclado3 sea procesada o ignorada. )% 0trampa3. #ermite la operaci4n del procesador en modo de un paso. Los programas depuradores3 como el E/+-3 activan esta $andera de manera 5ue usted pueda avan0ar en la e&ecuci4n de una sola instrucci4n a un tiempo3 para e=aminar el e1ecto de esa instrucci4n so$re los registros de memoria. (% 0signo3. ,ontiene el signo resultante de una operaci4n aritm8tica (@ H positivo y 1 H negativo). 4% 0cero3. 'ndica el resultado de una operaci4n aritm8tica o de comparaci4n (@ H resultado di1erente de cero y 1 H resultado igual a cero). A% 0acarreo au&iliar3. ,ontiene un acarreo e=terno del $it 3 en un dato de % $its para aritm8tica especiali0ada. +% 0paridad3. 'ndica paridad par o impar de una operaci4n en datos de % $its de $a&o orden (mas a la derec;a). ,% 0acarreo3. ,ontiene el acarreo de orden m2s alto (m2s a la i05uierda) despu8s de una operaci4n aritm8tica7 tam$i8n lleva el contenido del Bltimo $it en una operaci4n de corrimiento o de rotaci4n. Las $anderas est2n en el registro de $anderas en las siguientes posiciones>

1.3 La memoria principal (RAM)

RAM es el acr4nimo ingl8s de Random Access Memory (memoria de acceso aleatorio). Se trata de una memoria de semiconductor en la 5ue se puede tanto leer como escri$ir in1ormaci4n. Es una memoria vol2til3 es decir3 pierde su contenido al desconectar la energ6a el8ctrica. Se utili0a normalmente como memoria temporal para almacenar resultados intermedios y datos similares no permanentes. En estas memorias se accede a cada celda (generalmente se direcciona a
ITS !arrillo %uerto Lenguajes &e Inter'az 7 IS!" #$

nivel de $ytes) mediante un ca$leado interno3 es decir3 cada $yte tiene un camino pre1i&ado para entrar y salir3 a di1erencia de otros tipos de almacenamiento3 en las

Unidad I Lenguaje Ensamblador

ITS !arrillo %uerto

Lenguajes &e Inter'az

8 IS!" #$

Unidad I Lenguaje Ensamblador

5ue ;ay una ca$e0a lectogra$adora 5ue tiene 5ue u$icarse en la posici4n deseada antes de leer el dato deseado. Se dicen Cde acceso aleatorioC por5ue los di1erentes accesos son independientes entre s6. #or e&emplo3 si un disco r6gido de$e ;acer dos accesos consecutivos a sectores ale&ados 16sicamente entre s63 se pierde un tiempo en mover la ca$e0a ;asta la pista deseada (o esperar 5ue el sector pase por de$a&o3 si am$os est2n en la misma pista)3 tiempo 5ue no se pierde en la RAM. Las RAM se dividen en est5ticas # din5micas. +na memoria RAM est2tica mantiene su contenido inalterado mientras est8 alimentada. La in1ormaci4n contenida en una memoria RAM din2mica se degrada con el tiempo3 llegando 8sta a desaparecer3 a pesar de estar alimentada. #ara evitarlo ;ay 5ue restaurar la in1ormaci4n contenida en sus celdas a intervalos regulares3 operaci4n denominada re1resco. Las memorias se agrupan en m4dulos3 5ue se conectan a la placa $ase del computador. SegBn los tipos de conectores 5ue lleven los m4dulos3 se clasi1ican en M4dulos S'MM (Single 'n:line Memory Module)3 con 3@ o "2 contactos3 m4dulos 'MM ( ual 'n:line Memory Module)3 con 1!% contactos y m4dulos R'MM (RAM/+S 'n:line Memory Module) con 1%? contactos.

1.4 Concepto De Interrupcin.


+n procesador no puede procesar simult2neamente varios tro0os de in1ormaci4n (procesa un tro0o de in1ormaci4n a la ve0)3 un programa 5ue est2 siendo e&ecutado puede3 gracias al pedido de interrupcin3 ser moment2neamente suspendido mientras se produce una interrupci4n. El programa interrumpido puede continuar e&ecut2ndose luego. E=isten 25! direcciones de interrupci4n di1erentes. +na interrupci4n se convierte en una interrupci4n de ;ard<are cuando es solicitada por uno de los componentes de ;ard<are del e5uipo. En e1ecto3 e=isten varios peri18ricos en un e5uipo. Estos peri18ricos necesitan generalmente utili0ar los recursos del sistema aun5ue s4lo sea para comunicarse con el sistema mismo. ,uando un peri18rico desea acceder a un recurso3 env6a un pedido de interrupci4n al procesador para llamar su atenci4n. Los peri18ricos cuentan con un nBmero de interrupci4n 5ue se denomina 'RI (#eticiones de 'nterrupci4n. Es como si cada peri18rico tirara de un C;iloC 5ue est2 atado a una campana para
ITS !arrillo %uerto Lenguajes &e Inter'az 9 IS!" #$

seJalarle al e5uipo 5ue desea 5ue le preste atenci4n.

Unidad I Lenguaje Ensamblador

ITS !arrillo %uerto

Lenguajes &e Inter'az

10 IS!" #$

Unidad I Lenguaje Ensamblador

Este C;iloC es3 de ;ec;o3 una l6nea 16sica 5ue conecta cada ranura de e=pansi4n as6 como cada inter1a0 EFS a la placa madre. #ara una ranura 'SA de % $its3 por e&emplo3 ;ay % l6neas 'RI 5ue unen ranuras 'SA de % $its a la placa madre ('RI@ a 'RI"). Estos 'RI est2n controlados por un Ccontrolador de interrupci4nC 5ue se encarga de Kcederle la pala$raL al 'RI 5ue posee la mayor prioridad. Al aparecer las ranuras de 1! $its3 se agregaron 'RI % a 15. En consecuencia3 1ue necesario agregar un segundo controlador de interrupci4n. Los dos grupos de interrupciones est2n unidos por 'RI 2 el cual se conecta (o Cproduce una cascadaC) a 'RI A. En cierto modo3 esta cascada CinsertaC 'RI % a 15 entre 'RI1 y 3>

ado 5ue la prioridad va del 'RI in1erior al superior y 5ue se insertan 'RI % a 15 entre 'RI 1 y 33 el orden de prioridad es el siguiente> @ M 1 M % M A M 1@ M 11 M 12 M 13 M 1? M 15 M 3 M ? M 5 M ! M "

1.5 Llamadas A Servicios

el Sistema.

Las llamadas al sistema comBnmente usan una instrucci4n especial de la ,#+ 5ue causa 5ue el procesador trans1iera el control a un c4digo privilegiado. #reviamente especi1icado por el mismo c4digo. Esto permite al c4digo privilegiado especi1icar donde va a ser conectado as6 como el estado del procesador. ,uando una llamada al sistema es invocada3 la e&ecuci4n del programa 5ue invoca es interrumpida y sus datos son guardados3 normalmente en su #,/ (/lo5ue de ,ontrol de #roceso del ingl8s #rocess ,ontrol /locN)3 para poder continuar e&ecut2ndose luego. El procesador entonces comien0a a e&ecutar las instrucciones de c4digo de alto nivel de privilegio3 para reali0ar la tarea re5uerida. ,uando esta 1inali0a3 se retorna al proceso original3 y continBa su e&ecuci4n. El retorno al proceso demandante no o$ligatoriamente es inmediato3 depende del tiempo de e&ecuci4n de la llamada al sistema y del algoritmo de plani1icaci4n de ,#+. Las llamadas son peticiones a e&ecuci4n de rutinas y proporcionan la inter1a0 entre el sistema operativo y un programa en e&ecuci4n. Estas llamadas son instrucciones de lengua&e ensam$lador y se presentan en los manuales 5ue
ITS !arrillo %uerto Lenguajes &e Inter'az 11 IS!" #$

emplean los programadores de este lengua&e.

Unidad I Lenguaje Ensamblador

ITS !arrillo %uerto

Lenguajes &e Inter'az

12 IS!" #$

Unidad I Lenguaje Ensamblador

Las llamadas al sistema para e&ecuci4n y el control de programas3 usualmente incluyen un con&unto completo de los servicios accesi$les por la v6a del lengua&e de 4rdenes3 tales como> R+(3 EDE,+)E3 A/*R) y plani1icaci4n relacionada con el tiempo3 adem2s los usuarios con las llamadas del sistema pueden suspender3 esta$lecer o cam$iar atri$utos del tiempo de e&ecuci4n de uno o m2s programas. Las llamadas del sistema para el gestor de recursos3 proporcionan servicios para la asignaci4n3 reserva y reclamaci4n de los recursos del sistema. #or e&emplo3 e=isten llamadas del sistema para e=tender o reducir la cantidad de memoria pose6da por el programa 5ue se llama. Las llamadas del sistema pueden asignar o reservar otros tipos de o$&etos del sistema y despu8s destruir o devolver su custodia al sistema operativo. Las llamadas al sistema se pueden agrupar en cinco categor6as> 1. ,ontrol de proceso (,rear3 cargar3 e&ecutar un proceso3 o$tener y esta$lecer atri$utos3 esperar un suceso3 li$erar memoria3 a$ortar y terminar proceso). 2. 6anipulacin de arc7ivos (,rear3 a$rir3 leer3 o$tener y esta$lecer atri$utos3 cerrar y eliminar arc;ivos). 3. 6anipulacin de peri!8ricos (Solicitar3 escri$ir3 leer3 o$tener y esta$lecer atri$utos3 li$erar peri18rico). ?. 6anipulacin de la in!ormacin (*$tener 1ec;a y ;ora3 esta$lecer 1ec;a y ;ora3 o$tener y esta$lecer datos del sistema3 o$tener y esta$lecer atri$utos). 5. ,omunicaciones (,rear cone=i4n3 enviar mensa&es3 reci$ir mensa&es3 trans1erir in1ormaci4n del estado y eliminar cone=i4n.

1.! Modos e

ireccionamiento.

Los llamados modos de direccionamiento son las di1erentes maneras de especi1icar en in1orm2tica un operando dentro de una instrucci4n en lengua&e ensam$lador. +n modo de direccionamiento especi1ica la 1orma de calcular la direcci4n de memoria e1ectiva de un operando mediante el uso de la in1ormaci4n contenida en registros y F o constantes3 contenida dentro de una instrucci4n de la m25uina o en otra parte.
13 IS!" #$

ITS !arrillo %uerto

Lenguajes &e Inter'az

Unidad I Lenguaje Ensamblador

Las operaciones se ;acen entre registros o registros y memoria3 pero nunca entre memoria y memoria (salvo algunas operaciones con cadenas de caracteres). Los modos de direccionamiento determinan el lugar en 5ue reside un operando3 un resultado o la siguiente instrucci4n a e&ecutar segBn el caso. )enga en cuenta 5ue no e=iste una 1orma generalmente aceptada de nom$rar a los distintos modos de direccionamiento. En particular3 los distintos autores y 1a$ricantes de e5uipos pueden dar nom$res di1erentes para el modo de ;acer 1rente al mismo3 o los mismos nom$res3 a los di1erentes modos de direccionamiento Direccionamiento Inmediato. En este modo el operando es especi1icado en la instrucci4n misma. En otras pala$ras3 una instrucci4n de modo inmediato tiene un campo de operando en ve0 de un campo de direcci4n. El campo del operando contiene el operando actual 5ue se de$e utili0ar en con&unto con la operaci4n especi1icada en la instrucci4n. Las instrucciones de modo inmediato son Btiles para iniciali0ar los registros en un valor constante. ,uando el campo de direcci4n especi1ica un registro del procesador3 la instrucci4n se dice 5ue est2 en el modo de registro.

Direccionamiento Directo. Es directo cuando la instrucci4n contiene el lugar donde se encuentra el operando. SegBn el lugar donde se encuentra el operando puede ser> O O ireccionamiento directo a registro. ireccionamiento directo a memoria O irecci4n completa (p. e&. P%@ so$re !? Q$ con 1! $its) O irecci4n so$re una p2gina del mapa de memoria7 tam$i8n se conoce como direccionamiento de p2gina $ase.

ITS !arrillo %uerto

Lenguajes &e Inter'az

14 IS!" #$

Unidad I Lenguaje Ensamblador

Direccionamiento Relativo. La instrucci4n indica el despla0amiento del operando con respecto a un puntero> La direcci4n e1ectiva es calculada por la unidad de control sumando3 o restando3 el despla0amiento al puntero de re1erencia 5ue suele estar en un registro. ependiendo del puntero se tienen di1erentes modos de direccionamiento. irecci4n e1ectiva H Reg. Re1erencia R despla0amiento. Modo de direccionamiento F Registro de re1erencia F ,2lculo direcci4n e1ectiva> Relativo a contador de programa ,ontador de programa (,#) E H ,# R despla0amiento. Relativo a registro $ase +n registro $ase (R /) E H R/ R despla0amiento. Relativo a registro 6ndice +n registro 6ndice (R ') E H R' R despla0amiento. Relativo a pila Registro de pila (S#) E H S# R despla0amiento. "entajas Las instrucciones son m2s compactas. El c4digo puede cam$iar de lugar en el mapa de memoria con cam$iar el valor del puntero. -ran 1acilidad de mane&o de estructuras de datos. Inconvenientes Se re5uiere una operaci4n adicional para el c2lculo de la direcci4n del operando. Direccionamiento Indirecto. La posici4n indicada por la instrucci4n no es el operando sino la direcci4n de memoria en la 5ue se encuentra3 por lo 5ue se necesita un acceso adicional a memoria.
ITS !arrillo %uerto Lenguajes &e Inter'az 15 IS!" #$

Unidad I Lenguaje Ensamblador

La direcci4n de memoria se puede dar mediante> ireccionamiento directo a memoria ireccionamiento relativo Es posi$le 5ue se realicen mBltiples niveles de indirecci4n. Su utilidad m2s comBn es la de acceso a diversas in1ormaciones mediante ta$las de punteros.

Direccionamiento Implcito. En este modo de direccionamiento no es necesario poner ninguna direcci4n de 1orma e=pl6cita3 ya 5ue en el propio c4digo de operaci4n se conoce la direcci4n del (de los) operando(s) al (a los) 5ue se desea acceder o con el (los) 5ue se 5uiere operar. Re5uiere 5ue el programador cono0ca con 5ue operandos se est2 tra$a&ando. Direccionamiento de Registro. Sirve para especi1icar operandos 5ue est2n en registros.

Direccionamiento Indirecto por Registro. En este modo el campo de la direcci4n de la instrucci4n da la direcci4n en donde la direcci4n e1ectiva se almacena en la memoria. El control locali0a la instrucci4n de la memoria y utili0a su parte de direcci4n para acceder a la memoria
ITS !arrillo %uerto Lenguajes &e Inter'az 16 IS!" #$

Unidad I Lenguaje Ensamblador

de nuevo para leer una direcci4n e1ectiva. +nos pocos modos de direccionamiento re5uieren 5ue el campo de direcci4n de la instrucci4n sea sumado al control de un registro especi1icado en el procesador. La direcci4n e1ectiva en este modo se o$tiene del siguiente c2lculo> ir. E1ectiva H procesador. ir. de la parte de la instrucci4n R ,ontenido del registro del

1." #roceso de ensam$lado y ligado #ara poder crear un programa se re5uieren varias ;erramientas> #rimero un editor para crear el programa 1uente. Segundo un compilador 5ue no es m2s 5ue un programa 5ue CtraduceC el programa 1uente a un programa o$&eto. G tercero un enla0ador o linNer3 5ue genere el programa e&ecuta$le a partir del programa o$&eto. El editor puede ser cual5uier editor de te=tos 5ue se tenga a la mano3 como compilador utili0aremos el MASM (macro ensam$lador de Microso1t) ya 5ue es el m2s comBn3 y como enla0ador utili0aremos el programa linN. La e=tensi4n usada para 5ue MASM recono0ca los programas 1uente en ensam$lador es .ASM7 una ve0 traducido el programa 1uente3 el MASM crea un arc;ivo con la e=tensi4n .*/.3 este arc;ivo contiene un C1ormato intermedioC del programa3 llamado as6 por5ue aBn no es e&ecuta$le pero tampoco es ya un programa en lengua&e 1uente. El enla0ador genera3 a partir de un arc;ivo .*/. o la com$inaci4n de varios de estos arc;ivos3 un programa e&ecuta$le3 cuya e=tensi4n es usualmente .EDE aun5ue tam$i8n puede ser .,*M3 dependiendo de la 1orma en 5ue se ensam$l4.

ITS !arrillo %uerto

Lenguajes &e Inter'az

17 IS!" #$

Unidad I Lenguaje Ensamblador

1.%

esplegado de mensa&es en el monitor primero

#ara poder desplegar mensa&es en lengua&e ensam$lador de$emos conocer la estructura del programa en ensam$lador. ,omentarios En Lenguaje Ensamblador.

El uso de comentarios a lo largo de un programa puede me&orar su claridad3 en especial en lengua&e ensam$lador3 donde el prop4sito de un con&unto de instrucciones con 1recuencia no es claro. +n comentario empie0a con punto y coma (7) y3 en donde 5uiera 5ue lo codi1i5ue3 el ensam$lador supone 5ue todos los caracteres a la derec;a de esa l6nea son comentarios. +n comentario puede contener cual5uier car2cter imprimi$le3 incluyendo el espacio en $lanco. +n comentario puede aparecer solo en una l6nea o a continuaci4n de una instrucci4n en la misma l6nea3 como lo muestran los dos e&emplos siguientes> )oda esta l6nea es un comentario. A AD3 /D7 ,omentario en la misma l6nea 5ue la instrucci4n.

Ga 5ue un comentario aparece solo en un listado de un programa 1uente en ensam$lador y no genera c4digo de m25uina3 puede incluir cual5uier cantidad de comentarios sin a1ectar el tamaJo o la e&ecuci4n del programa ensam$lado. *tra manera de proporcionar comentarios es por medio de la directiva ,*MME(). +alabras Reservadas ,iertas pala$ras en lengua&e ensam$lador est2n reservadas para sus prop4sitos propios3 y son usadas solo $a&o condiciones especiales. #or categor6as3 las pala$ras reservadas incluyen> 'nstrucciones3 como M*9 y A 3 5ue son operaciones 5ue la computadora puede e&ecutar. irectivas como E( o SE-ME()3 5ue se emplean para proporcionar comandos al ensam$lador. *peradores3 como SAR y S'PE3 5ue se utili0an en e=presiones. S6m$olos prede1inidos3 como T ata y TModel3 5ue regresan in1ormaci4n a su programa.

Identi!icadores. +n identi1icador es un nom$re 5ue se aplica a elementos en el programa. Los dos tipos de identi1icadores son> nom$re3 5ue se re1iere a la direcci4n de un elemento de dato y eti5ueta3 5ue se re1iere a la direcci4n de una instrucci4n. +n
ITS !arrillo %uerto Lenguajes &e Inter'az 18 IS!" #$

identi1icador puede usar los siguientes caracteres>

Unidad I Lenguaje Ensamblador

ITS !arrillo %uerto

Lenguajes &e Inter'az

19 IS!" #$

Unidad I Lenguaje Ensamblador

1. Letras del al1a$eto> esde la A ;asta la P(mayBsculas o minBsculas) 2. 6gitos> esde el @ al A (no puede ser el primer car2cter) 3. ,aracteres especiales> Signo de interrogaci4n ( U ) Su$rayado ( V )3 Signo de pesos ( W )3 Arro$a ( T )3 #unto ( . ) (no puede ser el primer car2cter) El primer car2cter de un identi1icador de$e ser una letra o un car2cter especial3 e=cepto punto. Ga 5ue el ensam$lador utili0a algunos s6m$olos especiales en pala$ras 5ue inician con el s6m$olo T3 de$e evitar usarlo en sus de1iniciones. En consecuencia3 en una instrucci4n tal como> A AD3 /D> El ensam$lador sa$e de 1orma autom2tica 5ue AD y /D se re1ieren a los registros. Sin em$argo3 en una instrucci4n como> M*9 RE-SA9E3 AD> El ensam$lador puede reconocer el nom$re RE-SA9E solo si se de1ine en algBn lugar del programa. 'denti1icador3 operaci4n y operando pueden empe0ar en cual5uier columna. Sin em$argo3 si de manera consistente se inicia en la misma columna para estas tres entradas se ;ace un programa m2s legi$le. ' E()'S',A *R> ,omo ya se e=plic43 el termino nom$re se aplica al nom$re de un elemento o directiva de1inida3 mientras 5ue el termino eti5ueta se aplica al nom$re de una instrucci4n. *#ERA,'X(> La operaci4n3 5ue de$e ser codi1icada3 es con mayor 1recuencia usada para la de1inici4n de 2reas de datos y codi1icaci4n de instrucciones. #ara un elemento de datos3 una operaci4n como / o Y de1ine un campo3 2rea de tra$a&o o constante. *#ERA( *> El operando (si e=iste) proporciona in1ormaci4n para la operaci4n 5ue actBa so$re 8l. #ara un elemento de datos3 el operando identi1ica su valor inicial. #or e&emplo3 en la de1inici4n siguiente de un elemento de datos llamado ,*+()ER3 la operaci4n / signi1ica Cde1inir $yteC3 y el operando iniciali0a su contenido con un valor cero>

#ara una instrucci4n3 un operando indica en donde reali0ar la acci4n. +n operando de una instrucci4n puede tener una3 dos o tal ve0 ninguna entrada. A5u6 est2n tres e&emplos>

ITS !arrillo %uerto

Lenguajes &e Inter'az

20 IS!" #$

Unidad I Lenguaje Ensamblador

Directivas +ara Listar +age 9 )itle. La directiva #A-E y )')LE ayudan a controlar el 1ormato de un listado de un programa en ensam$lador. Este es su Bnico 1in3 y no tienen e1ecto so$re la e&ecuci4n su$secuente del programa. #A-E. Al inicio de un programa3 la directiva #A-E designa el nBmero m2=imo de l6neas para listar en una p2gina y el nBmero m2=imo de caracteres en una l6nea. Su 1ormato general es> #A-E Zlongitud[Z3 anc;o[ El e&emplo siguiente proporciona !@ l6neas por p2gina y 132 caracteres por l6nea> #A-E !@3 132 El nBmero de l6neas por p2gina puede variar desde 1@ ;asta 2553 mientras 5ue el nBmero de caracteres por l6nea desde !@ ;asta 132. La omisi4n de #A-E causa 5ue el ensam$lador tome #A-E 5@3 %@. )')LE. Se puede emplear la directiva )')LE para ;acer 5ue un t6tulo para un programa se imprima en la l6nea 2 de cada p2gina en el listado del programa. #uede codi1icar )')LE de una ve03 al inicio del programa. Su 1ormato general es> )')LE )e=to. #ara el operando te=to3 una t8cnica recomendada es utili0ar el nom$re del programa como se registra en el disco. #or e&emplo> )')LE #rog1 Mi primer programa en ensam$lador Directiva (egment. +n programa ensam$lado en 1ormato .EDE consiste en uno o m2s segmentos. +n segmento de pila de1ine el almac8n de la pila3 un segmento de datos de1ine los elementos de datos y un segmento de c4digo proporciona un c4digo e&ecuta$le. Las directivas para de1inir un segmento3 SE-ME() y E( S tienen el 1ormato siguiente> El enunciado SE-ME() de1ine el inicio de un segmento. El nom$re del segmento de$e estar presente3 ser Bnico y cumplir las convenciones para nom$res del lengua&e. EL enunciado E( S indica el 1inal del segmento y contiene el mismo nom$re del enunciado SE-ME(). El tamaJo m2=imo de un segmento es de !?Q. El operando de un enunciado SE-ME() puede tener tres tipos de opciones> alineaci4n3 com$inar y clase3 codi1icadas en este 1ormato> nom$re
ITS !arrillo %uerto

SE-ME()

alineaci4n

com$inar

\ clase ]
21 IS!" #$

Lenguajes &e Inter'az

Unidad I Lenguaje Ensamblador

)'#* AL'(EA,'*(. La entrada alineaci4n indica el l6mite en el 5ue inicia el segmento. #ara el re5uerimiento t6pico3 #ARA3 alinea el segmento con el l6mite de un p2rra1o3 de manera 5ue la direcci4n inicial es divisi$le entre 1!3 o 1@E. En ausencia de un operando ;ace 5ue el ensam$lador por omisi4n tome #ARA. )'#* ,*M/'(AR. La entrada com$inar indica si se com$ina el segmento con otros segmentos cuando son enla0ados despu8s de ensam$lar. Los tipos de com$inar son S)A,Q3 ,*MM*(3 #+/L', y la e=presi4n A). #or e&emplo3 el segmento de la pila por lo comBn es de1inido como> nom$re SE-ME() #ARA S)A,Q

#uede utili0ar #+/L', y ,*MM*( en donde tenga el prop4sito de com$inar de 1orma separada programas ensam$lados cuando los enla0a. En otros casos3 donde un programa no es com$inado con otros3 puede omitir la opci4n o codi1icar (*(E. )'#* ,LASE. La entrada clase3 encerrada entre ap4stro1os3 es utili0ada para agrupar segmentos cuando se enla0an. Se utili0a la clase \code\ para el segmento de c4digos3 \data\ por segmento de datos y \stacN\ para el segmento de la pila. El e&emplo siguiente de1ine un segmento de pila con tipos alineaci4n3 com$inar y clase> nom$re SE-ME() #ARA S)A,Q \StacN\

Directiva Assume. +n programa utili0a el registro SS para direccionar la pila3 al registro S para direccionar el segmento de datos y el registro ,S para direccionar el segmento de c4digo. #ara este 1in3 usted tiene 5ue indicar al ensam$lador el prop4sito de cada segmento en el programa. La directiva para este prop4sito es ASSEME3 codi1icada en el segmento de c4digo como sigue> *peracin *perando. ASS+ME SS>nompila3 S>nomsegdatos3 ,S> nomsegcodigo3. . .

Los operandos pueden aparecer en cual5uier orden. Al igual 5ue otras directivas3 ASS+ME es solo un mensa&e 5ue ayuda al ensam$lador a convertir c4digo sim$4lico a c4digo ma5uina7 aBn puede tener 5ue codi1icar instrucciones 5ue 16sicamente cargan direcciones en registros de segmentos en el momento de la e&ecuci4n.
18 IS!" #$

ITS !arrillo %uerto

Lenguajes &e Inter'az

O#A-E !@3132

Unidad I Lenguaje Ensamblador

ITS !arrillo %uerto

Lenguajes &e Inter'az

19 IS!" #$

Unidad I Lenguaje Ensamblador

O)')LE #@?ASM1 ES)R+,)+RA E +( #R*-RAMA .EDE O7:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : OS)A,QS- SE-ME() #ARA S)A,Q \StacN\ O ... OS)A,QS- E( S O::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: O A)AS- SE-ME() #ARA \ ata\ O ... O A)AS- E( S O7:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : O,* ES- SE-ME() #ARA \,ode\ O/E-'( #R*, SAR OASS+ME SS>S)A,QS-3 S> A)AS-3,S>,* ESOM*9 AD3 A)AS7*$tiene la direcci4n del segmento de datos OM*9 S3 AD 7Almacena direcci4n en S O ... OM*9 AD3 ?,@@E 7#eticion O'() 21E 7Salida al *S O/E-'( E( # O,* ES- E( S OE( /E-'( Directivas (impli!icadas De (egmentos Los ensam$ladores de Microso1t y de /orland proporcionan algunas 1ormas a$reviadas para de1inir segmentos. #ara usar estas a$reviaturas3 inicialice el modelo de memoria antes de de1inir algBn segmento. El 1ormato general (incluyendo el punto inicial) es> .M* EL modelo de memoria El modelo de memoria puede ser )'(G3 SMALL3 ME '+M3 ,*M#A,) o LAR-E. Los re5uisitos para cada modelo son> #uede utili0ar cual5uiera de estos modelos para un programa aut4nomo (esto es3 un programa 5ue no est8 enla0ado con algBn otro). El modelo )'(G est2 destinado para uso e=clusivo de programas .,*M3 los cuales tienen sus datos3 c4digo y pila en un segmento. El modelo SMALL e=ige 5ue el c4digo 5uepa en un segmento de !?Q y los datos en otro segmento de !?Q. La directiva .M* ELL genera autom2ticamente el enunciado ASS+ME necesario.
ITS !arrillo %uerto Lenguajes &e Inter'az 20 IS!" #$

Unidad I Lenguaje Ensamblador

Los 1ormatos generales (incluyendo el punto inicial) para las directivas 5ue de1ine los segmentos de la pila3 de datos y de c4digo son>

ITS !arrillo %uerto

Lenguajes &e Inter'az

21 IS!" #$

Unidad I Lenguaje Ensamblador

.S)A,Q ZtamaJo[ . A)A .,* E Znom$re[ ,ada una de estas directivas ;ace 5ue el ensam$lador genere el enunciado SE-ME() necesario y su correspondiente E( S. Los nom$res por omisi4n de los segmentos (5ue usted no tiene 5ue de1inir) son S)A,Q3 A)A y )ED) (para el segmento de c4digo).

ITS !arrillo %uerto

Lenguajes &e Inter'az

22 IS!" #$

Vous aimerez peut-être aussi