Você está na página 1de 38

M.C.

Hilda Castillo Zacatelco

Benemrita Universidad Autnoma De Puebla

Facultad De Ciencias De La Computacin


Notas para el curso de Ensamblador

MC. Hilda Castillo Zacatelco

Otoo2004

Indice
1. Sistemas Numricos 3

M.C. Hilda Castillo Zacatelco

2. Complemento 3. Cdi os 4. "escripcin de una computadora 4.1. $r%uitectura de una computadora di ital 4.2 $r%uitectura &0&& 4.3 'odos de direccionamiento ( c)lculo de la direccin e*ecti+a 5. "espurador !. Con,unto de instrucciones #. Interrupciones &. -ideo .. /eclado 0i1lio ra*2a

5 ! # & 11 14 15 21 2! 35 3! 3#

M.C. Hilda Castillo Zacatelco

3NS$'04$"O5
1. Sistemas Numricos
Un sistema numrico es un conjunto de reglas y smbolos que nos permiten escribir nmeros. Nmeros reales negati!os y positi!os" y enteros negati!os y positi!os 5epresentacin de n6meros enteros no ne ati+os #ea $ %base o radio& un nmero mayor o igual que 2" entonces pueden representarse nmeros enteros como una cadena de dgitos escogidos entre '"1"2"(.."$)1. *onde la cadena es la representaci+n en base $ del entero. ,a base de un sistema num-rico es el nmero de dgitos que pueden aparecer en cada posici+n en el sistema num-rico. .jemplo $/0 digitos/1'"1"22 3ase 1')))'"1"2"0"4"5"6"7"8"9"1'"11"12"10"14"15"16"17"18 3ase 0 ))) '"1"2"1'"11"12"2'"21"22"1''"1'1"1'2"11'"111"112"12'"121"122"2''

Con+ersin entre 1ases #ea el nmero a:a:)1(.a1" un entero en base $. ;ara con!ertir este nmero de base $ a base < utili=amos la con!ersi+n a:$:)1>a:)1$:)2>(>a1$' 738presin uno9 *onde $ es la base en la que se encuentra el nmero %base actual&" : es el nmero de dgitos que con?orman el nmero y < es la nue!a base %se debe trabajar con aritm-tica en base <&. .jemplos 1&Con!ertir %1''11'&2 % $/2 :/6 &1' </1' a6/1" a5/'" a4/'" a0/1" a2/1" a1/'

1@26)1>'@26)2>'@26)0>1@26)4>1@26)5>'@26)6/ 1@25>'@24>'@20>1@22>1@21>'@2'/ 1@25>1@22>1@21/ 02>4>2/08 Ainalmente obtenemos que %1''11'&2 %08&1' 2& Con!ertir %40'2&5 % &0 $/5 </0 :/4 a4/4" a0/0" a2/'" a1/2 #e debe trabajar con aritm-tica en base 0" por lo tanto necesitamos las tablas de suma y multiplicaci+n en base 0.

M.C. Hilda Castillo Zacatelco

4@50>0@52>'@51>2@5'/ 2''112>221'>2/ 21'1'1

11@120>1'@122>2@12'/

11@11122>1'@221>2@1/

$eali=ando las sumas y multiplicaciones debidas en base 0" obtenemos %40'2&5 %21'1'1&0 Con+ersin de n6meros de 1ase : a 1ase 10 7donde :<> 109 $l oritmo 1. %$egla de Horner para la e!aluaci+n de polinomios& 1.i>:" num >' 2.Mientras i>=1 Bacer num >num@$>ai i >i)1 ?inCmientras 0. Ain .jemplo Con!ertir %40'2&5 % &1' Con+ersin de n6meros de 1ase 10 a 1ase s 7donde s<> 109 $l oritmo 2. 1. i>1" q>'" p >' 2.$epetir q >DEFsG %parte entera& p >E)q@s %residuo& ai >p" i >i>1" E > q Basta q/' 0. Ain .jemplo Con!ertir %577&1' % &0

Con+ersin de n6meros de 1ase : a 1ase 10 7donde :<> 109 N6meros *raccionarios $l oritmo 3. 1.iHm" numH'

M.C. Hilda Castillo Zacatelco

2.Mientras i>=1Bacer num H%num>bi&F$ i Hi)1 ?inCmientras 0. Ain .jemplo Con!ertir %.I'6&16% &1'

Con+ersin de n6meros de 1ase 10 a 1ase s 7donde s<> 109 N6meros *raccionarios $l oritmo 4. 1. iH1 2. Mientras i <= m Bacer E HE@s y HDEG %parte entera& E HE)y" biHy" i H i>1 ?inCmientras 0. Ain *onde m es el nmero de dgitos que se desean obtener" E es el nmero a con!ertir inicialmente" s es la nue!a base y bi es el i)-simo dgito del nmero en base s tomando el orden b1b2(bm Con+ersin de potencias de 2 ;ara con!ertir nmeros de base 2 a base :" donde : puede eEpresarse como una potencia de 2" es decir" :/2E donde EJ1 y es un nmero entero" se lle!an a cabo los siguientes pasos 1.#e agrupan de E en E los dgitos que se encuentran a la i=quierda del punto" comen=ando a partir de -l y aumentando ceros a la i=quierda cuando es necesario. 2.#e agrupan de E en E los dgitos que se encuentran a la derecBa del punto comen=ando a partir de -ste y aumentando ceros a la derecBa cuando sea necesario. 0.#e sustituyen los grupos por los dgitos correspondientes en la base :. .jemplo %111''1'1''.'11'11&2 K % &16 ''11 1''1 '1'' . '11' 11'' 0 9 4 6 C $esultado %111''1'1''.'11'11&2 K %094.6C&16 *onde 16/24

M.C. Hilda Castillo Zacatelco

Con+ersin de potencias de 2 ;ara con!ertir nmeros de base :/2E a base 2" se sustituye cada dgito en base : por los E dgitos binarios correspondientes. .jemplo %74'2.61&8 K % &2 7 4 ' 2 . 6 *onde 8/20 1 $esultado

1111'' ''' '1' 11' ''1 %74'2.61&8 K %1111''''''1'.11'''1&2

2. Complemento
.l complemento es una ?orma de representar nmeros negati!os. #i la base es 2" eEisten dos clases de complementos complemento a 1 y complemento a 2. Complemento a 1. #e obtiene cambiando 1Ls por 'Ls y 'Ls por 1Ls. .jemplo #ea el nmero ''1111''" su complemento a 1 es 11''''11. Complemento a 2. #e aplica complemento a 1 al nmero y luego se suma 1 al resultado. .jemplo #ea el nmero '11'11' aplicando complemento a 1 obtenemos 1''1''1" despu-s se le suma 1" obteni-ndose 1''1'1' $l oritmo de suma utili;ando la representacin de n6meros ne ati+os mediante si no ( ma nitud. 1.#ean anan)1(a' y bnbn)1(b' 2 nmeros binarios con signo y magnitud. 2.Mienen signos iguales N %an/bn& #i sumar magnitudes quedando el resultado en cn)1cn)2(c' " cn/ an No Comparamos magnitudes y dejamos en cn el signo del mayor. $estamos a la magnitud mayor la menor y el resultado queda en cn)1cn)2(c' 0. ,a magnitud de cn)1cn)2(c' eEcede el rango N #i Ondicar error %o!er?loP Q sobre?lujo& No .l resultado esta en cncn)1(c' .jemplo Rbtener el resultado de las siguientes sumas binarias a 4 dgitos 1& 5>%)0&/'1'1>1'11 ,os signos son di?erentes" y la magnitud del primer nmero es J que la del segundo" as que restamos '11 de 1'1 y el signo del resultado serS positi!o /''1' #u equi!alente decimal es 2 2& %)4&>%)6&/11''>111' ,os signos son iguales" as que se suman magnitudes .rror T .Eiste o!er?loP $l oritmo de suma al e1raica en complemento a 1 1.Momar el complemento a 1 de los nmeros negati!os 6

M.C. Hilda Castillo Zacatelco

2.#umar los operandos 0..Eiste carryN #i sumar 1 al resultado 4..Eiste o!er?loPN #i indicar error No .scribir el resultado .jemplo Utili=ar 4 dgitos %)4& > %)0&/ %'1''&c1>%''11&c1/ 1'11>11''/ 1 '111 .Eiste carry /'111>1/1''' No eEiste o!er?loP $l oritmo de suma al e1raica en complemento a 2 1.Momar el complemento a 2 de los nmeros negati!os 2.#umar los operandos 0..Eiste o!er?loPN #i mensaje de error No #e toman las primeras n posiciones de derecBa a i=quierda como resultado ignorando el carry si es que lo Bay. .jemplo %4 dgitos& 7>%)5&/ '111>%'1'1&c2/ '111>1'11/ 1 ''1' .Eiste carry" as que el resultado es ''1'

3. Cdi os
Moda la in?ormaci+n en la computadora es almacenada en dgitos binarios" los cuales son representados por medio de un agrupamiento de los mismos como caracteres de instrucciones o nmeros. .stos agrupamientos de?inen c+digos" de aB que un c+digo pueda de?inirse como un conjunto de reglas para interpretar grupos de bits. .Eisten tres tipos de c+digos 1. Caracteres. .3C*OC 2. Instrucciones. 0. Numricos. 3C* %3inary Code *ecimal& y U$IV 0C". .s una t-cnica para representar nmeros decimales en las computadoras. #e re?iere al almacenamiento de nmeros decimales en un byte" esto es" 4 dgitos binarios para cada dgito decimal. '/'''' 2/''1' 4/'1'' 6/'11' 8/1''' 1/'''1 0/''11 5/'1'1 7/'111 9/1''1 .jemplo 64/'11''1'' 17/'''1'111

<5$=. .s una t-cnica de almacenamiento en grupos de 4 bits" donde pueden representarse 16 nmeros di?erentes. '/'''' 4/'11' 8/11'' 12/1'1' 7

M.C. Hilda Castillo Zacatelco

1/'''1 2/''11 0/''1'

5/'111 6/'1'1 7/'1''

9/11'1 1'/1111 11/111'

10/1'11 14/1''1 15/1'''

30C"IC %.Etended 3inary Coded *ecimal OntercBange Code&. .n una cla!e de intercambio de c+digo decimal ci?rada en binario donde se utili=an 8 bits para representar 256 posibles caracteres. WIL ))) c1 ' ))) ?' W.L ))) 4b WbL ))) c2 1 ))) ?1 W%W ))) 4d .... ... W>L ))) 4e (. $SCII %Imerican #tandard Code ?or On?ormation OntercBange&. .s una cla!e Imericana" se de?ine como una cla!e para intercambio de in?ormaci+n donde se utili=an 7 bits para representar 128 caracteres eEistentes en este c+digo" 02 de los cuales son caracteres de control para las comunicaciones. %pantalla" impresora" unidad de disco" etc.& W.L ))) 2e WIL ))) 41 WaL ))) 61 ' ))) 0' W3L ))) 42 WbL ))) 62 1 ))) 01

4. "escripcin de una Computadora


*e manera general una computadora puede de?inirse como un rSpido y eEacto sistema de manipulaci+n de datos" diseXada y organi=ada para aceptar y almacenar in?ormaci+n" procesarla y producir in?ormaci+n de salida. Una computadora consta de dos partes el hardware y el software. >ard?are. #on los componentes electr+nicos que ?orman a la computadora" esto es" el teclado" el monitor" los circuitos integrados. So*t?are. .s el conjunto de instrucciones que ejecuta una computadora. .Eisten dos tipos de computadoras digitales y analgicas. .sto se debe a que los datos que las computadoras manejan se di!iden en continuos y discretos. "iscretos. #on aquellos que resultan de un conteo" por ejemplo" el total de alumnos en un sal+n de clases. Continuos. #on aquellos que resultan de la medici+n" por ejemplo" la !elocidad de un autom+!il" obtenida a tra!-s de un !elocmetro. *e acuerdo a las de?iniciones anteriores tenemos que Una computadora digital es un dispositi!o de cSlculo que procesa datos discretos. Una computadora anal+gica es un dispositi!o de cSlculo que procesa datos continuos.

M.C. Hilda Castillo Zacatelco

I tra!-s del tiempo se Ban desarrollado mSs las computadoras digitales y su principal caracterstica es la !elocidad" ademSs de ser poco costosas. 4.1 $r%uitectura de una computadora di ital. .l diseXo bSsico operacional de un sistema de c+mputo se conoce como arquitectura I YoBn Zon Neumann" un pionero del diseXo de la computadora" se le da cr-dito de la mayora de las arquitecturas de las computadoras actuales. ;or ejemplo la ?amilia 8'E86 usa una arquitectura Zon Neumann %ZNI&. Un sistema tpico de NZI tiene tres componentes memoria" una unidad central de procesamiento %C;U& y dispositi!os de entradaFsalida %OFR&. .n las mSquinas ZNI" el C;U es donde toda la acci+n tomar lugar. Modos los cSlculos ocurren dentro del C;U. Manto los datos como las instrucciones residen en memoria Basta que son requeridas por el C;U. 3l 1us del sistema. .l bus del sistema conecta !arios componentes de una mSquina ZNI. ,a ?amilia 8'E86 tiene 0 buses principales el bus de direcciones" el bus de datos" y el bus de control. Un bus es una colecci+n de cables sobre los cuales las seXales el-ctricas pasan entre los componentes en el sistema" estos buses pueden !ariar. 3l 1us de datos. .n los procesadores 8'E86 se usan para intercambiar datos entre los di?erentes componentes de las computadoras. .l tamaXo del bus !ara" as en el 8'86 tiene 16 bits" en el 8'086*[" 8'486 y ;entium R!erdri!e tienen un bus de 02 bits\ el ;entium y el ;entium ;ro tienen un bus de datos de 64 bits. .l bus de datos en la ?amilia 8'E86 trans?iere in?ormaci+n entre una localidad de memoria particular o OFR y el C;U. 3l 1us de direccin. ,ocali=a la memoria o el dispositi!o de OFR de donde !a a trans?erir in?ormaci+n el bus de datos. 3l 1us de control. .s una colecci+n de seXales que controlan como el procesador se comunica con el resto del sistema. .l bus de control dirige el ?lujo de c+mo se maneja la in?ormaci+n dentro del sistema. .n el bus de control eEisten dos lneas" una de lectura y otra de escritura los cuales especi?ican la direcci+n del ?lujo de datos. 3l C@A. ,a $4A es el lugar donde se reali=a realmente el trabajo de procesamiento. .sta unidad se encarga de e?ectuar sobre los datos operaciones aritm-ticas" l+gicas" de comparaci+n" de mo!imiento de bits" etc. ;ara e?ectuar su operaci+n esta unidad requiere que alguien le diga lo que debe Bacer" ese alguien es la Unidad de Control %UC&. ;ara el manejo de los datos la I,U utili=a pequeXas unidades de almacenamiento llamados registros" donde tambi-n puede guardar resultados. .Eisten !arios tipos de registros .l contador de programa es un registro que contiene la direcci+n de la pr+Eima instrucci+n a ser ejecutada. Registro de instruccin. Unidad donde se interpreta o traduce la instrucci+n a ser ejecutada" por lo tanto contiene la instrucci+n actual.

M.C. Hilda Castillo Zacatelco

Registros de trabajo. #on aquellos que son utili=ados para lle!ar a cabo la traducci+n o la interpretaci+n de la instrucci+n. Registros generales. Utili=ados por el programador como unidades de almacenamiento auEiliares" donde bSsicamente pueden almacenarse datos y direcciones. ,a AC es la parte administrati!a de la computadora" -sta se encarga de decir a los demSs componentes" c+mo y cuSndo deben e?ectuar las operaciones. ,a UC indica a la I,U qu- operaci+n !a a reali=ar" de d+nde !a a tomar los datos" para lo cual interpreta conjuntos de instrucciones que recibe codi?icadas en binario desde la memoria. ,as instrucciones poseen dos tipos de in?ormaci+n" el cdigo de operaci+n y la direccin de los operandos. .l primero indica lo que se !a a reali=ar y el segundo indica sobre qui-n o qu- se !a a e?ectuar la operaci+n. ,a memoria es la unidad de almacenamiento de la computadora" esta es una secuencia ordenada de lugares de almacenamiento denominados localidades" en la memoria se almacenan los programas" es decir" los conjuntos de instrucciones que la UC debe interpretar y los datos sobre los cuales se trabajarS" es decir" lo que serSn procesados. ,a memoria se di!ide en 1. Memoria interna, principal o primaria. .s la memoria que contiene la computadora. 2. Memoria secundaria o e terna. #e maneja en discos ?leEibles" cintas magn-ticas y en discos duros bSsicamente. ,a memoria interna es usualmente un recurso escaso pero muy !elo=. ,a memoria e terna es mucBo mSs grande en almacenamiento que la interna\ pero en tiempo es mucBo mSs lenta. ,a capacidad de memoria es un tamaXo que generalmente es medido en Mbytes. ,a memoria interna se di!ide en dos grupos 1. !ol"til o R#M %$andom Iccess Memory&. Memoria de acceso aleatorio" en ella se puede escribir o leer" pero al apagar la mSquina la in?ormaci+n se pierde. 2. No $ol"til o R%M %$ead Rnly Memory&. .s de solo lectura" no se puede escribir en ella" la in?ormaci+n se conser!a. ,a memoria interna siendo !olStil o no se di!ide en algo que se conoce por palabras. Una palabra puede de?inirse como una unidad de almacenamiento de la memoria interna y esta puede estar ?ormada por 2" 4" u 8 bytes. Una localidad es un byte de memoria" un agrupamiento de 8 bits. "ispositi+os peri*ricos. #on medios de comunicaci+n con la computadora. #e di!iden en dispositi!os de entrada y dispositi!os de salida. ,os dispositi!os de entrada permiten al usuario proporcionar datos a la computadora entre lo que se encuentran programas que serSn procesados. ;or ejemplo" teclado" unidad de discos ?leEibles" scanner" etc.

1'

M.C. Hilda Castillo Zacatelco

,os dispositi!os de salida permiten al usuario conocer resultados obtenidos a tra!-s del procesamiento de programas y datos como por ejemplo" unidad de discos ?leEibles" pantalla" impresora" etc. Modas las partes de un computadora estSn relacionados" ligados por un bus" el cual puede de?inirse como un medio de comunicaci+n entre los distintos componentes de la computadora. Operaciones 1)sicas ( *unciones. 'emoriaB Rperaciones bSsicas escribir" leer Aunciones almacenar programas" almacenar datos" almacenar resultados. ,os programas son conjuntos de instrucciones. *atos. On?ormaci+n a procesar" la cual se puede utili=ar o modi?icar. C@AB Aunciones leer y escribir in?ormaci+n de la memoria y a la memoria. ,le!ar y traer in?ormaci+n a los di?erentes componentes de la computadora. *ecodi?icar o traducir y ejecutar las instrucciones almacenadas en la memoria. $econocer y responder a algunas seXales eEtenas. Un ciclo de m"&uina es un conjunto de pasos que se lle!an a cabo para ejecutar instrucciones. Ciclo de mSquina 1. 2. 0. 4. #olicita dato %*irecci+n& #e manda dato %Onstrucci+n& #e traduce o decodi?ica el dato #e ejecuta instrucci+n '. (etch )alimentar ' y *+ *. ,ecode ),ecodificar -+ 0. . ecute ).jecutar /+ 4.2 $r%uitectura &0&& ,a memoria del procesador 8'88 se encuentra ?raccionada en lo que se conoce como segmento. Un segmento es una porci+n de memoria que ocupa 64 :bytes de longitud. .Eiste cuatro segmentos 0egmento de datos )ds&. .s la porci+n de memoria que contiene la in?ormaci+n a ser procesada" es decir" los operandos. .ste segmento tambi-n puede ser de?inido como el 11

.stos pasos se Ban di!idido en tres

M.C. Hilda Castillo Zacatelco

Srea de datos del procesador ya que cuando -ste necesita un operando o necesita guardar un resultado lo toma o lo deposita en algn lugar de este segmento. 0egmento de cdigo )cs+. .s la porci+n que contiene los conjuntos de instrucciones a ser ejecutadas. 0egmento de stac1 )pila 2 ss+. Ueneralmento contiene direcciones de retorno a subprogramas. #ubprograma. .s un programa usualmente pequeXo que ?unciona de manera independiente" que puede ser utili=ado por otro u otros programas cuando es necesario. ,os subprogramas en los lenguajes de programaci+n de alto ni!el se conocen como procedimientos y para lenguajes de bajo ni!el" como ensamblador" se conocen como subrutinas o subprogramas. 0egmento e tra )es+. .s direccionado a tra!-s del registro es y contiene al igual que el registro de datos in?ormaci+n para procesar" los datos principalmente son cadenas. .s un segmento para usos especiales. 4.2.1 Con,unto de 5e istros para el procesador &0&& ,a o??set es un despla=amiento relati!o al inicio del segmento. 3ase %cs" ds" ss" es& > o??set *irecci+n e?ecti!a 5e istros. .Eisten 14 registros en total. 4 segmentados" 4 de prop+sito general" 2 registros apuntadores" 2 registros ndica y 1 registro de banderas y el registro apuntador de instrucci+n. 5e istros se mentados. ,0. Contiene la direcci+n inicial del segmento de datos. 00. Contiene la direcci+n inicial del segmento de pila. .0. Contiene la direcci+n inicial del segmento eEtra. C0. Contiene la direcci+n inicial del segmento de c+digo" por lo que puede ser !isto como el registro base dentro del segmento de c+digo. $egistros de prop+sito general. #on registros de 16 bits. #3. ,lamado acumulador principal" es utili=ado en todas las operaciones de entrada y salida" en algunas operaciones de cadenas y en operaciones aritm-ticas. 43. ,lamado registro base" es utili=ado como apuntador o ndice para el manejo de datos.

12

M.C. Hilda Castillo Zacatelco

C3. ,lamado registro contador" es utili=ado para controlar el nmero de !eces que un ciclo debe repetirse" tambi-n utili=ado en operaciones aritm-ticas y en corrimientos %mo!imientos de bits&. ,3. ,lamado registro de datos" utili=ado en algunas operaciones de entrada y salida y en operaciones aritm-ticas que requieren de 16 bits para el manejo de datos. 5e istro apuntadores. 05 y 45" ambos utili=ados para el manejo de in?ormaci+n dentro del stac:. .l registro #; es el o??set dentro del stac:. 5e istros inde8ados o 2ndice. 0I %Ondice ?uente&. Utili=ado para manejar datos dentro del segmento de datos o para manejar in?ormaci+n. ,I %Ondice *estino&. Utili=ado para manejar in?ormaci+n dentro del segmento eEtra. 5e istro de 1anderas. I este registro se le conoce tambi-n como registro de estado. Consta de 16 bits y nicamente 9 de ellos contiene in?ormaci+n" indican el estado de la mSquina y el estado de la ejecuci+n de los programas. #eis de ellas %C" ;" I" Z" #" R& son utili=adas para !eri?icar o indicar una condici+n producida por alguna instrucci+n" y tres de ellas son utili=adas para el control de algunas operaciones %*" O" M&. C Carry. Ondica si Bubo carry en operaciones aritm-ticas. C/1 si eEiste acarreo" ' sino eEiste. ; 5aridad. Ondica la paridad de un dato. ;/1 si es par" ;/' sino lo es. Z Cero. Ondica si el resultado de una operaci+n aritm-tica o de comparaci+n es cero. Z/' el resultado no es cero" Z/1 el resultado es cero. # 0igno. Ondica el signo del resultado. #/' si el resultado es positi!o" #/1 si el resultado es negati!o. R %$erflow. Ondica o!er?loP en la magnitud de un dato. R/' no eEiste o!er?loP" R/1 si eEiste o!er?loP. I Carry au iliar. Contiene el acarreo del bit 0 al bit 4 en un operando de 8 bits. I/1 si eEiste carry. I/' no eEiste carry. * ,ireccin. .s utili=ada en operaciones de cadena" indica la direcci+n que el procesador debe seguir para tomar la in?ormaci+n. O o no. Interrupcin. Ondica al procesador si las interrupciones deben ser atendidas

10

M.C. Hilda Castillo Zacatelco

M 6rap. Ondica al procesador que debe ejecutar una por una las instrucciones de un programa %procesamiento de un solo paso&. 4.2.2 Anidades l icas del procesador &0&&. .l procesador 8'88 contiene dos unidades l+gicas la unidad de ejecucin y la unidad de interfase de bus. Cada una de bus. Cada una de ellas tiene una ?unci+n espec?ica y contiene registros del procesador. ,a unidad de ejecuci+n" ejecuta las instrucciones que le proporcione la unidad inter?ase de bus %3OU&" con lo cual debe procesar los datos que tambi-n esta le proporciona" la 3OU es la unidad l+gica mSs acti!a" esta tiene tres ?unciones importantes. ,a primera es controlar los buses que trans?ieren in?ormaci+n a la .U" a la memoria y a los dispositi!os eEternos de entrada y salida. ,a segunda es el direccionamiento de memoria a tra!-s de los registros de segmento" los cuales pueden direccionar Basta un mill+n de bytes de memoria. ;ara poder direccionar la memoria el procesador utili=a 16 bits. Is que el nmero mSEimo de bytes que puede direccionar es 216/65506" es decir" 64 ]b de memoria\ pero se requiere de mSs : de memoria" entonces el procesador para ampliar el direccionamiento de memoria utili=a 2' bits" de esta manera maneja desde '''' Basta ????? " el procesador suma la base del segmento y el o??set para obtener una direcci+n absoluta" pero recorre el o??set 4 posiciones a la derecBa y los suma" as se obtienen 5 dgitos con 2' bits" de otra ?orma seran 4 dgitos con 16 bits. .jemplo I'98 > 8''5 I8985 ,a tercera ?unci+n es acceder las instrucciones" esto es" tomas las instrucciones de la memoria" lle!arlas a la cola de instrucci+n. ,a cola de instrucci+n estS ?ormada de 4 bytes con los cuales es posible que la 3OU tome las instrucciones antes de tiempo %pre?etcB& para que cuando la .U solicite la instrucci+n esta est- lista para ser ejecutada. 4.3 'odos de direccionamiento ( c)lculo de la direccin e*ecti+a. ,os modos de direccionamiento son medios que ?acilitan la tarea de programaci+n a la !e= que permiten el acceso a los datos y a los cuerpos de entrada y salida de una manera natural y e?iciente" su modo de direccionamiento permite obtener la direcci+n e?ecti!a" que es aquella in?ormaci+n donde se encuentran los datos e in?ormaci+n requerida para la ejecuci+n de alguna instrucci+n. .Eisten 7 modos de direccionamiento para el procesador 8'88. 1. ,ireccionamiento de registro. .n este direccionamiento sus operandos se encuentran almacenados en cualquiera de los registros de prop+sito general o en los registros de segmento. .jemplo add aE"bE

14

M.C. Hilda Castillo Zacatelco

2. ,ireccionamiento inmediato. .n este direccionamiento el operando se encuentra almacenado inmediatamente despu-s de la instrucci+n por lo cual no se necesita calcular la direcci+n e?ecti!a. .jemplo cmp aB"6 0. ,ireccionamiento directo. .n este direccionamiento la direcci+n del operando se encuentra contenida en la instrucci+n" esta direcci+n es sumada a la base del segmento de datos para obtener la direcci+n e?ecti!a. .jemplo mo! cE" D1''G 4. ,ireccionamiento indirecto. #e utili=an los registros #O" *O o *[ para proporcionar de manera indirecta la direcci+n del operando. .sta direcci+n es tomada de cualquiera de los registros ya mencionados y es sumada a la base del segmento de datos para obtener la direcci+n e?ecti!a sel operando. .jemplo mo! bE" DsiG 5. ,ireccionamiento de datos. .n este caso se establece una base a tra!-s del registro 3[ o del registro 3;" a partir de la cual se tomarSn los datos del segmento de datos o del segmento de stac:. .l contenido de cualquiera de los dos registros es una direcci+n que serS sumada a un despla=amiento contenido en la instrucci+n y al registro que apunta a la direcci+n inicial del segmento correspondiente. #i se utili=a el registro 3[ se tomarS como base del segmento el registro *#. #i se utili=a el registro 3; la base del segmento serS el registro ##. .jemplo add aE" DbE>2'G 6. ,ireccionamiento inde ado. .n este direccionamiento se utili=an los registros de ndice #O o *O para calcular la direcci+n e?ecti!a de un operando a tra!-s de la suma del registro ndice con el despla=amiento contenido en la instrucci+n" aqu se in!olucra el registro que apunta a la direcci+n inicial del segmento de datos. .jemplo add bE" Dsi>04G 7. ,ireccionamiento de base inde ada o inde ado con base. .n este direccionamiento se utili=a el registro de base 3[ y el registro de ndice #O para el cSlculo de la direcci+n e?ecti!a a tra!-s de la suma con un despla=amiento contenido en la instrucci+n y con la direcci+n inicial del segmento de datos. .jemplo add dE" DbE>si>1'G

5. "epurador.
.s un programa que sir!e para locali=ar errores a tra!-s de un cierto nmero de t-cnicas interacti!as" es decir" a tra!-s de la interacci+n con el usuario.IdemSs de ser una !aliosa Berramienta de depuraci+n" un depurador es una !aliosa Berramienta de aprendi=aje utili=ada para conocer paso a paso la ejecuci+n de cada instrucci+n" para lle!ar a cabo la interacci+n con el usuario" el depurador cuenta con comandos que son +rdenes para el programa" eEiste un depurador espec?ico para cada lenguaje" para el ensamblador 8'88 el programa depurador se llama debug" el cual cuenta con 18 comandos que incluyen manejo de memoria de registros y de arcBi!os" para utili=ar el programa debug Bay que llamarlo por su nombre y oprimir enter. 15

M.C. Hilda Castillo Zacatelco

Comandos del de1u . Comando # )#ssemble+. #e encarga de ensamblar mnem+nicos 8'86" 8'87 y 8'88" directamente en la memoria" esto es" permite meter instrucciones a partir de una direcci+n especi?icada ensamblSndolas inmediatamente para ser ejecutadas. ,a sintaEis es IDdirecci+nG .jemplo )I 1'' direcci+n cs 1'' mo! aB" ' direcci+n cs 1'2 add aB"bB direcci+n cs 1'4 ;ara terminar de ensamblar solo dar enter y se retornarS al prompt esperando una nue!a orden. .l comando I !eri?ica los errores de sintaEis lnea a lnea" si eEistiera un error en una lnea no le permitirS al usuario escribir la siguiente lnea sin Baber corregido la anterior. .jemplo )I 2'' direcci+n cs 2'' mo! 5"aB ^.rror direcci+n cs 2'' Comando , ),ump+. .ste comando muestra el contenido de la memoria del rango especi?icado en el comando" o bien muestra 128 bytes a partir de la direcci+n inicial especi?icada en el comando. #intaEis * DrangoG _ ?inal .jemplo C+digo BeEadecimal asociado )d 1'' #olo usando una direcci+n inicial 1'74 '1'' A8 83 CA 81 .9 82 '' 26)88 '. 8' '' C0 83 1. 92 .......`........ 1'74 '11' *. 3. 1I *4 3I AA AA 38)'' I. C* 2A 04 '' 60 1' ...........F4.c. 1'74 '12' *3 .2 'I C' 74 '9 56 57).8 2I 21 5A 5. 70 'I 39 ....t.Za.@TC^s.. 1'74 '10' '4 '1 AC 56 57 A0 I4 5A)5. C0 5' 56 00 C9 00 *3 ...Za..C^.;Z0.0. 1'74 '14' IC .8 5A 20 74 19 0C '*)74 15 A6 C7 2' 75 '6 0I ..Cbt.H.t... u. CarScter donde rango puede ser una sola direcci+n o direcci+n inicial" direcci+n

16

M.C. Hilda Castillo Zacatelco

1'74 '15' '6 'C *0 74 'I 41 0C 22)75 .6 8' A7 2' .3 .1 5. ...t.IHcu... ..^ 1'74 '16' 58 C0 I1 .1 *7 83 06 .0)*7 C6 '6 25 *9 '' C6 '6 [.....6....d.... 1'74 '17' 21 *9 '' 83 06 .0 *7 83)'. .1 *7 83 *6 .0 42 51 T...6.........3< )d 1''"12' .speci?icando un rango 1'74 '1'' A8 83 CA 81 .9 82 '' 26)88 '. 8' '' C0 83 1. 92 .......`........ 1'74 '11' *. 3. 1I *4 3I AA AA 38)'' I. C* 2A 04 '' 60 1' ...........F4.c. 1'74 '12' *3 . ) Comando . ).nter+. Muestra el contenido de la memoria permitiendo la modi?icaci+n de dicBo contenido. ,a memoria es modi?icada nicamente en la porci+n correspondiente al segmento de datos. #intaEis . *irecci+n D,ista de datosG Uso Cuando se le proporciona nicamente la direcci+n muestra el contenido de la memoria en esa direcci+n y espera cuatro posibles opciones 1& <ue el usuario oprima la barra espaciadora con lo cual mostrarS el contenido de la siguiente localidad. .jemplo )e 1'' 1'74 '1'' A8. 83. CA. #e oprimi+ dos !eces la barra espaciadora. 2& <ue el usuario oprima la tecla correspondiente al gui+n" en cuyo caso mostrarS el contenido de la localidad anterior. .jemplo )e 1'' 1'74 '1'' A8. 83. CA.) 1'74 '1'1 83. 0& #i el usuario oprime enter" saldrS del comando .jemplo )e 1'' 1'74 '1'' A8. ) .jemplo )e 1'' 1'74 '1'' A8.54 83.45 .n este caso en la direcci+n 1'' en lugar de tener un A8 aBora se tendrS un 54 y en la siguiente direcci+n %1'1& en lugar de tener un 83 se tendrS aBora un 45. ;ara !eri?icar esto se debe utili=ar el comando * con la direcci+n 1''. 83. CA. .sta ltima puede omitirse

4& Modi?icar la in?ormaci+n" esto es" dar un nue!o dato y oprimir enter.

17

M.C. Hilda Castillo Zacatelco

Rtra ?orma de usar el comando es ademSs de dar la direcci+n" dar una cadena encerrada entre comillas %ef&. .sta in?ormaci+n serS almacenada a partir de la direcci+n dada en el segmento de datos. .jemplo )e 1'' c,enguaje ensambladorc ) IBora !eri?icamos que realmente tenemos esta cadena en el segmento de datos a partir de la direcci+n 1''" para ello utili=amos el comando *. )d 1''"10' 1'74 '1'' 1'74 '11' 1'74 '12' 1'74 '10' ) Comando R )Register+. Muestra el contenido de los registros y permite modi?icarlos. #intaEis $ Dnombre del registroG .jemplo )r .n este caso solo muestra el contenido de los registros I[/'''' 0:C0000 C[/'''' *[/'''' #;/AA.. 3;/'''' #O/'''' *O/'''' "SC10#4 .#/1'74 ##/1'74 C#/1'74 O;/'1'' NZ U; .O ;, NZ NI ;R NC 1'74 '1'' 4C *.C #; ) )r bE 0: '''' 0 )r ds "S 1'74 .ste es el !alor anterior del registro ds 1000 Iqu estamos cambiando el !alor de los registros bE y ds. )r I[/'''' 0:C0000 C[/'''' *[/'''' #;/AA.. 3;/'''' #O/'''' *O/'''' "SC1000 .#/1'74 ##/1'74 C#/1'74 O;/'1'' NZ U; .O ;, NZ NI ;R NC 1'74 '1'' 4C *.C #; 3anderas ) Iqu podemos comprobar que s se reali=aron nuestros cambios ,as banderas que podemos !isuali=ar con el comando r son 8" -stas estSn representadas por 2 caracteres y tienen dos estados. Iqu no aparece la bandera de Mrap. 3andera RA %R!er?loP& *A %*irection& .ncendido RZ *N %*ecremento& NZ U; %Oncremento& Ipagado 4C 65 6. 67 75 61 6I 65)2' 65 6. 70 61 6* 62 6C ,enguaje ensambl 61 64 6A 72 3I AA AA 38)'' I. C* 2A 04 '' 60 1' ador.......F4.c. *3 .2 'I C' 74 '9 56 57).8 2I 21 5A 5. 70 'I 39 ....t.Za.@TC^s.. '4 .

18

M.C. Hilda Castillo Zacatelco

OA %Onterrupt& #A %#ign& ZA %Zero& IA %IuEiliary Carry& ;A %;arity& CA %Carry&

.O %Habilitado& NU %Negati!o& Z$ IC ;. %;ar& CV

*O %*esBabilitado& ;, %;ositi!o& NZ NI ;R %Ompar& NC

Comando 6 )6race+. ;ermite ejecutar una a una las instrucciones de un programa" a partir de la direcci+n especi?icada" o de la direcci+n contenida en el registro O;. #intaEis MD/direcci+nG DnumeroG #i se omite la direcci+n el depurador ejecuta la instrucci+n cuya direcci+n esta contenida en el registro O;. #i no se omite el nmero" este comando ejecutarS nmero de instrucciones a partir de la direcci+n dada o contenida en el registro O;. #i se omite numero" solo se ejecuta una sola instrucci+n. .jemplo )t/1'' 2 #e ejecutaron 2 instrucciones a partir de la direcci+n 1'' I[/'''' 3[/'''' C[/'''' *[/'''' #;/AA.5 3;/'''' #O/'''4 *O/'''' *#/1''' .#/1'74 ##/1'74 C#/1'74 O;/'1'1 NZ U; .O NU NZ NI ;R NC 1'74 '1'1 65 *3 65 I[/'''' 3[/'''' C[/'''' *[/'''' #;/AA.5 3;/'''' #O/'''5 *O/'''' *#/1''' .#/1'74 ##/1'74 C#/1'74 O;/'167 NZ U; .O NU NZ NI ;R NC 1'74 '167 .0*7 YC[Z '14' .sta es la siguiente instrucci+n ) .sta es la direcci+n de la siguiente instrucci+n a ejecutarse )t #e ejecuta una sola instrucci+n I[/'''' 3[/'''' C[/'''' *[/'''' #;/AA.5 3;/'''' #O/'''5 *O/'''' *#/1''' .#/1'74 ##/1'74 C#/1'74 O;/'14' NZ U; .O NU NZ NI ;R NC 1'74 '14' IC ,R*#3 ) Comando 7. ;ermite !er el contenido del segmento de c+digo %el conjunto de instrucciones& a partir de la direcci+n especi?icada y se esta se omite" a partir de la direcci+n contenida en el registro O;. #intaEis\ U Ddirecci+n inicial" direcci+n ?inalG #i se omite la direcci+n ?inal se muestran 1? bytes del segmento de c+digo" o menos si es que alguna instrucci+n sobrepasa los 1? bytes.

19

M.C. Hilda Castillo Zacatelco

.jemplo )u 1''"1'4 1'74 '1'' 4C *.C #; 1'74 '1'1 65 *3 65 1'74 '1'2 6. *3 6. 1'74 '1'0 67 *3 67 1'74 '1'4 7561 YNZ '167 )r I[/'''' 3[/'''' C[/'''' *[/'''' #;/AA.5 3;/'''' #O/'''5 *O/'''' *#/1''' .#/1'74 ##/1'74 C#/1'74 O;/'14' NZ U; .O NU NZ NI ;R NC 1'74 '14' IC ,R*#3 .l registro O; contiene 14' )u #e despliega a partir de la direcci+n 14' 1'74 '14' IC ,R*#3 1'74 '141 .85A20 CI,, 24I0 1'74 '144 7419 YZ '15A 1'74 '146 0C'* CM; I,"'* 1'74 '148 7415 YZ '15A 1'74 '14I A6C72' M.#M 3H"2' 1'74 '14* 75'6 YNZ '155 1'74 '14A 0I'6'C*0 CM; I,"D*0'CG 1'74 '150 74'I YZ '15A 1'74 '155 41 ONC C[ 1'74 '156 0C22 CM; I,"22 1'74 '158 75.6 YNZ '14' 1'74 '15I 8'A72' [R$ 3H"2' 1'74 '15* .3.1 YM; '14' 1'74 '15A 5. ;R; #O )u0'' #e despliegan 1? bytes a partir de la direcci+n 0'' 1'74 '0'' ''C* I** CH"C, 1'74 '0'2 2170'0 IN* D3;>*O>'0G"#O 1'74 '0'5 .942AA YM; '24I 1'74 '0'8 83*8 MRZ 3["I[ 1'74 '0'I 3'AA MRZ I,"AA 1'74 '0'C 864718 [CHU I,"D3[>18G 1'74 '0'A I219'' MRZ D''19G"I, 1'74 '012 C0 $.M 1'74 '010 5' ;U#H I[ 1'74 '014 00C9 [R$ C["C[ 1'74 '016 AC C,* 1'74 '017 IC ,R*#3 1'74 '018 41 ONC C[ 1'74 '019 'IC' R$ I,"I, 1'74 '013 75AI YNZ '017 1'74 '01* 23A1 #U3 #O"C[

2'

M.C. Hilda Castillo Zacatelco

1'74 '01A 58 ;R; I[ )*ireccion C+digo Onstrucciones Comando 8 )8uit+. Nos permite salir del depurador. #intaEis < Comando 9. ;ermite ejecutar un conjunto de instrucciones. #intaEis U/dirCinicial" dirC?inal Comando w. ;ermite guardar un conjunto de instrucciones a disco. #intaEis P dirCinicial Intes Bay que colocar el nmero de bytes de que consta el programa en los registros3[C[.

!. Con,unto de instrucciones
#intaEis" Mnem+nicos" Rperandos 'nemnico. Nombre de la instrucci+n" generalmente es la abre!iaci+n de la acci+n que se quiere reali=ar. Ibre!iaciones %operandos& reg registro de 8 o 16 bits %no incluidos los registros segmento y los ndice& regp' registro de prop+sito general de 16 bits regseg registro segmento regind registro ndice mem localidad de memoria DdirG" byte DregG" Pord DregG dato operando de 8 o 16 bits dir direcci+n de 16 bits con contador que puede ser 1" cl o cE : ; contenido de Instrucciones de trans*erencia 'O- %mo!e&. $eali=a el mo!imiento %copia& de la in?ormaci+n. 21

M.C. Hilda Castillo Zacatelco

#intaEis MRZ destino" origen a& MRZ reg1" memFreg2FregindFregsegFdato b& MRZ mem" regFregsegFregind c& MRZ regseg" memFregindFregsegFregp1 .jemplo MRZ I["3[ MRZ CH" D1''G MRZ I[" D1''G MRZ D0''G" 3[ MRZ D#OG" 3[ MRZ *#" DI[G MRZ *#" 3[ 43$. Carga un registro de 16 bits con una direcci+n espec?ica. #intaEis ,.I reg" dir .jemplo ,.I 3[" D1''G 3[1'' MRZ I[" 128 es equi!alente a ,.I I[" D128G [CHU. Ontercambia el contenido de la in?ormaci+n. #intaEis a& [CHU regFregind" regFmemFregind b& [CHU mem" regFregind .jemplo [CHU I[" C[ [CHU D1''G" #O @AS>. Coloca en el tope del stac: el contenido de un registro de 16 bits. #intaEis ;U#H regp1FregsegFmemFregind .jemplo ;U#H I[ ;U#H C# ;U#H D#OG @O@. Coloca en algn registro de 16 bits el contenido del stac:. #intaEis ;R; regp1FregsegFregindFmem .jemplo ;R; I[ ;R; #O ;R; D1''G

22

M.C. Hilda Castillo Zacatelco

4$>D. Coloca las banderas del orden bajo en el registro IH. #intaEis ,IHA #IHA. Coloca el contenido de IH en la parte baja del registro de banderas. #intaEis #IHA @AS>D. Coloca el contenido del registro de banderas en el stac: %primero la parte alta y despu-s la parte baja&. #intaEis ;U#HA @O@D. Coloca el contenido del stac: en el registro de banderas %el primer byte del stac: en la parte baja y el #egundo byte en la parte alta&. #intaEis ;R;A Instrucciones aritmticas. $"". $eali=a la suma entre dos operandos. #intaEis a& I** regFregind" regFmemFregindFdato b& I** mem" regFregind .jemplo I** I[" 3[ I** D1''G" IH I** #O" D3[G $"C. $eali=a la suma entre dos operandos y el carry" la sintaEis es equi!alente a la del I**. %I** op1>op2>cy& .jemplo I*C 3H" A' SA0. $eali=a la resta entre dos operandos" la sintaEis es equi!alente a la del I**. .jemplo #U3 I[" 3[ #U3 D3[G" C[ S00. $eali=a la resta entre dos operandos y el carry" la sintaEis es equi!alente a la del I**. %op1)op2)cy&. .jemplo #33 3H" C, #33 C[" D#OG INC. Oncrementa en 1 un operando. #intaEis ONC regFregindFmem 20

M.C. Hilda Castillo Zacatelco

.jemplo ONC C[ ONC #O ONC 3VM.D1''G ONC aR$*D2''G "3C. *ecrementa en uno el operando" la sintaEis es equi!alente a la de la instrucci+n ONC. .jemplo *.C aR$*D2''G *.C 3[ N3<. Rbtiene el complemento a 2 del operando. #intaEis N.U regFregindFmem .jemplo N.U I[ N.U 3VM.D1''G 'A4. Multiplica dos datos" esta multiplicaci+n es sun signo. #intaEis MU, regFregindFmem ,a multiplicaci+n se lle!a a cabo de la siguiente ?orma 1& I[ I, @ reg %de 8 bits& 2& *[I[ I[ @ reg %de 16 bits& .jemplo MU, 3H MU, aR$*D#OG MU, C[ I'A4. Multiplica dos datos con signo" la sintaEis es equi!alente a la del MU,. .jemplo OMU, *, OMU, 3VM.D2''G Onstrucciones l+gicas. "I-. *i!ide un operando que esta en I[ o *[ I[ entre su nico argumento. #intaEis a& *OZ regC8bits I,H) I[FregC8bits y IHH) residuo b& *OZ regC16bits I[H)*[ I[FregC16bits y *[ H)resto $N". $eali=a la operaci+n IN* entre dos operandos.

24

M.C. Hilda Castillo Zacatelco

#intaEis a& IN* regFregind" regFmemFregindFdato c& IN* mem" regFregind .jemplo IN* I[" D#OG IN* *," 3H IN* C[" 1 O5. $eali=a la operaci+n R$ entre dos operandos" su sintaEis es equi!alente a la de la instrucci+n IN*. .jemplo R$ I[" 3[ R$ #O" D*OG NO/. Niega el !alor del operando. Rbtiene el complemento a 1 del operando. #intaEis NRM regFregindFmem .jemplo NRM I[ NRM aR$*D#OG :O5. Rbtiene el or eEclusi!o de dos operandos %!alores iguales da '" !alores di?erentes da 1&" su sintaEis es equi!alente a la del IN*. .jemplo [R$ IH" C, [R$ D1''G" #O Onstrucciones de comparaci+n y salto. C'@. $eali=a la comparaci+n entre dos operandos" esta instrucci+n puede modi?icar el registro de banderas. #intaEis a& CM; regFmemFregind" regFdato b& CM; mem" regFdatoFregind ,a instrucci+n CM; reali=a una resta del primer operando menos el segundo operando" alterando el !alor de las banderas. .jemplo CM; 3VM.D1''G" 6 CM; IH" 7 %aB Q 7& CM; DC[G" 3[

25

M.C. Hilda Castillo Zacatelco

Saltos E'@. $eali=a la trans?erencia del programa" esto es" cambia la secuencia de ejecuci+n. Il registro O; se le asigna la direcci+n del argumento del YM;. #intaEis YM; dirFregp1FregindFmem .jemplo YM; 12' YM; D3[G YM; #O E$ o EN03. #alta si la bandera del carry es uno. E03 o EN$. #alta si la bandera del carry o del cero tienen !alor 1. EC:F. #alta si el registro C[ es cero. E3 o EF. #alta si la bandera del cero es 1. E< o EN43. #alta si la bandera de cero es cero y la bandera de signo es igual a la bandera del o!er?loP. #alta si es mayor o si no es menor o igual. E<3 o EN4. #alta si la bandera del signo es igual a la del o!er?loP. #alta si es mayor o igual. E4 o EN<3. #alta si la bandera del signo es di?erente a la del o!er?loP. #alta si es menor. E43 o EN<. #alta si la bandera del cero es uno o si la bandera del signo es di?erente a la del o!er?loP. #alta si es menor o igual. EN3 o ENF. #alta si la bandera de cero es igual a cero. #alta si no es igual. ENO. #alta si la bandera del o!er?loP es cero. EN@ o E@O. #alta si la bandera de paridad es cero. ENS. #alta si la bandera de signo es cero. EO. #alta si la bandera del o!er?loP es uno. E@ o E@3. #alta si la bandera de paridad es uno. ES. #alta si la bandera de signo es uno. %negati!o& Nota Modas las instrucciones de salto tienen su sintaEis equi!alente a la de YM;. 4oop. $epite un bloque de instrucciones cE !eces" por lo tanto es necesario un !alor inicial en cE. .n cada iteraci+n ,RR; en ?orma automStica disminuye 1 de cE. #i cE es cero termina el ciclo. Il ejecutarse la instrucci+n ,RR; se decrementa cE y se !eri?ica si ya llego a cero" si es asi termina" sino continua el ciclo. #intaEis. ,RR; direcci+n .jemplo mo! aE"' mo! cE"1' 26

M.C. Hilda Castillo Zacatelco

Ciclo inc aE loop ciclo @rocedimientos 7su1rutinas9 ,efinicin. Conjunto de instrucciones que pueden ser ejecutadas desde otro programa. .n el 8'88F86 se tienen dos clases de subrutinas Cercanas )near+. #on aquellas que se encuentran de?inidas en el mismo segmento que el programa que los llam+. <ejanas)far+. #on aquellas que se encuentran de?inidas en un segmento distinto al programa que las llama. ;or lo tanto eEisten dos tipos de llamados y dos tipos de regreso. CI,, N.I$ y CI,, AI$ son llamados $.M N.I$ y $.M AI$ son retornos

#. Interrupciones
,efinicin. Una interrupci+n es el rompimiento en la secuencia de un programa para ejecutar un programa especial llamando una rutina de ser!icio cuya caracterstica principal es que al ?inali=ar regresa al punto donde se interrumpi+ el programa. *entro de una computadora eEisten dos clases de interrupciones Interrupciones por software. #on aquellas programadas por el usuario" es decir" el usuario decide cuSndo y d+nde ejecutarlas\ generalmente son utili=adas para reali=ar entrada y salida. Interrupciones por hardware. Zan a ser aquellas que son pro!ocadas por dispositi!os eEternos al procesador" su caracterstica principal es que no son programados" esto es" que pueden ocurrir en cualquier momento en el programa. .Eisten dos tipos de esta clase de interrupciones Onterrupciones por BardPare mascarables. Iquellas en las que el usuario decide si quiere o no ser interrumpido. Onterrupciones por BardPare no mascarables %NMO&. Iquellas que siempre interrumpen al programa. .n el procesador 8'88F86 las instrucciones por so?tPare se ejecutan con ayuda de las instrucciones ONM e O$.M. #e tienen 256 interrupciones di?erentes. *esde la interrupci+n ' Basta la interrupci+n 255 %AA&. Isociado con el concepto de interrupciones se tiene un Srea de memoria llamada !ector de interrupciones la cual contiene las direcciones de las rutinas de ser!icio de cada interrupci+n. .sta Srea se encuentra en el segmento '''' '''' Operaciones %ue reali;a la instruccin IN/. 1. #al!ar el registro de banderas 2. #al!ar el cs de la direcci+n de regreso

27

M.C. Hilda Castillo Zacatelco

0. #al!ar el O; de la direcci+n de regreso 4. Calcula el Srea donde estS la direcci+n de la rutina de ser!icio tipo@4 en el !ector de interrupciones. 5. .jecuta la rutina de ser!icio Operaciones %ue reali;a la instruccin I53/ 1. *esempila direcci+n de regreso 2. *esempila banderas /a1la de interrupciones del sistema 6ipo ' 1 2 0 4 5 6.7 8 9 I)* . A 1' 11 12 10 14 15 16 17 18 19 1I 13 1C 1* 1. 1A ,ireccin '''' '''4 '''8 '''C ''1' ''14 ''2' ''24 ''08 ''0C ''4' ''44 ''48 ''4C ''5' ''54 ''58 ''5C ''6' ''64 ''68 ''6C ''7' ''74 ''78 ''7C 7so *i!isi+n por cero .jecuci+n paso a paso NMO ;untos de ruptura R!er?loP ;rint #creen No usadas Mimer Meclado No usadas *isco Ompresora .F# !ideo ,ista del equipo MamaXo de memoria .F# disco .F# #erial .F# casette .ntrada Meclado #alida impresora $RM 3I#OC 3oot #trap %reset& AecBa y Bora 3rea: %Meclado& Ont. de timer Mabla del !ideo Mabla de disco Mabla del !ideo 0istema 3OR# *.3UU 3OR# *.3UU 3OR# 3OR# 3OR# 3OR# 3OR# 3OR# 3OR# 3OR# 3OR# 3OR# 3OR# 3OR# 3OR# 3OR# 3I#OC 3OR# 3OR# 3OR# 3OR# 3OR# 3OR# 3OR# 28

M.C. Hilda Castillo Zacatelco

2' 21 22 20 24 25 26 27

Mermina programa *R# Aunciones *R# *ir. *e regreso *R# Control)C *R# .rrores crticos *R# ,ectura absoluta del disco *R# .scritura absoluta del disco *R# Mermina programa *R# %*eja residente& ,as interrupciones del 3OR# siempre estSn disponibles al usuario %$RM&" en cambio las del *R# solo si el sistema se Ba cargado en memoria. Dunciones de la interrupcin 21G %ue permiten 3HS (uncin '1B ,ee un carScter del teclado con .CHR. $egresa en I, el ascii de: carScter %lo lee y lo escribe en pantalla& '2B .scribe un carScter en pantalla. .n!iar en *, el ascii del carScter que se quiere escribir '0B '4B '5B '6B ,ee un carScter de la entrada auEiliar %serial& .scribe un carScter en el dispositi!o auEiliar %serial& .scribe un carScter en la impresora. .n!iar en *, el carScter a escribir. .F# directa de la consola %teclado > !ideo&

''8' ''84 ''88 ''8C ''9' ''94 ''98 ''9C

#i al llamar a esta ?unci+n *,/AAB entonces implica que se quiere una lectura de carScter. #i Bubo un carScter presionado ZA/' y en I, esta el carScter. #i no Bay carScter presionado ZA/1. #i *,HJ'AAB entonces escribe dicBo carScter en pantalla. '7B ,ee un carScter sin eco. $egresa en I, el carScter. '9B *espliega una cadena en pantalla. .n!iar *# *[/direcci+n de la cadena. *ebe ser una cadena de c+digos ascii que termina con egf 'aB ,ee un bu??er de caracteres. .n!iar *# *[/apuntador al bu??er. Mc / mSEimo nmero de caracteres a leer. Nc/nmero de caracteres ledos. 3u??er mc nc caracteres ,a interrupci+n 21 nos permite leer del teclado" escribir en !ideo" escribir en impresora" leer y escribir en el dispositi!o auEiliary %;uerto serial&. /ipos de 3nsam1ladores *e?inici+n. Un ensamblador es un programa que traduce mnem+nicos de un procesador a si correspondiente lenguaje de mSquina. ;or la ?orma en que trabajan eEisten dos tipos de ensambladores

29

M.C. Hilda Castillo Zacatelco

.nsambladores de lnea. #on aquellos que reciben una sola lnea de un programa y la ensambla independientemente del resto del programa. .jemplo el comando a del debug. .nsambladores de arcBi!o. #on aquellos que ensamblan todo un programa almacenado en un arcBi!o. ;or el tipo de in?ormaci+n que manejan los ensambladores se di!iden tambi-n en .nsambladores propios. %$esidentes& .nsamblan programas escritos en lenguaje del procesador con el que trabaja la mSquina. .jemplo MI#M .nsambladores cru=ados. %Crossassembler& .nsamblan programas escritos en lenguaje de un procesador di?erente al de la computadora de trabajo" pero no puede ejecutarse. Macroensambladores. .nsambladores de?inici+n y eEpansi+n de MIC$R#. Aacilidades de los ensambladores de arcBi!o. 1. Nos permite de?inir etiquetas %nombre que nos marca una direcci+n importante& 2. Nos permite reser!ar memoria con una etiqueta asignada. 0. Nos permite ensamblar programas almacenaos en arcBi!os. 4. Nos permite de?inir constantes. 5. Nos permite dar nmeros en di?erentes bases. 6. Nos permite e!aluar eEpresiones aritm-ticas. .jemplo mo! aE" 0'>2 '$S' 7ensam1lador del &0&&H&!9 $ecibe arcBi!os ascii editados en cualquier editor que contenga programas en lenguaje ensamblador. Males arcBi!os deben tener eEtensi+n I#M y con una ?orma espec?ica. Ilgoritmo Codi?icaci+n en ensamblador .ditar no!.asm ensamblar %masm arcBi!o.asm\& c+digo de mSquina %arcBi!o.obj& ligar arcBi!o ejecutable %arcBi!o.eEe& ejecutar .l arcBi!o objeto no se puede ejecutar porque no tiene la direcci+n de memoria donde se ejecutarS y serS ligado. *e?inici+n. Una pseudoinstrucci+n es una instrucci+n para el programa ensamblador" esto es" que solo se ejecuta en el momento de ensamblar" ademSs no generar c+digo. @seudoinstrucciones para de*inir se mentos. #.UM.NM. *e?ine el inicio de un nue!o segmento" el ?ormato es Nombre #.UM.NM alineaci+n combinaci+n clase propios o cru=ados que permiten

0'

M.C. Hilda Castillo Zacatelco

,os parSmetros del #.UM.NM con in?ormaci+n para el ligador. Ilineaci+n. Nos de?ine la direcci+n a partir de donde puede colocarse el segmento. ;I$I %;I$IU$IAH&. ,a direcci+n del segmento es un mltiplo de 16. ;IU.. ,a direcci+n inicial del segmento es donde empie=a una pSgina %mltiplo de 1''B&. aR$*. ,a direcci+n inicial del segmento es una direcci+n par. 3VM.. .l segmento inicial donde sea. #i no se especi?ica la alineaci+n toma por de?ault una alineaci+n tipo ;I$I y serS un mltiplo de 16. Combinaci+n. *e?ine la ?orma en que el segmento puede combinarse con otros segmentos que tengan el mismo nombre y la misma clase. RMOMO$,I. #egmento pri!ado" es decir" no puede combinarse. #MIC]. #egmento para usarse con el ## #; ;U3,OC. .ste segmento puede unirse con todos los segmentos del mismo nombre y la misma clase para ?ormar uno solo. CRMMRN. Modos los segmentos del mismo nombre y clase se colocan a partir de la misma direcci+n. Cuando se tienen 2 segmentos con el mismo nombre y clase y ;U3,OC al ligar se unirSn en un solo segmento no importando que esten en arcBi!os distintos. Cuando se usa el CRMMRN !an a utili=ar el mismo espacio en memoria y si son de di?erente tamaXo utili=arS el tanto de memoria del mayor. Clase. Ondica el tipo de datos que contiene el segmento. W*IMIL datos WCR*.L c+digo W#MIC]L stac: #in embargo se pueden de?inir otros. #iempre !an entre comillas. .l programa ,ON] puede ligar !arios arcBi!os objeto para crear un ejecutable. .N*#. *e?ine el ?inal de un segmento. Aormato Nombre .N*# .jemplo *IMR# #.UM.NM ;I$I W*IMIL ........ *e?ine !ariables y constantes del programa *IMR# .N*# CR*OUR #.UM.NM ;I$I WCR*.L

01

M.C. Hilda Castillo Zacatelco

........ ;rograma principal y rutinas CR*OUR .N*# ;seudoinstrucciones %directi!as& para reser!ar memoria y de?inir constantes. *3 #ir!e para reser!ar un byte en la memoria con un !alor determinado. .l ?ormato es .tiqueta *3 !al1D"!al2"...."!alnG *a $eser!a un dato de 2 bytes %una palabra& con un !alor inicial DetiquetaG *a !al1D"!al2"...."!alnG ** $eser!a un dato de 4 bytes %una doble palabra& con un !alor inicial DetiquetaG ** !al1D"!al2"...."!alnG *< $eser!a 8 bytes de memoria %cuadruple palabra& con un !alor inicial DetiquetaG *< !al1D"!al2"...."!alnG *M $eser!a un dato de 1' bytes con un !alor inicial DetiquetaG *M !al1D"!al2"...."!alnG Nota !ali nos representa una eEpresi+n ?ormada por nmeros en cualquiera de las siguientes bases [[[3 binario [[[R octal [[[ [[[* decimal [[[H BeEadecimal R bien eEpresiones aritm-ticas de esos nmeros con los siguientes operadores > suma" ) resta" ) negaci+n aritm-tica %complemento a 2&" @ multiplicaci+n y F di!isi+n. Mambi-n pueden ser etiquetas o eEpresiones aritm-ticas que in!olucren etiquetas o bien cadenas de I#COOLs limitadas por ap+stro?es. .jemplo *IMR# #.UM.NM ;I$I W*IMIL UNR *3 '8H *R# *a 'A48H" 2'h" 1'1113 M$.# ** %45AH>178H&@2 CUIM$R *< 78 CONCR *a *R#" W3L #.O# *3 W.# UNI CI*.NIL *IMR# .N*# .<U ;ermite de?inir constantes .tiqueta .<U !alor

02

M.C. Hilda Castillo Zacatelco

.jemplo CRN#MINM. .<U 04 R$U *e?ine el despla=amiento inicial para ensamblar las siguientes lneas en el teEto R$U !alor ;seudoinstrucciones para de?inir procedimientos . ;$RC *e?ine el inicio de una subrutina Nombre ;$RC tipo #i se omite el tipo" por de?ault el procedimiento es de tipo N.I$ .N*; Ondica el ?inal de una subrutina Nombre .N*; ;ara compilar un programa con MI#M de ?orma condensada se utili=a c iJmasm arcBi!o\ #i no tiene errores el programa entonces se liga para crear el ejecutable c iJlin: arcBi!o\ sino primero Bay que corregir errores. .structura bSsica de un programa en macroensamblador. *IMR# #.UM.NM ;I$I W*IMIL ...... *IMR# .N*# ;O,I #.UM.NM ;I$I #MIC] W#MIC]L *a 1'' *U;%'& ;O,I .N*# CR*OUR #.UM.NM ;I$I WCR*.L I##UM. *# *IMR#" C# CR*OUR" ## ;O,I" .# NRMHONU \ ;$RU$IMI ;$ONCO;I, MION ;$RC AI$ ;U#H *# \ #ir!e para que cuando el programa termine [R$ I["I[ \ pueda regresar al debug o al sistema operati!o ;U#H I[ \ MRZ I["*IMR# \ Ictuali=a los registros de segmentos de MRZ *#" I[\ datos y eEtra 1 MRZ .#" I[ \ ((.. \ c+digo del programa principal $.M MION .N*; 00

M.C. Hilda Castillo Zacatelco

#U31 ;$RC (.. \ c+digo de la primera subrutina #U31 .N*; ((. #U3N ;$RC (( #U3N .N*; CR*OUR .N*# .N* MION Nota. .l programa principal puede ir al inicio o al ?inal del segmento de c+digo. *U; .s un operador de MI#M que indica que tiene que repetir la pseudoinstrucci+n n !eces con !alores iniciales marcados entre par-ntesis. *[ n *U; %!al1"!al2" ....." !alm& .jemplo *3 5 *U;%1"2& .n la memoria encontraramos lo siguiente [[[ '1 [[[>1 '2 [[[>2 '1 [[[>0 '2 [[[>4 '1 I##UM. es la pseudoinstrucci+n que sir!e para indicarle al ensamblador cuales segmentos son usados por los registros de segmentos y se pueden calcular correctamente las direcciones de los operandos.
1 .stas instrucciones sir!en para indicarle al procesador qu- segmentos usarS para *IMR# y .[M$I" es decir" los nicos registros que se cargan automSticamente son el segmento de c+digo y el de stac:.

.N* Ondica al MI#M que el ensamble termina .N* dir direcci+n del programa principal %una etiqueta& .jemplo ;rograma que limpia pantalla y escribe una cadena en el rengl+n12" columna 0'. *IMR# #.UM.NM ;I$I W*IMIL CI*.NI *3 W.#MR .# UNI ;$U.3IgL $.N *3 12 CR, *3 0' *IMR# .N*#

04

M.C. Hilda Castillo Zacatelco

;O,I #.UM.NM ;I$I #MIC] W#MIC]L *a 1'' *U;%'& ;O,I .N*# CR*OUR #.UM.NM ;I$I WCR*.L I##UM. *# CR*OUR" *# *IMR#" ## ;O,I" .# NRMHONU ,OM;OIC;INMI,,I ;$RC N.I$ MRZ I[" '6''H MRZ 3H" 71H MRZ C[" ''''H MRZ *[" 184AH ONM 1'H $.M ,OM;OIC;INMI,,I .N*; ;R#OCORNICCU$#R$ ;$RC N.I$ MRZ IH"'2 MRZ 3H"'' MRZ *H"$.N MRZ *," CR, ONM 1'H $.M ;R#OCORNICCU$#R$ .N*; ,.M$.$R ;$RC N.I$ MRZ IH"'9 ,.I *[" CI*.NI ONM 21H $.M ,.M$.$R .N*;

;$ONCO;I, ;$RC AI$ ;U#H *# [R$ I[" I[ ;U#H I[ MRZ I[" *IMR# MRZ *#" I[ MRZ .#" I[ CI,, ,OM;OIC;INMI,,I CI,, ;R#OCORNICCU$#R$ CI,, ,.M$.$R MRZ IH"'' ONM 21H $.M ;$ONCO;I, .N*; CR*OUR .N*#

05

M.C. Hilda Castillo Zacatelco

.N* ;$ONCO;I, Operaciones con cadenas de caracteres. 'O-S. Mue!e un byte" palabra o palabra doble desde una localidad en memoria direccionada por #O a otra localidad direccionada por *O. 4O"S. Carga desde una localidad de memoria direccionada por #O un byte en I," una palabra en I[ o una palabra doble en .I[. S/OS. Ilmacena el contenido de los registros I," I[" o .I[ en la memoria direccionada por #O. C'@S. Compara localidades de memoria de un byte" palabra o palabra doble direccionadas por #O" *O. SC$S. Compara el contenido de I," I[ o .I[ con el contenido de una localidad de memoria direccionada por #O. &. -ideo #er!icios de la interrupci+n 1'B del 3OR# para el manejo de !ideo en modo teEto. Aunci+n ''B. .stablece modo de !ideo. Il/'0 modo teEto a color" 8'[25. Aunci+n o1B. .stablece el tamaXo del cursor. CB Q lnea inicial de rastreo" cl) lnea ?inal de rastreo. Aunci+n '2B. .stablece la posici+n del cursor. 3B Q nmero de pSgina" dB Q rengl+n" dl Q columna. Aunci+n '0B. ,ee la posici+n del cursor. 3B) pSgina. $etorna cB Q lXinea de rastreo inicial del cursor" cl Q lnea de rastreo ?inal del cursor" dB Q rengl+n" dl Q columna. Aunci+n '6B. $ecorrer Bacia arriba la pantalla. Il Q nmero de lneas o ' para toda la pantalla" bB Q atributo" cE Q rengl+n columna iniciales" dE Q rengl+n columna ?inales. Aunci+n '7B. $ecorrer Bacia abajo la pantalla. Il Q nmero de lneas o ' para toda la pantalla" bB Q atributo" cE Q rengl+n columna iniciales" dE Q rengl+n columna ?inales. Aunci+n '8B. ,eer atributo o carScter en la posici+n del cursor. 3B) nmero de pSgina. $etorna el carScter en al" y su atributo en aB. Aunci+n '9B. *esplegar atributo o carScter en la posici+n del cursor. Il) carScter que serS desplegado" bB) nmero de pSgina" bl) atributo" cE Q nmero de !eces que el carScter serS desplegado. Aunci+n 'aB *espliega un carScter en la posici+n del cursor con el atributo actual %no establece atributo&. Il QcarScter a desplegar" bB Q nmero de pSgina" cE Q nmero de !eces que el carScter serS desplegado. Modo grS?ico Aunci+n ''B. .stablece modo de !ideo. Il Qmodo de !ideo" 'cB Q grS?icos en color" 12B Q resoluci+n 64' E 48'. Aunci+n '8B. ,ee el atributo o carScter en la posici+n del cursor. Aunci+n '9B. *espliega carScter o atributo en la posici+n del cursor.

06

M.C. Hilda Castillo Zacatelco

Aunci+n 'aB. *espliega un carScter en la posici+n del cursor. Aunci+n 'cB. .scribe un piEel punto. Il Q color del piEel" bB) nmero de pSgina" cE Q columna" dE Q rengl+n. Aunci+n 'dB. ,ee un piEel punto. 3B Qnmero de pSgina" cE Qcolumna" dE Q rengl+n. $etorna el color del piEel en al.

.. /eclado
#er!icios de la interrupci+n 16B para manejo del teclado. Aunci+n ''B. ,ee un carScter. .sta ?unci+n maneja las teclas del teclado de 80 teclas" pero no acepta entrada de las teclas adicionales en el teclado ampliado de 1'1 teclas. $etorna en al el carScter" aB el c+digo de rastreo si al/' es una tecla de ?unci+n eEtendida. Aunci+n '1B. *etermina si un carScter esta presente. Aunci+n '2B. $egresa el estado actual de las teclas sBi?t. Aunci+n 1'B. ,ectura de un carScter del teclado. Aunci+n 11B. *etermina si esta presente un carScter.

07

M.C. Hilda Castillo Zacatelco

0i1lio ra*2a
1. Ibel" ;eter. ,enguaje .nsamblador y ;rogramaci+n para ;C O3M y Compatibles. Mercera edici+n. ;rentice Hall. M-Eico" 1996. 2. eIssemblyf" Bttp FFPPP.linuE.orgFassembly 0. eManual de Ontelf. 4. 3acca Cortes" .!al 3ladimir. Curso de .nsamblador para microprocesadores. 5. Notas de la pro?esora Ina ;atricia Cer!antes MSrque=.

08

Você também pode gostar