Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SIGUENOS EN: LIBROS UNIVERISTARIOS Y SOLUCIONARIOS DE MUCHOS DE ESTOS LIBROS GRATIS EN DESCARGA DIRECTA VISITANOS PARA DESARGALOS GRATIS. http://librosysolucionarios.net '4,. ¡ ...... ... .. 1 . 1 ~- • .=­ . ,. . .; -~- , 1 .. ~ ~~. . 'f ! lf r l FUNDAMENTOS • DE LOS MICROPROCESADORES ~1 . l.. ~ , 1 I ! . .\ \ . , • , .' ..,. 1 l' 1I I •\-'. - ., . iI I • • !' . 1 • I . ." - . /' '" -r , • .•,. . ~ .,,\Ik ~ \.; .. • J It . ., Segunda edición I1 L ~ '.~ ". J t ~- • .. • .. J ~ t' "• .'\ . ~ \ " ~ ..... \ - ~\ .-l'I---~.7" .- . ,. . ~ http://librosysolucionarios.net ~ '2m ; S mí e • - DeS~ '(f"O 1/0 . A~<..~ ..-,De 6~( (Cíe l ( Dv 0\) ll.l~ vv~ o 1..0 S J. .", 5.vcD ¡;. B D,D) 3L,.D / De VJtqY\ L ~ f'/ I \)x 1 .. t<qMJ l. FUNDAMENTOS DE LOS MICROPROCESADORES r Segunda edición • ROGER lo TOKHEIM Henry Sibley High School Mendota Heights, Minnesota Traduccl6n JUAN MANUEL SANCHEZ Departamento de Informática y Automática Facultad de Ciencias Físicas Universidad Complutense de Madrid Revisión técnica ANTONIO VAQUERO Catedrático de Informática Facultad de Ciencias Físicas Universidad Complutense de Madrid 8756 O McGRAW-Hlll . MÉXICO. BUENOS AIRES • CARACAS • GUATEMALA LISBOA • MADRID • NUEVA YORK • PANAMÁ • SAN JUAN SANT AFÉ DE BOGOTÁ. SANTIAGO • SAO PAUlO AUCKLAND • HAMBURGO • LONDRES • MILÁN • MONTREAL NUEVA DELHI • PARís • SAN FRANCISCO • SINGAPUR STo LOUIS • SIDNEY • TOKIO • TORONTO . .. http://librosysolucionarios.net •__ ~-~-~---------c . A\<--~ De- DeS~ ~f"oll O 6 fe (Dv O\J (C'c--e l 5.00 lo· BDID) '3 k·E> w~~owS t ( DeVfctll\ I L ~ t1 \.JX ) clo"S "5r5+e~8t..S. 5{' o ( u fo.. "r0\ V\ \J si'- O'-. fM\, ve '5 c:p ., ~ de \t'\'teCC [<O~. \<'\W\ J . e-, ofe~~"oS o CéU n OV"l P ::¿5cOU 1 , PROLOGO' " t• i , El estudiante de electrónica o especialista del futuro necesita conocer los microprocesadores y sistemas basados en microprocesador. Este conocimiento incluye tanto el hardware como el software de las microcomputadoras. Los microprocesadores son la base de un nuevo tipo de dispositivos inteligentes; se encuentran en diversos productos: desde los juguetes de los nifios a los automóviles, desde las microcomputadoras a los electrodomésticos, desde los robots y maquina­ ria industrial al equipo de entretenimiento casero. Gracias a estos dispositivos programables, denominados microprocesadores, se espera que el desarrollo de máquinas inteligentes se acelere en el futuro. La segunda edición de Fundamentos de los Microprocesadores de la serie Schaum proporcio­ na al lector los aspectos básicos, que normalmente se cubren en un primer curso de microproce­ sadores. La filosofia de la serie Schaum, de concentrarse en los problemas característicos que surgen cuando se estudia cualquier materia, está soportada en este libro gracias a la inclusión de unos 1.100 problemas, suplementarios y resueltos, sobre microprocesadores y microcomputado­ ras. Las soluciones completas vienen con la mayoría de los problemas de este libro. La segunda edición del libro contiene la mayor parte de los temas que hicieron que la primera edición tuviese un gran éxito. En la segunda edición se han afiadido algunas cosas que reflejan nuevas tendencias prácticas, cambios tecnológicos y sugerencias de estudiantes e instructores. Se han afiadido dos capítulos que cubren los microprocesadores de 8 bits 6502/65C02 en sus aspec­ tos hardware y de programación. Por demanda popular, se ha afiadido un capítulo donde se examinan algunos microprocesadores seleccionados de 16 y 32 bits. Entre éstos se encuentran los lntel de 16 y 32 bits: 8086, 8088, 80186, 80188, 80286 Y80386; además de los microprocesadores Motorola 68000, 68008, 68010, 68012, 68020 Y68030. Finalmente, se examinan los microproce­ sadores de 16 bits 65802 y 65816 de Western Design Center. Los temas tratados en este libro se seleccionaron cuidadosamente para que coincipiesen con los cursos impartidos en los niveles de escuela superior, profesional, colegio de cbm~idad y colegio de principiantes. Se analizaron muchos de los libros de texto más utilizados a nivel profesional y manuales de laboratorio sobre microprocesadores y microcomputadoras. Los temas y problemas incluidos en este libro de la serie Schaum son similares a los encontrados en los libros analizados. Los segmentos de los programas listados en este libro han sido cuidadosamente comprobados para que funcionen en microcomputadoras de bajo costo. Algunos de estos entre­ nadores están disponibles en lntel Corporation, Heath/Zenith y Sistemas Lab-Volt. La segunda edición de Fundamentos de los Microprocesadores de Schaum comienza con una corta introducción a las computadoras, a continuación se presenta información general sobre números, códigos y aritmética de computadoras junto con una breve revisión de los dispositivos digitales básicos. Los sistemas comerciales basados en microprocesador son muy complejos, esta es la razón por la que se utiliza un microprocesador genérico simplificado para introducir los fundamentos de las microcomputadoras, el microprocesador, la programación del microprocesa­ dor y las interfaces con el microprocesador. El conjunto de registros y el repertorio de instrucci~ nes del microprocesador genérico son subconjuntos de los de la MPU 8080/8085. A continua­ ción, se cubren con cierto detalle tres de los microprocesadores de 8 bits más populares: las unidades microprocesadoras descritas son la Intel 8080/8085, la Motorola 6800 y la 6502/65C02: • http://librosysolucionarios.net • .1 vi ~ J PROlOOO dedicándose dos capítulos a cada microprocesador. El capítulo final examina brevemente otros microprocesadores más complejos de 16 y 32 bits de Intel, Motorola y Westem Design Center. Extendemos nuestro agradecimiento a John Aliano de McGraw-Hill por su asistencia y pa­ ciencia: aJ estudiante de ingeniería Darrel K10tzbach por sus buenos efectos de investigación, corrección meticulosa de las pruebas y comprobación cuidadosa de la mayoría de los programas de este libro. Agradezco de manera especial a mi familia, Caroline, Dan y Marshall su ayuda, paciencia y estímulo. ROOER L. TOKHEIM Ca ./ , • f '/i 1fl.·. ~ ""' http://librosysolucionarios.net , Leo!,", = Center. mcia y pa­ CONTENIDO ~igación, r'!'ogramas .; ayuda, HmEIM PROLOGO ............................................................................ . v t Capítulo l. ;cú 1.1. 1.2. 1.3. lA. ~ Introducción .......................................................... . Organización de la computadora ........................................ . Organización de la microcomputadora ................................... . Operación de la microcomputadora ..................................... . f3 2.1. 2.2. 2.3. 2.4. 2.5. 2.6. 2.7. 2.8. Números binarios ...................................................... Números hexadecimales ......................... '............... '. . . . . . . . . Números BCD ......................................................... Aritmética binaria ...................................................... Notación en complemento a 2 ........................................... Aritmética en complemento a 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Agrupaciones de bits ......................... ~ . . . . . . . . . . . . . . . . . . . . . . . . . . Códigos alfanuméricos .................................................. 13 16 20 21 24 28 31 35 Capítulo 3. DISPOSITIVOS DIGITALES BASICOS ................................ . 39 3.1. 3.2. 3.3. 3.4. 3.5. 3.6. 3.7. , • Puertas lógicas ........................................................ . Combinación de puertas lógicas ...... : .................................. . Rip-flops y cerrojos .................................................... . Codificadores, decodificadores y visualizadores de siete segmentos .......... . Buffers y dispositivos de tres estados ..................................... . Memorias semiconductoras ............................................. . Utilización de las RAM y ROM ......................................... . , 39 43 46 52 55 57 60 ~ ~ ~ "' :. }. 3 5( NUMEROS, CODIGOS DE COMPUTADORA y ARITMETICA . . . . . . . . Capítulo 2. l l INTRODUCaON A LAS COMPUTADORAS .......................... . - -~ Úlpítulo 4. FUNDAMENTOS DE LAS MICROCOMPUTADORAS ................ . 4.1. Introducción .......................................................... . 4.2. Arquitectura simplificada de una microcomputadora ...................... . 4.3. Organización simplificada de la memoria ................................ . l. http://librosysolucionarios.net JS'• • " ':1 ":'j ; , -: viii CONTENIOO 4.4. Repertorio de instrucciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . . 4.5. Organización simplificada de la CPU........ ..... ... . ................. ... 4.6. Operación de la microcomputadora ...................................... Capítulo 5. 79 84 89 EL MICROPROCESADOR .............................................. . 100 S.l. 5.2. 5.3. 5.4. 5.5. 5.6. Características comunes de los microprocesadores ......................... . Descripciones de la hoja de datos ........................................ . Funciones y diagramas de las patillas .........•........................... Arquitectura del microprocesador ....................................... . Utilización del registro de direcciones/datos .............................. . Utilización del puntero de pila ......................................... .. 100 103 110 ; 114 / -/ :~ Capítulo 6. PROGRAMAOON DEL MICROPROCESADOR ......... , ............. . 136 6.1. 6.2. 6.3. 6.4. 6.5. 6.6. 6.7. 6.8. 6.9. 6.10. 6.11. 6.12. 6.13. Lenguajes máquina y ensamblador ..................................... . Repertorio simplificado de instrucciones ................................ . Repertorio de instrucciones: operaciones aritméticas ...................... . Repertorio de instrucciones: operaciones lógicas ......................... . Repertorio de instrucciones: operaciones de transferencia de datos ......... . Repertorio de instrucciones: operaciones de bifurcación ................... . Repertorio de instrucciones: operaciones de llamada y vuelta de subrutina .. . Repertorio de instrucciones: operaciones misceláneas ..................... . Escritura de un programa ............................................. . Modos de direccionamiento ........................................... . Bifurcación en programas .................•............................ Programas cíclicos .................................................... . Utilización de subrutinas ............................................. .. Capítulo 7. INTERFACES CON EL MICROPROCES~DOR l LJ} ........................ . 213 {J 213 21S 219 224 230 /] 7.1. Introducción .......................................................... . 7.2. Interfaz con la ROM ............................. '" ...........•........ 7.3. Interfaz con la RAM ................................................... . 7.4. Interfaces básicas de entrada/salida ..................................... .. 7.5. Interfaz con puertos prácticos de entrada/salida .................•.......... 7.6. Sincronización de transferencias de entrada/salida de datos mediante interrup­ ciones ................................................................ . 7.7. Decodificación de direcciones ........................................... . Capítulo 8. 136 140 142 152 158 16S 169 174 176 183 188 192 196 233 237 ,'­ ig) EL MICROPROCESADOR INTEL 8080/8085 .......................... . 247 8. l. 8.2. 8.3. 8.4. Introducción ......................................................... . Funciones y diagrama de patillas del 8085 .............................. . Arquitectura del 8085 ................................................. . Modos de direccionamiento o • • • • • • • • • • • • • • • • • • • • • • •· • • • • • • • • • • • • • • • • • • • • http://librosysolucionarios.net 247 248 253 261 " ~ ..... 8.5. 8.6. 8.7. 8.8. 8.9. 8.10. 79 84 89 CONTEl'I100 ix Repertorio de instrucciones del 8080/8085 ............. """" '................... ,. . ~ . Instrucciones de transferencia de datos del 8080/8085 .................... . Instrucciones aritméticas del 8080/8085 ................................. . Instrucciones lógicas del 8080/8085 .................................... . Instrucciones de bifurcación del 8080/8085 .............................. . Instrucciones de pila, E/S y control de máquina del 8080/8085 ............ . 266 272 279 289 295 302 100 ~..... ~~ ~ r" ... 110 114 t··... 136 CqítulD 9. V 9.1. 9.2. 9.3. 904. t:::: :~ ...... iaa ... r···· 136 140 142 152 158 165 169 174 176 183 188 192 196 ...... 10.1. 10.2. 10.3. lOA. 10.5. 10.6. 10.7. 10.8. 10.9. / ~V 11.1. 11.2. 11.3. 1104. r···· I 318 :324 329 335 Introducción ........................................................ . Interpretación de un programa sencillo del 6800 ........................ . Utilización del registro índice ........................................ .. Un programa del 6800 que utiliza una tabla de búsqueda (Iook-up) ....... . 345 347 Hi~ 383 388 390 397 405/ 405 1-/ 412 /'"~ 418 . ./ 422 / Capítulo 12. EL MICROPROCESADOR 6502 ........................................ 432 12.1. 12.2. 12.3. 1204. 12.5. 12.6. 12.7. 12.8. 12.9. 12.10. 12.11. Irrrup­ . ,. ...... Introducción .••...................................................... Funciones y diagrama de patillas del 6800 ............................. . Arquitectura del 6800 ............................................... . Modos de direccionamiento .......................................... . Repertorio de instrucciones del 6800 .................................. . Instrucciones de memoria y acumulador del 6800 ....••......... : ...... . Instrucciones del puntero de pila y registro índice del 6800 .............. . Instrucciones de bifurcación y salto del 6800 ........................... . Instrucciones del registro de códigos de condición del 6800 .............. . Capítulo 11. PROGRAMAOON DEL MICROPROCESADOR 6800 ................ . 213 213 215 219 224 230 Introducción........................................................... Programas lineales. . . . .. .. . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . Programas cíclicos. . . . . .••. ..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . .•••. . .. . •. . Programas matemáticos ............•............ : .................... ,. . Capítulo 10. EL MICROPROCESADOR MOTOROLA 6800 . .... . . . ..... .. ..... .. . .. 345 ~ ,' PROGRAMACION DEL MICROPROCESADOR 8080/8085 ............ 318 233 237 247 247 248 253 261 Introducción ....................................................... . Funciones y diagrama de patillas del 6502 ......•...................... Arquitectura del 6502 .............................................. . Modos sencillos de direccionamiento ................................. . Más modos de direccionamiento del 6502 ..•~•.•....................... Repertorio de instrucciones del 6502 ................................. . Instrucciones de transferencia de datos del 6502 ........... .' ........... . Instrucciones de flujo de control del 6502 ............................. . Instrucciones aritméticas del 6502 ................................... . Instrucciones lógicas y de manipulación de bits del 6502 : ....... : ...... . Instrucciones de interrupción y de control del sistema 6502 ....••.....••. 432 434 438 451 456 . .--~ 464 472 475 478 483 488 • http://librosysolucionarios.net " 4 ~ ~.~ ~ --"_L.--·~·A 2 (f'1 F ~ S.....Z.rr_sÍ!lí'•.•.iIIá.$IIIIII111. ..·.....*.·IIII'9 •• 7......d. .... _-=-... . . . . . . . . . . . . . . . .. . . .,. . . . . x CONTENIDO Capítulo 13. PROGRAMAOON DEL MICROPROCESADOR 6S02 ......... ,'....... 494 13.1. 13.2. 13.3. 13.4. 13.5. Introducción.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interpretación de un programa de suma BCD ........................... Multiplicación binaria................................................ Decodificación hexadecimal a siete segmentos........................... Utilización de subrutinas.. . . . .. . . .. . .. .. . . .. . . . .. .. . . .. . . .. . . .. .. . . . .. 494 498 ¡/' 504 511 (JI) 5181 /' / Capítrllo U. AÍ..GUNOS MICROPROCESADORES DE 16 Y 32 BITS. . . . . . . . . . . . . . . 530 14.1. 14.2. 14.3. 14.4. 14.5. 14.6. 14.7. Introducción......................................................... Intel8086 y 8088 ................................................•... Inte180186, 80188 y 80286 ........................................... lntel 80386 ..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motorola 68000, 68008, 68010 Y68012 ................................ Motorola 68020 y 68030 ............................................. . Westem Design Center 65802 y 65816 ................................. ¡ 530 531 535 1 ;5:38~ •. J"', . J-.) 549 INDICE ................................................................................. 555 - ~ '­ 1l: L;'¡; ,(, • :3 http://librosysolucionarios.net J _···. 494 1......... l .... . l ...... . 494 498 504 Capítulo 1 / 511@!I/ 518 i 530 ¡' INTRODUCCION A LAS COMPUTADORAS , 530 53! 535 1 1.1. INTRODUCCION 538 541 ,/:-1 546 549 / Las computadoras se han venido utilizando de forma general desde los afios 1950. En un princi­ pio las computadoras digitales eran máquinas grandes y caras, utilizadas por los gobiernos y, grandes empresas. El tamaño y forma de la computadora digital ha cambiado gracias a un nuevo dispositivo denominado microprocesador. El microprocesador es un el (circuito integrado) que tiene la mayoría de las capacidades de procesamiento de las grandes computadoras. El micropro­ cesador es un pequeño, pero extremadamente complejo, dispositivo LSI (gran escala de integra­ ción) programable. Las computadoras utilizan un programa almacenado. Las pequeñas computa­ doras, llamadas microcomputadoras. también utilizan el concepto de programa almacenado. Una microcomputadora contiene un microprocesador y como mínimo algún tipo de memoria semi­ conductora. Las grandes y caras computadoras habitualmente son unidades de propósito general. Normal­ mente se programan muchas veces y se utilizan para realizar muchas tareas. Las computadoras dedicadas se emplean cada vez más, debido al uso de los pequeños y baratos microprocesadores. Una computadora dedicada se programa para realizar sólo unas pocas tareas, como ocurre en los juguetes, termostatos, automóviles y herramientas. ~..... 555 ¡'h 1.2. ORGANIZACION DE LA COMPUTADORA Las secciones tradicionales de una computadora digital se muestran en la Figura 1.1. El sistema básico de la computadora consta de cinco unidades: la unidad de entrada, las unidades aritmética y de control (contenidas en la CPU, o unidad central de tratamiento), la unidad de memoria y la unidad de salida. Esta organización de las partes funcionales se denomina arquitectura de la computadora. Las unidades fisicas representadas por bloques de la Figura 1.1 constituyen el hardware. Para que sea útil, la memoria de programa debe decir a la CPU qué tiene que hacer. La preparación de la lista de instrucciones se denomina programación. La lista de instrucciones constituye un pro­ grama que se almacena de forma temporal o permanente en la memoria de programa. Estos programas manipulan informaciones denominadas datos. Software es un término general utiliza­ do para denominar a todos los programas; si el software se almacena permanentemente en la memoria programa, a veces, se denomina firmware. En resumen, la computadora funciona de la siguiente forma: los programas y datos son introducidos en la CPU y transferidos a sus respectivas posiciones de memoria. La cpe lee la I http://librosysolucionarios.net 'r r . ( ( l ' " ~-;¡f""'----- .,...,._~~. 2 1 FUNDAMENTOS DE LOS MICROPROCESADORES / I Entrada J I CPU Control + aritmética J I Salida ~ "'IIIIIIIII~I. 111I11III I Memonade programa WI Memona de datos 1lJ Memoria Figura 1.1. Organización general de una computadora. primera instrucción de la memoria de programa y la ejecuta. Las instrucciones pueden ser tan simples como SUMAR (ADD) dos números, TRANSFERIR (MOVE) un dato, INTRODUCIR o SACAR (INPUT u OUTPUT) un dato, o BIFURCAR (JUMP) a una parte diferente del programa. Cuando finalizan las manipulaciones de los datos, los resultados son transferidos a la salida de la computadora. De nuevo, la mayoría de las acciones de la CPU son debidas a las instrucciones almacenadas en el programa de memoria. PROBLEMAS RESUELTOS ;;.... :ID. _ "III~ ""111 _::.:."""",,,,,.1•. :.1:.:11 1.1. "",,,111 Listar las cinco secciones funcionales de una computadora digital. Solución: Las cinco secciones funcionales de una computadora se muestran en la Figura 1.1 Y son las unidades de entrada, control, aritmética, memoria y salida. CPU es un término general que incluye el control y la aritmética, así como algunos otros elementos. 1.2. Las unidades electrónicas reales como, por ejemplo, las representadas por las cajas de la Figura 1.1 se denominan ___ , mientras que los programas que instruyen a la computa­ dora se denominan software. - ~ .a._-" la .-:" Solución: Las unidades electrónicas fisicas reales de una computadora se denominan hardware. 1.3. Una persona llamada programador escribe una lista de ___ , que se denomina programa. Solución: Un programador escribe una lista de instrucciones que se denomina programa. 1.4. Listar dos tipos de información que se introduzca y almacene en la memoria de una computadora. Solución: El programa y los datos deben ser introducidos en la computadora y almacenados en me­ moria. http://librosysolucionarios.net -,11: .:11". -.".' INTRODUCCION A LAS COMPUTADORAS 1.S. 3 La mayoría de las acciones de la CPU en una computadora son debidas a las instrucciones almacenadas en la memoria de _ _ . Solución: La mayoria de las acciones de la CPU son debidas a las instrucciones almacenadas en la memo­ ria de programa. Los datos que se van a procesar se almacenan en la memoria de datos. En a l g u n a s ' j computadoras, no hay diferencia fisica entre la memoria de programa y la de datos. 1.3. ORGANIZACION DE LA MICROCOMPUTADORA •• "'1' ' Lteden ser tan rrRODUCIR diferente del <'cridos a la debidas a las 11 l.I Y son las tn.l que incluye Lcaj~ de la a la computa­ L ,se denomina t ,> j Un sistema microcomputador es una computadora digitaL Se utiliza el prefijo micro debido a su pequeño tamaño y bajo costo. El microprocesador generalmente forma la sección de la CPU de un sistema microcomputador, cuya organización está esbozada en la Figura 1.2. La microcompu­ tadora contiene las cinco secciones básicas de una computadora: (1) la unidad de entrada. (2) las unidades de control y (3) aritmética contenidas en el microprocesador, (4) la unidad de memoria y (5) la unidad de salida. El microprocesador controla todas las unidades del sistema utilizando las líneas de control que aparecen a la izquierda de la Figura 1.2. El bus de direcciones que aparece junto a las líneas de control (16 conductores en paralelo) selecciona una cierta posición de memoria, puerto de entra­ da o puerto de salida. El bus de datos (ocho conductores paralelos), a la derecha de la Figura 1.2, es un camino de doble dirección que se utiliza para introducir y sacar datos de la unidad micro­ procesadora. Es importante observar que la unidad microprocesadora (MPU) puede enviar, o recibir, datos de la memoria utilizando el bus de datos. Si un programa se va a almacenar de forma permanente, habitualmente se coloca en un dispositivo de memoria denominado memoria de sólo lectura (ROM). La ROM normalmente es una pastilla de memoria, programada permanentemente, en forma de Cl. La memoria temporal donde se almacenan los datos, generalmente es un dispositivo integrado denominado memoria de lectura/escritura (RWM). En la práctica, la memoria de lectura/escritura se denomina memoria de acceso aleatorio. o RAM. Los programas de usuario de la microcomputadora, que son de naturaleza temporal, también están almacenados en la sección RAM de la memoria junto a los datos. Las secciones RAM y ROM de memoria aparecen separadas en la Figura 1.2 debido a que, generalmente, son circuitos integrados separados. El sistema de la Figura 1.2 representa la organización general de una microcomputadora. La mayoría de ellas, como mínimo, deben tener estas características. Por claridad, es costumbre omitir en los diagramas de bloque fuentes de alimentación, relojes y algunas líneas de realimenta­ ción de la unidad microprocesadora. PROBLEMAS RESUELTOS moria de una 1.6. Los en me· I La CPU de una microcomputadora es un CI denominado ___ . • Solución: La CPU de una microcomputadora. generalmente. es un CI denominado microprocesador. En algunos diseños se necesitan varios CI para realizar el trabajo de la CPU. http://librosysolucionarios.net 4 l FUNDAMENTOS DE LOS MICROPROCESADORES Del mundo exterior =. ::a --------~:--~ ... .... ,.. Microprocesador CPU Control + aritmética Bus de datos (8 líneas) Memoria de programa (ROM) Bus de direcciones --+--.¡ (16 líneas) Memoria de datos (RAM) Salida(s) ~.....;:------....... Al mundo exterior Figura 1 .2. Organización tipics de una microcomputadora. 1.7. Acudir a la Figura 1.2. ¿Qué bloque de esta microcomputadora puede considerarse la unidad de conlron Solución: El microprocesador (también identificado como CPU en la Figura 1.2) controla las demás unida­ des de la microcomputadora. 1.8. Listar tres tipos de interconexiones en el sistema microcomputador de la Figura 1.2. Solución: Las interconexiones entre los CI de la microcomputadora de la Figura 1.2 son: el bus de direccio­ nes, el bus de datos y las líneas de control. En realidad hay más líneas entre los el que las mostradas en la Figura 1.2. http://librosysolucionarios.net = .. _~ ... ..........- ~ Entrada(s) LIneas de control li INTRODUCCION A LAS COMPUTADORAS 1.9. 5 El bus de direcciones de la Figura 1.2 es un camino de una dirección para la información codificada, mientras que el bus de ___ es un camino de dos direcciones. SoluciÓD: El bus de datos es un camino de dos direcciones para la información del sistema microcomputa­ dor de la Figura 1.2. 1.10. Los programas permanentes, normalmente se almacenan en dispositivos integrados deno­ minados memorias de ___ - ___ . ( Solución: Los programas permanentes comúnmente se almacenan en dispositivos integrados denominados memorias de sólo lectura (ROM). , 1.11. Las siglas ROM ¿qué tipo de memoria de computadora referencian? 111: datos lineas) Solución: ROM significa memoria de sólo lectura. 1.12. Los datos y los programas temporales de la microcomputadora se almacenan en memorias denominadas _ _ (RAM, ROM). Solución: Los datos y programas temporales se almacenan en memorias denominadas RAM. 1.13. El almacenamiento de datos en la RAM de una microcomputadora es ___ (permanen­ te, temporal). Solución: El almacenamiento de la RAM es temporal. 1.14. El lugar por donde la información entra o sale de una computadora se denomina _ _ (puerto, zócalo). Solución: La información entra o sale de la computadora a través de sitios denominados puertos. ., ~ ~IftSiderarse la ~.:!~más , pITa 1.4. OPERACION DE LA MICROCOMPUTADORA En la Figura 1.3 se muestra un ejemplo de como opera una microcomputadora. En el ejemplo se ilustra el siguiente procedimiento: unida­ 1.2. l. Pulsar la tecla A del teclado. 2. Almacenar la letra A en memoria. J 3. Imprimir la letra A en la pantalla del monitor de tubo de rayos catódicos (eRn. L El procedimiento de entrada-almacenamiento-salida esbozado en la Figura 1.3 es una opera­ ción común de un sistema microcomputador. El hardware electrónico utilizado en un sistema como el de la Figura 1.3 es bastante complicado. Sin embargo, la transferencia de datos en el sistema ayudará a explicar el uso de las diferentes unidades de la microcomputadora. - http://librosysolucionarios.net de direccio­ r las mostradas ,­ ¡ r 6 FUNDAMENTOS DE LOS MICROPROCESADORES Microcomputadora Teclado Entrada CPU Almacenar A 2 ...--+-_ Memoria Salida Monitor CRT .. r-----' A I I _____ .JI '­ l' Imprimir A Figura 1 .3. Operación tfpica de la microcomputadora. Un diagrama más detallado en la Figura lA ayudará a comprender el procedimiento común de entrada-almacenamiento-salida de la microcomputadora. Primero, observar cuidadosamente los contenidos de la memoria de programa en la Figura 1.4. Observar que las instrucciones ya se han cargado en las seis primeras posiciones de memoria. De la Figura lA, se desprende que las instrucciones que están en la memoria de programa son: 1. INTRODUCIR (INPUT) el dato del puerto de entrada 1. 2. ALMACENAR (STORE) el dato del puerto 1 en la posición 200 de la memoria de datos. 3. SACAR (OUTPUT) el dato al puerto de salida 10. Observar que solamente hay tres instrucciones en el programa anterior, aunque puede parecer que hay seis en la memoria de programa de la Figura 1.4. La razón para pensar esto, es que las instrucciones se descomponen habitualmente en varias partes. La primera parte de la instruc­ ción 1 consiste en INTRODUCIR (INPUT) un dato. La segunda parte indica de dónde proviene el dato (del puerto 1). La primera parte de acción de la instrucción se denomina operación y la segunda parte operando. Operación y operando están localizados en posiciones separadas de memoria en la memoria de programa de la Figura 1.4. Para la primera instrucción de la Figu­ ra 1.4, la posición 100 de memoria de programa contiene la operación de INTRODUCIR (INPUT) mientras que la posición 101 contiene el operando (puerto 1) desde donde se introduci­ rá la información. En el microprocesador de la Figura 1.4, se han identificado dos nuevas secciones denomina­ das registros. Estos registros especiales son el registro acumulador y el de instrucción. http://librosysolucionarios.net ..~.. J INTRODUCCION A LAS COMPUTADORAS A del t edado 1 ./ 7 ~ ./ Entrada puerto 1 ~ ./ ./ f I Acumulador .~ MPU ti I Registro de instrucción a Microprocesador ./ J , Dirección Contenido 100 \01 INTRODUCIR dato 102 ALMACENAR dato 8 103 en posición de memoria 200 104 SACAR dato 14 105 al puerto 10 1 ) !< . . . de direcciones y líneas decontrol . 3 '--0 I~ ~ es denomina­ ;n. ~ 0{ del puerto 1 7 Bus de datos 9 13 ./ Dirección Contenido 200 A memoria de : se introduci­ j. 0J ./ • ::<..ODUCIR .." Memoria de programa 10 llUede parecer 10. es que las de la instruc­ lIDde proviene rperación y la separadas de .... de la Figu­ ~ ~ 2 106 liento común tdadosamente lCCiones ya se rende que las 1 . .., J <:« 11 201 202 ·í 203 ~ Memoria de datos ~ Salida puerto 10 ./ l ~ A al monitor CRT Figura 1 .4. Operación paso a paso de una microcomputadora cuando ejecuta las instrucciones de la memoria de programa. http://librosysolucionarios.net e e 8 FUNDAMENTOS DE LOS MICROPROCESADORES La secuencia de eventos que ocurren en la microcomputadora en el ejemplo de introducir­ almacenar-sacar de la Figura 1.3 se esboza en la Figura 1.4. El flujo de instrucciones y datos puede seguirse en el diagrama por los números inscritos en los círculos. Recordar que el micropro­ cesador (MPU) es el centro de todas las transferencias de datos y operaciones. En la Figura lA se pueden seguir los pasos que a continuación se detallan. Paso l. La MPU envía la dirección 100 al bus de direcciones. Una línea de control habilita (conecta) la entrada de lectura en el CI de la memoria de programa (leer significa copiar informa­ ción de una posición de memoria). Este paso se simboliza en la Figura lA por un 1 inscrito en un círculo. Paso 2. La memoria de programa anuncia la primera instrucción (INTRODUCIR dato) al bus de datos. y la MPU acepta este mensaje codificado. La instrucción se coloca en una posición de memoria especial de la MPU, denominada registro de instrucción. La MPU decodifica (inter­ preta) la instrucción y determina que necesita el operando de la instrucción INTRODUCIR dato. Paso 3. La MPU envía la dirección 101 al bus de direcciones. La línea de control habilita la entrada de lectura de la memoria de programa. Paso 4. La memoria de programa coloca el operando (del puerto 1) en el bus de datos. El operando estaba localizado en la dirección 101 de la memoria de programa. Este mensaje codifi­ cado (la dirección del puerto 1) se acepta en el bus de datos y se coloca en el registro de instruc­ ción. La MPU decodifica ahora la instrucción completa (INTRODUCIR dato del puerto 1). Paso 5. La MPU hace que se abra el puerto 1 utilizando el bus de direcciones y las líneas de control en la unidad de entrada. La forma codificada de A es transferida y almacenada en el acumulador de la MPU. Es importante observar que la MPU sigue siempre una secuencia de busca-decodifica-ejecuta. Primero busca la instrucción en la memoria de programa; segundo, la decodifica y tercero, la ejecuta. Tratar de observar esta secuencia de busca decodifica-ejecuta en las dos instrucciones siguientes. Continuar con el programa listado en la memoria de programa de la Figura 1.4. Paso 6. La MPU direcciona la posición 102 en el bus de direcciones; después habilita la entrada de lectura en la memoria de programa utilizando las líneas de control. Paso 7. El código para la instrucción ALMACENAR dato es leído en el bus de datos y es aceptado por la MPU en el registro de instrucción. Paso 8. La MPU decodifica la instrucción ALMACENAR dato y determina que necesita el operando. La MPU direcciona la siguiente posición de memoria (103) Y habilita la entrada de lectura de la memoria de programa. Paso 9. El código para «en la posición de memoria 200» es colocado en el bus de datos por la memoria de programa. La MPU acepta este operando y lo almacena en el registro de instruc­ ción. La instrucción completa «ALMACENAR datos en la posición de memoria 200» ha sido buscada en memoria y decodificada. Paso 10. Ahora comienza el proceso de ejecución. La MPU envía la dirección 200 al bus de direcciones y habilita la entrada de escritura de la memoria de datos (escribir significa copiar datos en una posición de memoria). Paso 11. La MPU pone la información, almacenada en el acumulador, en el bus de datos (la forma codificada de A). La A se escribe en la posición 200 de la memoria de datos. La segunda instrucción ha sido ejecutada. El proceso de ALMACENAR no destruye el contenido del acumu­ lador, éste contiene todavía la forma codificada de A. . ~ "., ~ ... ~. '! .~ P""Si'a 11 ~ ~ ~. lIIli ::r::q 'II!'"","':'~~~ ~ -- .... ~t t http://librosysolucionarios.net 1 .......... INTRODUCCION A LAS COMPUTADORAS de introducir­ ::es y datos le el micropro­ l FtgUra 1.4 se Ltrolinforma­ habilita I!'iar ,. ,~rito en un lJOR dato) al una posición 'Pdifica (interRODUCIR I Lo1 habilita la IS de datos. El lensaje codifi­ ro de instruc­ puerto 1). y las líneas de acenada en el 9 Paso 12. La MPU debe buscar la instrucción siguiente. Direcciona la posición 104 y habilita la entrada de lectura de la memoria de programa. Paso 13. El código de la instrucción «SACAR dato» se coloca en el bus de datos. La MPU acepta la instrucción en el registro de instrucción, la decodifica y determina que necesita un ope­ rando. Paso 14. La MPU coloca la dirección 105 en el bus de direcciones y habilita la entrada de lectura de la memoria de programa. Paso IS. La memoria de programa pone el código del operando «al puerto lO» en el bus de datos. La MPU acepta este código en el registro de instrucción. Paso 16. La MPU decodifica la instrucción completa «SACAR el dato al puerto 10» y activa el puerto l O, utilizando el bus de direcciones y las líneas de control en la unidad de salida; coloca, además, el código de A (todavía almacenado en el acumulador) en el bus de datos. La A es transmitida desde el puerto 10 al monitor CRT. La mayoría de los microprocesadores transfieren información de forma similar a la detallada en la Figura 1.4. Las variaciones más grandes están probablemente en las secciones de entrada y salida. A veces se necesitan algunos pasos más, para lograr que las secciones de entrada y salida operen adecuadamente. Es importante observar que la MPU es el centro y control de todas las operaciones y sigue la secuencia de busca-decodifica-ejecuta. Sin embargo, las operaciones reales del microprocesador son dictadas por las instrucciones listadas en la memoria del programa. PROBLEMAS RESUELTOS J difica-ejecuta. 1.15. A la lista de las instrucciones ejecutadas por una microcomputadora se denomina ___ . y tercero, la instrucciones BUra 1.4. I lIés habilita la Solución: A la lista de las instrucciones ejecutadas por una microcomputadora se denomina programa. 1.16. La mayoría de las instrucciones de una microcomputadora constan de dos partes denomi­ nadas: operación y ___ . Solución: La mayoría de las instrucciones constan de dos partes denominadas operación y operando. , de datos y es lUe necesita el la entrada de • de datos por ro de instruc­ : II)¡.) ha sido ~oo al bus de :ica copiar de datos (la La segunda lo del acumu- IS L. .,,,,,; 1.17. Las instrucciones de la microcomputadora en la memoria de programa generalmente están colocadas en orden ___ (consecutivo, aleatorio). .... Solución: Las instrucciones en la memoria de programa generalmente están colocadas en orden consecuti­ vo. Más tarde, se introducirán instrucciones especiales de bifurcación. para hacer que la MPU bifurque a otras instrucciones no consecutivas. Nunca están colocadas en orden aleatorio. 1.18. Acudir a la Figura 1.4. Después de ejecutar la instrucción «SACAR dato al puerto tO>.ta MPU apuntará a la posición de dirección ___ en la memoria de programa para la siguiente instrucción. Solución: Después de ejecutar la instrucción «SACAR dato al puerto 10)) en la Figura 1.4, la MPU apunta­ rá a la posición de dirección 106 en la memoria del programa para la siguiente instrucción. La http://librosysolucionarios.net o· '.'~ 't 'J ¡; I , 10 1 FUNDAMENTOS DE LOS MICROPROCESADORES posición de memoria del programa 106 está en blanco en la Figura 1.4, así que la acción de la M'JII_ será impredecible. Probablemente habrá que colocar aquí una instrucción de ESPERAR (w.!.. ALTO (HALT) para que pueda predecirse la operación de la computadora. .~ "J - '''II1II 1.19. Acudir a la Figura 1.4. Una instrucción de la microcomputadora como, por eje1'f1t'lilo. «ALMACENAR dato en la posición de memoria 20h~ producirá como resultado la t~_ ferencia de un dato de la MPU a la posición 201 de la memoria de ___ . I .!. J-', .5­ Solución: Una instrucción como, por ejemplo, «ALMACENAR dato en la posición de memoria 201_ producirá como resultado la transferencia de un dato de la MPU a la posición 201 de la memoria de datos. fA ." "" 1.20. Acudir a la Figura 1.4. Una instrucción de la microcomputadora como, por ejemplo., «ALMACENAR dato en la posición de memoria 202» dará como resultado la transferen­ cia del dato del ___ (acumulador, registro de instrucción) de la MPU a la posición de memoria ___ de la RAM. Soluci6n: Una instrucción como, por ejemplo, «ALMACENAR dato en la posición de memoria 202» dará como resultado la transferencia del dato del acumulador de la MPU a la posición de memoria 202 de la RAM. Este dato estará entonces en la posición de memoria 202 de la RAM y en el acumulador de la MPU. El contenido del acumulador no se destruye cuando se almacena el dato. :1I1m "l'!Ii! " ::~II 1.21. El proceso de ___ (lectura, escritura) tiene lugar cuando se copia un dato de una posi­ "Iilli!e ción de memoria. ."­ Solución: El proceso de lectura tiene lugar cuando se copia un dato de una posición de memoria. 'IIAI:; illPlr .. • 1.22. Colocar datos en una posición de memoria es un proceso denominado ___ (lectura, . . escritura) en memoria. .­ Solución: Colocar datos en una posición de memoria es un proceso denominado escritura en memoria. : .. . 'a. 1.23. Para cada instrucción en la memoria de programa, la MPU va a través de una secuen­ cia ___ - ___ - ___ . Solución: Para cada instrucción en la memoria de programa, la MPU va a través de una secuencia de busca-decodifica-ejecuta. Algunos libros llaman a esta secuencia el ciclo de localiza-lee-interpreta­ ejecuta, 1.24. Acudir a la Figura 1.4. Después del paso 16, cuando se completa la instrucción «SACAR dato al puerto !O», ¿qué dato contiene el acumulador de la MPU? Solución: El acumulador contendrá el código de A. La lectura de datos, de un registro o posición de memoria. solamente copia la información que está allí y no destruye el dato. http://librosysolucionarios.net . '. .. 1~ ')'11<'" -• ..... ..;J, INTRODUCCION A LAS COMPUTADORAS de la MPU R (WAIT) o II 1.25. Acudir a la 'Figura 1.4. Después del paso 1'6, ¿existirán todaVÍa las itistrucciones en las posiciones de memoria 100 a lOS? Solución: Sí. Las instrucciones de lectura no destruyen los contenidos de esas posiciones de memoria. , ""'"'! ejemplo, la trans­ ___ JO PROBLEMAS SUPLEMENTARIOS memoria 20 1» :la memoria de lA En electrónica, las siglas el significan _ _ _ _ . Res. circuito integrado. tpor ejemplo, 1.27. En electrónica, las siglas LSI significan _ _ _ _ _ _ . Res. gran escala de integración . la transferen­ • posición de 1.lI. En informática, las siglas epu significan _ _ _ _ _ _ • ~ Res. lOria 202» dará ~ memoria 202 el acumulador unidad central de tratamiento. l.lt. Un CI LSI que tiene la mayoría de las capácidades de la CPU de una computadora se deno­ mina _ _ . Res. l. , microprocesador. 1.lI. En microcomputadoras, las letras MPU significan _ _ _ . de una posi­ Res. unidad microprocesadora. moria. 1.31. Las microcomputadoras que realizan solamente una o dos tareas se dicen que son _ _ (de propó­ sito general, dedicadas). Res. dedicadas. L 1.32. Una organización clásica de computadora ¿qué cinco unidades importantes tiene? Res. entrada, control, aritmética, memoria, salida. (lectura, ~ I.D. Una lista de instrucciones de computadora se considera _ _ (hardware, software). • memoria. Res. software. 1.34. Las informaciones que se manipulan en una computadora se denominan _ _ (datos, informacio­ una secuen­ nes numéricas). Res. datos. J~clade , . 1.35. Una persona que escribe listas de instrucciones para una computadora se denomina un _ _._. fI:e-mlerprela­ Res. programador. m «SACAR l ~ ., posición de t 1..36. El almacenamiento permanente de un programa en una microcomputadora, probablemente, puede hacerse en una _ _ (RAM, ROM). Res. ROM. 1 1.37. La _ _ (RAM, ROM) es un lectura/escritura. Res. RAM. el muy utilizado en las microcomputadoras como memoria de http://librosysolucionarios.net .I ..• 12 FUNDAMENTOS DE LOS MICROPROCESADORES 1.38. Acudir a la Figura 1.2. Las instrucciones almacenadas en la memoria de programa serán _ _ (per­ manentes, temporales). Res. permanentes (almacenadas en ROM). 1.39. Acudir a la Figura 1.4. Después de que se completa el paso 16, la MPU intentará el procedimiento de _ _ (decodificación, búsqueda, ejecución). Res. búsqueda. 1.40. Acudir a la Figura 1.4. La MPU accede a una posición específica de memoria al utilizar el bus de _ _ . Res. direcciones. 1.41. Acudir a la Figura 1.4. La información codificada es transferida desde el acumulador de la MPU a una posición de memoria, en la memoria de datos, utilizando el bus de _ _ . Res. datos. .....1" 1.42. Si la MPU busca y decodifica una instrucción como «ALMACENAR datos en la posición de memo­ ria 205», el dato provendrá del _ _ . Res. acumulador (en la MPU). 1.43. Una microcomputadora contiene como mínimo una unidad de entrada, una unidad de salida, una MPU y una _ _ de programas y datos. Res. memoria. 1.44. Una memoria temporal de lectura/escritura se designa por las tres siguientes letras RWN 0 __ . Res. RAM. ,,,"",'11 .. ." 'Ir - iIJI¡;. = http://librosysolucionarios.net 2 Capítulo 2 Iin _ _ (per­ 'Ix"ocedirniento NUMEROS, CODIGOS DE COMPUTADORA Y ARITMETICA 'utilizar el bus tefe la MPU a 2.1. NUMEROS BINARIOS Las computadoras digitales utilizan números binarios. El sistema de numeración binario, o de base 2, utiliza solamente los dígitos O y 1; los dígitos binarios se llaman bits. En los circuitos LdememoJ .de salida, una i letras RWN electrónicos de las computadoras el bit O habitualmente se repre~enta por una tensión BAJA, mientras que el bit 1 corresponde a una tensión ALTA. Las personas están acostumbradas a comprender el sistema de numeración decimal, o de base JO, que tiene 10 dígitos (0-9). Este sistema también tiene la característica de valor por posición; por ejemplo, la Figura 2.1 a muestra que el número decimal 1327 es igual a 1000 más tres 100 más dos 10 más siete 1 (1000 + 300 + 20 + 7 == 1327). El sistema de numeración binario también tiene la característica de valor por posición. El valor decimal de las cuatro primeras posiciones binarias se muestra en la Figura 2.1 b. El número binario 1001 (se pronuncia uno, cero, cero, uno) se convierte a su equivalente decimal de 9. El bit del 1 del número binario de la Figura 2.1 b se denomina bit menos significativo (LSB), mientras que el bit del 8 se denomina bit más significativo (MSB). Los equivalentes binarios de los números decimales entre O y 15 se muestran en la Figura 2.1c. Las personas que trabajan con computadoras memorizan como mínimo estos números bina­ rios. Convertir el número binario 10110110 (se pronuncia uno, cero, uno, uno, cero, uno, uno, cero) a su equivalente decimal. El procedimiento se muestra en la Figura 2.2a. Por cada bit I del número binario se escribe debajo el valor de la posición decimal y después se suman los decimales (128 + 32 + 16 + 4 + 2 = 182), dando 182. Los pequenos subíndices de la Figura 2.2b se utilizan para anotar la base (a veces denominada raíz) del número. El número 101101102 es por tanto un número binario, o en base 2 yel número 182 10 es un número decimal o en base 10. Convertir el número decimal 155 a binario. La Figura 2.3 muestra un procedimiento para hacer esta conversión. El número decimal 155 se divide primero por 2, dando un cociente de 77 y un resto de 1; el resto se convierte en el bit menos significativo (LSB) del número binario y se transfiere a esta posición en la Figura 2.3. El cociente (77) se transfiere como muestra la flecha y se convierte en el siguiente dividendo. Los cocientes se dividen repetidamente por 2 hasta que el cociente se hace O con un resto de l. La Figura 2.3 muestra este procedimiento. La línea inferior muestra el resultado de la conversión: 155 10 = 1001 101 lz. 13 ' .. 71 http://librosysolucionarios.net .~ .~ l t 14 FUNDAMENTOS DE LOS MICROPROCESADORES 103 102 10 1 lOO 1000 lOO 10 1 3 2 20 Potencias de 10 Valor de posición í Decimal Decimal 1 1000 300 + + 7 7 + 1327 Valores de la posición en un numero decimal (a) Potencias de 2 23 22 21 2° Valor de posición 8 4 2 l 1 8 o o 1 1 MSB-....." Binario Decimal 10 I Binario 8 1 1 O O 1 1 " 4 1 5 1 1 1 6 7 + 9 Binario Decimal 2 4 O 1 2 3 O + Valores de la posición en un número binario (b) Decimal O + ~lSB 10 I O 1 O 1 1 1 1 1 I 1 O I O 1 1 8 4 2 1 8 9 O 1 2 3 1 1 1 1 O O O O O O 1 I 1 I 1 O O O 1 O 1 O 1 1 1 1 1 1 4 5 I I O 1 Equivalentes decimales y binarios (e) Figura 2.1. Potencias de 2 Valor de posición Binario Decimal 27 26 24 25 128 64 32 16 1 O + 1 32 1 128 (a) (b) + 16 23 22 21 2° 8 4 2 1 O + 1 4 1 2 O + u 182 .... 4..... :.a :. Conversión de binario a decimal 101101102 - 182 10 Los índices designan la base del número Figura 2.2. http://librosysolucionarios.net ti' h ..... . ~ • NUMEROS, CODIGOS DE COMPUTADORA Y ARITMETlCA , , 155 10 +2=77 resto de 1 15 LSB I 77 + 2 - 38 resto de 1 I r--' , 38 ... 2 - 19 resto de O ! 19 + 2 ~ 9 resto de 1 ~ 9+2= 4 resto de 1 ~ 4+2- 2restodeO r--' , 2 ... 2- I resto deO I [ ... 2= O resto de I O O O Figura 2.3. 9 PROBLEMAS RESUELTOS 2.1. La mayoría de las personas comprenden el sistema de numeración decimal, mientras que las computadoras digitales utilizan el sistema de numeración de base 2, o ___ . Solución: Las computadoras digitales utilizan el sistema de numeración de base 2, o binario, y contiene solamente los dígitos O y l. 2.2. El ténnino bit significa _ _ _ _ cuando se trata de números binarios. Solución: Bit significa dígito binario. 13. El número 10010 es un número en base ___ . Solucióo: El número 100 10 es un número en base 10, como indica el subíndice 10 al final del número. 2.4. Escribir en base 2 el número uno, uno, cero, cero utilizando un subíndice. Solución: 11002, o I 2.5. 182 Las letras MSB significan _ _ _ _ _ cuando se trata con números binarios. Solución: Las letras MSB significan bit más significativo. Si el número es 10002, elles el MSB. 2.6. De memoria, convertir los siguientes números binarios en sus equivalentes decimales: (a) 0001 (b) 0101 (e) 1000 (d) 1011 (e) 1111 http://librosysolucionarios.net (f) 0111 16 FUNDAMENTOS DE LOS MICROPROCESADORES Solución: Acudir a ia Figura 2.1e. Estos números binarios han de ser memorizados. Los equivalentes decimales para los números binarios son los siguientes: (a) 0001 2"" 110 (e) 10002= 8 10 (e) 1111 2= 15 10 (b) 0101 2 =5 10 (d) 1011 2 = 1110 (/) 0111 2 =7 10 2.7. Convertir los siguientes números binarios en sus equivalentes decimales: (e) 00110011 (e) OOOI1111 (d) 01100100 (f) 11111111 (a) 10000000 (b) 00010000 Solución: Siguiendo el procedimiento mostrado en la Figura 2.1 b, los equivalentes decimales de los núme­ ros binarios son los que se indican: (a) 100000002 = 128 10 (e) 00110011 2= 5110 (e) 0001111l2-311O (b) 000100002 = 16 10 (d) 01l001002= 100 10 (/) 1I111111 2 = 255 10 2.8. Convertir los siguientes números decimales en sus equivalentes binarios: 39 (b) 48 (a) Solución: Seguir el procedimiento mostrado en la Figura 2.3. Los equivalentes binarios de los números decimales son los siguientes: (a) 39 10 ..... 2 .. 19 resto de 1 (LSB) 19 -+- 2 - 9 resto de l 9 -+- 2 - 4 resto de 1 4 .... 2 - 2 resto de O 2 . . . 2 - 1 resto de O l . . . 2 - O resto de 1 (MSB) 39 10 '" 100 111 2 (b) 48 10 "", 2 '" 24 resto de O (LSB) 24 ..... 2 '" 12 resto de O 12 -+- 2 - 6 resto de O 6 ... 2 '" 3 resto de O 3-+-2= l resto de 1 l .... 2 = O resto de l (MSB) 48 10 = 1100002 Ik~ .m::.! v.:~~ e­ 2.2. NUMEROS HEXADECIMALES ; Una posición de la memoria de una microcomputadora puede contener el número binario 10011110. Esta larga cadena de ceros y unos es dificil de recordar y teclear. El número 100111102 puede convertirse en un número decimal. Una vez convertido éste es el número 15810' Este proceso de conversión es demasiado largo. La mayoría de los sistemas de microcomputadoras utilizan la notación hexadecimal para simplificar la tarea de recordar y teclear números binarios como por ejemplo 100 III 10. El sistema de numeración hexadecimal, o de base 16, utiliza los 16 símbolos del O al 9, A, B, C, D, E Y F. Los equivalentes binarios, hexadecimales y decimales se muestran en la Figu­ ra2A. http://librosysolucionarios.net 2­ , NUMEROS, CODIGOS DE COMPUTADORA y ARITMETICA 17 Binario • equivalentes , Hexadecimal 8 4 2 I O O I 2 3 4 5 1 1 O 3 4 5 O O O O O O 2 O 6 1 1 I O O 6 O O O O O O O O O 1 1 1 O 1 1 1 1 1 I I 1 1 I I O O 1 1 O O O 1 O O O O Decimal s de los núme- I e los números 7 7 8 9 8 9 10 11 A B 12 e 13 14 15 D E F 1 1 1 " 1 1 I 1 1 O l O 1 O 1 Figura 2.4. Contar en decimal, hexadecimal y binario. • nero binario 10 100111102 t 158 10 , Este !.mputadoras eros binarios o al 9, A, B, I en la Figu- Observar en la Figura 2.4 que cada símbolo hexadecimal representa una única combinación de 4 bits. El número binario 10011110 puede entonces ser representado como 9E en hexadeci­ mal. Esto es, la parte 1001 del número binario es igual a 9, de acuerdo con la Figura 2.4, y la parte 1110 del número binario es igual a E en hexadecimal. Por tanto 100111102 es igual a 9Ew Recordar que el subíndice indica la base del número. Convertir el número binario 111010 en hexadecimal (hex). Comenzar por el LSB y dividir el número binario en grupos de 4 bits cada uno, como indica la Figura 2.5a. Entonces sustituir cada grupo de 4 bits por su dígito hex equivalente. El 10102 es igual a A en hex (ver Fig. 2.4). Eloo11 2 es igual a 3 en hex. Por tanto 1110102 es igual a 3A16' Convertir el número hexadecimal 7F a su equivalente binario. La Figura 2.5b muestra que cada dígito hex es sustituido por su equivalente binario de 4 bits. En este ejemplo, el binario 0111 es sustituido por el hex 7 y 1111 2 sustituye a F16' Por tanto 7F I6 es igual a 11111112' Grupo de 4 bits Grupo de 4 bits Binario Hexadecimal (a) ---. ---. 0011 1010 + 3 Hexadecimal F ~ ~ 0111 1111 ---. + A 7 Binario Conversión de binario a hexadecimal (b) Conversión de hexadecimal a binario Figura 2.5. http://librosysolucionarios.net " . r 18 FUNDAMENTOS DE LOS MICROPROCESADORES La notación hexadecimal es muy utilizada para representar números binarios. Las personas que utilizan la notación hexadecimal deben memorizar la tabla mostrada en la Figura 2.4. Convertir el número hexadecimal 2C6E a su equivalente decimal. El procedimiento se mues­ tra en la Figura 2.6a. Los valores de posición para los cuatro primeros dígitos decimales son 4096, 256, 16 y 1. El número hexadecimal contiene catorce (E I6 ) 1, seis 16, doce (C I6 ) 256 y dos 4096. Cada valor de posición se multiplica y los productos se suman para obtener 11.374,0' Convertir el número decimal 15.797 a su equivalente hexadecimal. El procedimiento se mues­ tra en la Figura 2.6b. La primera línea indica 15.797 10 dividido por 16, dando un cociente de 987 10 con un resto de 5 10, El resto se convierte entonces a su equivalente hexadecimal. Por tanto 5 10 es igual a 5 16, El resto hexadecimal (5 16) se convierte en el dígito menos significativo (LSD) del número hexadecimal. El primer cociente (987) es el dividendo en la segunda línea y se divide por 16. El segundo cociente es 61 con un resto de 11,0' o B hexadecimal. La línea 3 muestra 61 dividido por 16, dando un cociente de 3 con un resto de 13 10, o D'6' La cuarta línea de la Figura 2.6b muestra el dividendo (3) dividido por 16, dando un cociente de O con un resto de 310' Ó 3 16 , Cuando el cociente se hace O, corno en la línea 4, se termina el cálculo. El 3 16 es el dígito más significativo (MSD). El procedimiento mostrado en la Figura 2.6b convierte el número deci­ mal 15.797 en su equivalente hex de 3DB5 16. 163 162 16' 160 4096 256 16 1 2 e 6 E l l l 256 xl2 16 x6 96 Potencias de 16 Valor de posición Hexadecimal l 4096 x2 8192 Decimal + 3072 + x14 14 + fa) Conversión de hexadecimal a decimal , 15.797 10 + 16 - 987 resto de 5 10 = 5'6 • LSD 987+ 16-61 resto de 11 10 =8 16 .. ! 61 ..3 + 16 - 3 resto de 13 10 - DI6 + 16 = O resto de 310 - 316 15.797 10 = (b) 3 D Conversión de decimal a hexadecimal Figura 2.6. http://librosysolucionarios.net 8 11.374 10 ! ..& NUMEROS, COOJGOS DE COMPUTADORA Y ARITMETICA las personas ora 2.4. ., se mues­ , son 4096, (, Ydos 4096. 110 , mto se mues­ 1 cociente de LaI. Por tanto ívo (LSD) del se divide por J muestra 61 a línea de la Il resto de 3 10, It- es el dígito número deci- 19 PROBLEMAS RESUELTOS 2.9. La notación hexadecimal es muy utilizada, para trabajar con las microcomputadoras, como método «abreviado» de representar números ___ (binarios, decimales). Solución: La notación hexadecimal es muy utilizada para representar números binarios. 2.10. El sistema de numeración hexadecimal a veces se denomina sistema de base ___ . Solución: El sistema de numeración hexadecimal a veces se denomina sistema de base 16 debido al uso de 16 símbolos únicos. 2.11. Convertir los siguientes números hexadecimales a sus equivalentes binarios: (a) C (e) F (e) lA (b) 6 (d) E2 if) 3D Solución: Utilizando la tabla de la Figura 2.4, seguir el procedimiento de la Figura 2.5b. Los equivalentes binarios para los números hexadecimales son los siguientes: (a) C I6 = 11002 (e) Fió 1111 2 (e) IA I6 ­ 000110102 (b) 6 1ó =01102 (d) E2 1ó = 111000102 (f) 30 16 -00111101 2 2.12. Convertir los siguientes números binarios en sus equivalentes hexadecimales: (a) 1001 (e) 1101 (e) 10000000 (b) 1100 (d) 1IIl if) 01111l1O Solución: Utilizando la tabla de la Figura 2.4, seguir el procedimiento de la Figura 2.5a. Los equivalentes hexadecimales para los números binarios son los siguientes: (a) 1001 2 =9 16 (e) 1101 2 =0 16 (e) 100000002 -80 16 (b) 1l00 2 -C I6 (d) 11112=F16 (f) OJl11110 2 -7E 16 2.13. Convertir los siguientes números hexadecimales en sus equivalentes decimales: (a) 7E (b) DB (e) 12A3 (d) 34CF Solución: Utilizando la tabla de la Figura 2.4, seguir el procedimiento de la Figura 2.6a. Los equivalentes decimales a los números hexadecimales son los siguientes: (a) 7E I6 - (16 x 7) + (1 x 14) = 126 10 (b) OB I6 ={l6x 13)+(1 x 11)-219 10 (e) 12A3 16 =(4096 x 1)+(256x2)+(l6x 10)+(1 X 3)=4771 10 (d) 34CF'6=(4096 x 3)+(256x4)+(16 x 12)+(1 x 15) 13.519'0 2.14. 48.373 10 = - - 1 6 ' Solución: Utilizando la tabla de la Figura 2.4, seguir el procedimiento de la Figura 2.6b. 48.373 10 + 16 - 3023 resto de 5 10 = 5 16 (LSO) 3023 +- 16 = 188 resto de 15 10 FIÓ 188+16 llrestodeI2¡o=C'6 11+16Orestodell lO =B'6(MSO) 48.373 10 - BCF5 16 http://librosysolucionarios.net 20 l FUNDAMENTOS DE LOS MICROPROCESADORES 2.3. NUMEROS BCD ... Los números binarios puros se representan en notación hexadecimal para hacer más fácil la conversión. Sin embargo, la conversión binario a decimal es bastante dificil. En calculadoras, juegos e instrumentos digitales, donde son frecuentes las entradas y salidas del usuario en deci­ mal, se utiliza un código especial para representar los números decimales. Este código se denomi­ na BCD (decimal-codificada-binario). Las equivalencias entre decimal y BCD se muestran en la tabla de la Figura 2.7a. Técnicamente, esta tabla detalla el código BCD 8421. La parte del nombre 8421 da el valor de la posición a los 4 bits del código BCD. También se utilizan otros códigos BCD, como por ejemplo el código BCD 5421 Y el código de exceso 3. .íI ~ ~ :...r ~ . ..;s.j ""'11, BCD Decimal 8 2 4 1 Decimal O 1 2 3 4 O O O O O O S O O O O O O 1 I 1 1 1 O O O 1 6 O 1 7 8 9 O 1 O O 1 1 (a) O 1 BCD (b) 3 6 9 I ! ! ! ! 0011 0110 1001 0001 Conversión de decimal a BCD O 1 1 O 1 O O O 1000 0000 0111 BCD ! Decimal (e) 8 J, O 0010 ! J, 7 2 Conversión de BCD a decimal I Código BCD 8421 ! ., .~ , Figura 2.7. Convertir el número decimal 3691 a su equivalente BCD 8421. El procedimiento se muestra en la Figura 2.7b. Cada dígito decimal se traduce directamente a su equivalente BCD de 4 bits. Este ejemplo muestra que 3691 10 es igual a 00 11 0110 1001 0001 BCD' Convertir el número BCD 1000 0000 0111 0010 a su equivalente decimal. El procedimiento Sé detalla en la Figura 2.7c. Cada grupo de 4 bits se traduce directamente a su equivalente deci­ mal. Este ejemplo muestra que 1000 0000 0111 OOIOBCD es igual a 8072 10, . Los microprocesadores suman los números binarios puros. Sin embargo, muchos microproce­ sadores tienen instrucciones especiales para cambiar el resultado de las sumas a notación BCD. El número BCD se interpreta fácilmente entonces como número decimal utilizando los sencillos procedimientos mostrados en las Figuras 2.7 by c. http://librosysolucionarios.net l• NUMEROS, CODlGOS DE COMPUTADORA Y ARTTMETlCA ~ l' 21 PROBLEMAS RESUELTOS más fácil la 2.15. Las letras BCD significan _ _ _ _ _ _ . l calculadoras, lIl3.I'io en deci­ H!:(\ se denomi­ . .;;stran en la ne del nombre I otros códigos l, • ~ Solución: Las letras BCD significan decimal codificado binario. 2.16. La notación BCD más común es el código _ _ (5421, 8421). Solución: La notación BCD más común es el código BCD 8421. 2.17. Convertir los siguientes números decimales en sus equivalentes 8421 BCD: (a) 3Q (b) 65 I l DI 0001 . . BCD (e) 40 (d) 17 (e) 82 (f) 99 Solución: Seguir el procedimiento de la Figura 2.7 b. Los equivalentes BCD para los números decimales son los siguientes: (e) 40 1O -0100OOOO OCD (e) 82 10 - 100000lOocD (a) 39 10 =0011 100locD (j) 99 10 = 1001 100l oco (b) 65 10 = 01 1001OI oco (d) 17 10 = 0001 Ollloco 2.18. Convertir los siguientes números BCD 8421 en sus equivalentes decimales: (a) 10000000 (e) 10010010 (e) 01000011 (b) 00000001 (d) 01110110 (f) 01010101 Solución: Seguir el procedimiento mostrado en la Figura 2.7c. Los equivalentes decimales para los núme­ ros BCD son los siguientes: (a) 1000 Oooooco = 80 10 (e) 1001 OOIOocD- 92 10 (b) 00000001 BCD - 110 (d) 01l10IIOBCO=7610 (e) OIOOOOlI oco ­ 43 10 (j) OlOIOlOl ocD 55 10 2.4. ARITMETICA BINARIA I:I1to se muestra BCD de 4 bits. '!:'r~miento ',alente deci­ microproce­ ilación BCD. El do los sencillos lOS Sumar, restar o multiplicar números binarios se realiza de forma similar a la aritmética decimal. La mayoría de los microprocesadores tienen instrucciones para sumar y restar números binarios. Los microprocesadores más avanzados tienen incluso instrucciones para multiplicar y dividir, por ejemplo, los 8086, 8088, 80286, 80386 Y 68000. Las sencillas reglas para la suma binaria se muestran en la Figura 2.8a. Las dos primeras reglas de la parte izquierda son obvias. La tercera regla 1 + 1 == 10 muestra que el bit más significativo es arrastrado a la siguiente posición de orden superior. La cuarta regla muestra que en binario I + I + 1 = 11. Aquí los sumandos y el arrastre son todos unos. El resultado es una suma de 1 con un arrastre de l. Sumar los números binarios 00 111 OlI Y00 1O1OIO. Este problema se ilustra en la Figura 2.8b. Comprobar este procedimiento. Los equivalentes decimales de los números binarios se muestran, por conveniencia, a la derecha. La suma de 00111011 y 00101010 se muestra enJa Figura 2.8b y es 01100101 2, I http://librosysolucionarios.net 22 FUNDAMENTOS DE LOS MICROPROCESADORES Primer sumando Segundo sumando Suma O +0 O +~ 1]+ 1/ ~ 10 Arraslre a Arrastres _ _ ArraSlrede 1 f'\ iI +1 I .TI la s~g~.iente 11 I II 59 + 42 Arrastre (b) la siguiente posición más significativa (a) I Primer sumando 00 1 1 1011 po$lClon Segundo sumando + 00 1 O !O 10 menos significativa Suma Problema de suma binaria Reglas para la suma binaria Figura 2.8. Las reglas para la resta binaria se muestran en la Figura 2.9a. Las tres primeras reglas son iguales que en la resta decimal. La última regla requiere un préstamo de la siguiente posición más significativa (la posición del 2). Con el préstamo, el minuendo se convierte en el binario 10, como el sustraendo es l la diferencia es l. ~ o (10 Minuendo Sustraendo Diferencia (a) O -O 1 -1 -O -1 O O 1 1 1 O 110 o 1fWO ji _10 7 I 1f 0,0,0101 -00111001 000111002 (b) Reglas para la sustracción binaria • " 1f ~5 -57 "28 10 Problema de sustracción binaria Figura 2.9. Restar el número binario 00 lII 00 I de OIO1O101. Este problema ejemplo se detalla en la Figura 2.9b. Las columnas del 4, 2 Y l del problema de resta binaria son bastante sencillas de seguir utilizando las tres primeras reglas de la Figura 2.9a. La columna del 8 muestra un l restándose de un O. Se toma prestado un l de la columna del 16 y se resta l de 101, obteniéndose una diferencia de 1 de acuerdo con la cuarta regla de la Figura 2.9a. Después del préstamo, la columna del 16 muestra un 1 restado del nuevo minuendo O. Según la regla 4, hay que tomar prestado un 1 de la siguiente posición más significativa (la posición del 32). El minuendo de la posición 32 es O, por lo que entonces hay que tomar prestado elide la posición 64. La posición del 32 toma un préstamo de la posición del 64. Finalmente, la posición del 16 puede tomar prestado de la posición del 32. El minuendo de la posición del 16 es entonces 102 , Yel sustraendo es 1 dando una diferencia de l. La posición del 32 ahora muestra 1 - I dando una diferencia de O. La posición del 64 muestra O - O dando una diferencia de O. La posición del 128 muestra O - O dando también una diferencia de O. En resumen, el problema ejemplo de la Figura 2.9b muestra que el binario 00 111 00 1 restado de O1O1O101 2 da una diferencia de 000 11 1002, El problema también se muestra en forma decimal a la derecha. Las reglas para la multiplicación binaria se muestran en la Figura 2. lOa. Las dos primeras reglas no necesitan explicación. El multiplicador es I en las dos últimas reglas. Cuando el multi­ plicador es 1 en la multiplicación binaria, el multiplicando se copia como producto. Cuando el multiplicador es O, el producto siempre es O. http://librosysolucionarios.net I NUMEROS. CODlGOS DE COMPUTADORA Y ARITMETICA ~ I 11 I llo 11 t 10 10 59 O xO xO xl Producto O O O Multiplicando 1101 Multiplicador x 101 1101 Primer producto parcial Segundo producto parcial 0000 Tercer producto parcial 1101 1000001 2 Producto final xl 1 + 42 iOiOt2 lIa o Multiplicando Multiplicador 101 10 binaria (a) Reglas para la multiplicación binaria (b) 23 13 x5 65 10 Problema de multiplicación binaria Figura 2.10. ~ posición más ario 10, como Multiplicar los números binarios 1101 y tOl. Este problema ejemplo se muestra en la Figu­ ra 2.1 Ob. Como en la multiplicación decimal, el multiplicando se multiplica primero por el dígito menos significativo (en este caso el bit del 1). El bit del 1 del multiplicador es 1, por tanto el multiplicando se copia como primer producto parcial. El bit del 2 del multiplicador es un O, por tanto el segundo producto parcial es 0000. Observar que éste se desplaza una posición a la izquierda. El bit del 4 del multiplicador es 1, por tanto el multiplicando se copia como tercer producto parcial. Observar que 110 1 se copia después del segundo desplazamiento a la izquierda. Los productos parciales primero, segundo y tercero se suman, dando el producto final de 10000012' En resumen, la Figura 2.lOb muestra que lI01 2 x 101 2 = 1000001 2 o que 13 lo x 5 10 = 65 10, PROBLEMAS RESUELTOS 2.19. Resolver los siguientes problemas de suma binaria: (a) detalla en la te sencillas de lIluestra un 1 obteniéndose I préstamo, la .~" que tomar muendo de la •. La posición t'luede tomar sustraendo -encia de O. muestra O - O 12.9b muestra El problema 1010 +0101 (b) 1101 +0101 (e) 01011011 +00001111 (d) 00111111 +00011111 Solución: Acudir a la Figura 2.8. Las sumas binarias de los problemas son las siguientes: (a) 1111 (b) 10010 (e) 01101010 (ti) 01011110 2.20. Resolver los siguientes problemas de resta binaria: (a) 1110 -1000 (b) 1010 -O 10 I (e) 01100110 -000110 10 (ti) Solución: Acudir a la Figura 2.9. Las diferencias binarias de los problemas son las siguientes: (a) 0110 (b) 0101 (e) 01001100 (ti) 00111001 2.21. En un problema de multiplicación el número de arriba se denomina ___ mientras que dos primeras ando el multi­ lO. Cuando el el de abajo se denomina multiplicador y el resultado se denomina ___ . Solución: En un problema de multiplicación el número de aniba se llama multiplicando, mientras que el de abajo se llama multiplicador y el resultado se llama producto. http://librosysolucionarios.net 24 FUNDAMENTOS DE LOS MICROPROCESADORES 2.22. Resolver los siguientes problemas de multiplicación binaria: (b) 1101 (c) 1111 (d) 1110 xll x 1001 xlOl xli 10 (a) 1001 Solución: Acudir a la Figura 2.10. Los productos de los problemas son los siguientes: (a) 11011 (b) 1110101 (ti) 11000100 (e) 1001011 2.5. NOTACION EN COMPLEMENTO A 2 Generalmente, en las computadoras se utilizan los números binarios. Sin embargo, a veces se utiliza un código especial denominado notación en complemento a 2 cuando se necesitan núme­ ros con signo. Este sistema simplifica la circuitena de la computadora. Un registro o posición de almacenamiento en un microprocesador puede ser como el de la Figura 2.11 a. Este registro tiene espacio para datos de 8 bits. Las posiciones de los bits se nume­ ran del 7 al O. Los valores de las posiciones binarias se muestran en la parte inferior del registro. El bit 7 será el de la posición del 128, el bit 6 el de la posición del 64, etc. 76543210 I I IIIIIII 128 64 32 16 8 (a) 4 2 1 Valores binarios de .posición Etiquetas de las posiciones de memoria de un registro de 8 bits 76543210 76543210 lo I I I 1I I I I 11 I I 1 I I I I I - (+) 64 32 16 8 4 1 ----......---' 1 Valores binarios de posición (- ) Bit de signo Bit de signo NotaCIón en complemento a2 (b) Los números positivos se identifican por un O en la posición del bit del signo del registro (e) Los números negativos se identifican por un 1 en la posición del bit de signo del registro e­ Figura 2.11 . La organización más frecuente de un registro de 8 bits utilizado para almacenar números con signo se muestra en las Figuras 2.11 b y c. El bit 7 en ambos registros es el bit de signo. Este bit dice si el número es (+) positivo o (-) negativo. UnO en la posición del bit de signo significa que el número es positivo, mientras que un 1 indica que el número es negativo. Si el número con signo es positivo como en la Figura 2.11 b, las restantes posiciones de memo­ ria (6-0) contienen un número binario de 7 bits. Por ejemplo, si el contenido del registro de la Figura 2.11 b fuese 01000001, significaría el decimal +65 (bit de signo positivo + 64 + 1). Si el contenido del registro de la Figura 2.11 b fuese 01111111, sería + 127 10 (bit de signo positi­ http://librosysolucionarios.net "- I NUMEROS. CODlGOS DE COMPUTADORA Y ARITMETICA L Decimal Representación de números con signo +127 0111 1111 +8 +7 +6 +5 +4 +3 +2 +1 +0 -1 I a veces se 'ltan núme­ 1!('I. como el de la se nume­ DT del registro. ¡ bits -2 -3 -4 -5 -6 -7 -8 0000 0000 0000 0000 0000 0000 0000 0000 0000 1111 1111 1111 1111 1111 llll 1111 1111 1000 0111 0110 0101 0100 0011 0010 0001 0000 1111 1110 1101 1100 1011 1010 1001 1000 25 Números positivos representados igual que en binario puro Números negativos representados en forma de complemento a 2 o O -128 1000 0000 Figura 2.12. Números decimales con signo y sus equivalentes en la notación de complemento a 2. • por un 1 en qpstro r números con signo. Este bit D significa que de memo­ registro de la . 64 + 1). Si el : signo positilOeS 1 vo + 64 + 32 + 16 + 8 + 4 + 2 + 1). Este es el mayor número positivo que puede ser representado en este registro de 8 bits. Si el número con signo es negativo como en la Figura 2.11 e, el registro contendrá la forma en complemento a 2 de ese número. La tabla de la Figura 2.12 muestra la notación en complemento a 2 para números positivos y negativos. Observar que los números positivos tienen un O en el MSB, mientras que el resto de los números corresponden a un número binario. Los números negativos tienen un I en el MSB. Observar la línea +0 de la tabla de la Figura 2.12. La notación en complemento a 2 para +0 es 00000000. En la línea siguiente, observar que 11111111 es la notación en complemento a 2 de -l. Imaginar que el sistema es un odómetro que cuenta hacia atrás a medida que se avanza de 00000000 a 1I1 I 1111. ¿Cuál sería la notación en complemento a 2'de -91 Los pasos para hacer esta conversión se esbozan en la Figura 2. 13a y son los siguientes: Paso 1. Listar el número decimal sin signo. Escribir 9 en este ejemplo. http://librosysolucionarios.net 26 FUNDAMENTOS DE LOS MICROPROCESADORES Paso 2. Convertir el número decimal a binario. Escribir el número binario 00001001 en este ejemplo. Paso 3. Complementar cada bit formando el complemento a l. En este ejemplo escribir 11110110 como complemento a l. Paso 4. Sumar I al número en complemento a I. En este ejemplo sumar 1 a I I I 10 110. 9 Decimal l 00001001 Binario l 111101\0 Complemento a I + Complemento a 2 (a) 11110111 =-9 11110000 l Complemento a I (b) C5:> éV 6? Escribir decimal Convertir a binario Complementar cada bit Sumar + \ Formación del complemento a 2 de un número negativo Cómplemento a 2 Binario ~ ~ Paso 2 0000111\ + 000 \ 0000 - 16 éV Escribir complemento a 2 Complementar cada bit Sumar + 1 Cálculo del decimal equivalente para un número en complemento a 2 Figura 2.13. . : ',; El resultado es la notación en complemento a 2 para el número decimal negativo. En este ejemplo, en la Figura 2.13a, -9 es igual a I 1 I 101 1 I en forma de complemento a 2. Observar que el bit de signo <l I 1101 I 1) es 1, lo que significa que se trata de un número negativo. ¿Cuál es el equivalente decimal del número en complemento a 2 II 110000? El procedimiento para hacer esta conversión se detalla en la Figura 2.13b. El procedimiento de complementar y sumar 1 es el mismo que se utiliza para convertir de binario a complemento a 2. El procedimien­ to de la Figura 2.13b muestra como se cambia cada bit del número en complemento a 2, forman­ do el complemento a I. Entonces se suma un 1 al número en complemento a 1, formando el número binario 00010000, que es igual a 16. Esto significa que la notación en complemento a 2 de 1 1110000 es igual a -16 10, El 16 debe ser negativo porque el bit de signo (MSB) del número en complemento a 2 es un l. http://librosysolucionarios.net 4 ...1 - . NUMEROS. CODIGOS DE COMPUTAOORA y ARITMETICA 101001 en este ~rnplo ~ escribir 11110 110. 27 PROBLEMAS RESUELTOS 2.23. Cuando los números con signo se almacenan en un registro de 8 bits de un microprocesa­ dor, el MSB (bit 7) se denomina bit de _ _ . Solución: Cuando los números con signo se almacenan en un registro de 8 bits. el MSB (bit 7) se denomina bit de signo. 2.24. Determinar si los siguientes números en notación de complemento a 2 son positivos o ne­ gativos. (a) 01110000 (b) 11001111 (e) 10001111 (ti) 01010101 Solución: El complemento a 2 de 01110000 es un número positivo porque el bit de signo vale O. (b) El complemento a 2 de 11001111 es un número negativo porque el bit de signo vale L (e) El complemento a 2 de 10001111 es un número negativo porque el bit de signo vale 1. (ti) El complemento a 2 de 01010101 es un número positivo porque el bit de signo es igual aO. (a) I 2.25. Utilizando la tabla de la Figura 2.12, dar la notación en complemento a 2 de los siguientes números decimales con signo: (a) + 1 (b) + 5 (e) + 127 (d) - 1 (e) - 2 (f) - 128 Solución: Acudir a la Figura 2.12. (a) + 1 = 00000001 (notación en complemento a 2) (b) + 5 = 00000101 (notación en complemento a 2) (e) + 127 = O1111111 (notación en complemento a 2) (d) 1 = 11111111 (notación en complemento a 2) (e) - 2 = 11111110 (notación en con.plemento a 2) (j) - 128 = 10000000 (notación en complemento a 2) 2.26. Utilizando el procedimiento de la Figura 2. 13a, convertir los siguientes números decima­ les con signo en su forma de complemento al: (a)-1O En este _Jservar que ~·;vo. 10. procedimiento mplementar y I -:->rocedimien­ .: 2. forman• formando el !lplemento a 2 del número en (b)-21 (e)-34 (tI)-96 Solución: Acudir a la Figura 2. 13a. Las notaciones en complemento a 2 de los números decimales con signo son como sigue: (a) Primer paso (convertir el decimal a binario): 10'0· 000010102 Segundo paso (complementar): 0000 10 102 _ III 1010 I Tercer paso (sumar 1): 11110101 + 1 = 11110110 (complemento a 2) - -10 10 (b) Primer paso (convertir el decimal a binario): 2110 = 0001010 12 Segundo paso (complementar): 00010101 2 - 1 [101010 Tercer paso (sumar 1): 11101010 + 1 - 11101011 (complemento a 2) - -21 10 (e) Primer paso (convertir el decimal a binario): 34 10 - 001000102 Segundo paso (complementar): 0010001°2 - 11011101 Tercer paso (sumar 1): 11011101 + 1 = 11011110 (complemento a 2) = -34 10 (ti) Primer paso (convertir el decimal a binario): 96 10 = 011000002 Segundo paso (complementar): 0110000°2 _ 10011111 Tercer paso (sumar 1): 10011111 + I = 10100000 (complemento a 2) = -96 10 http://librosysolucionarios.net 28 j FUNDAMENTOS DE LOS MICROPROCESADORES 2.27. El complemento a 2 y los patrones de bits _ _ (BCD, binario) son los mismos para los números decimales positivos. Solución: El complemento a 2 y los patrones de bits binarios son los mismos para los números decimales positivos. 2.28. Utilizando el procedimiento de la Figura 2.13b, traducir las siguientes notaciones en com­ plemento a 2 a sus decimales equivalentes con signo: (a) IIIllOll (b) 00001111 (c) 10001111 (d) 01110111 Solución: Los decimales equivalentes con signo de las notaciones en complemento a 2 son los siguientes: (a) l111 iOll (complemento a 2) = - 5 10 (e) 10001111 (complemento a 2) = - 113 11111011 00000100 <ompl<mc'nlo. + 1000111 00000101 = 5 . (b) 00001111 (complemento a 2) = + 15 ra~Lm DÚ . • «" OC, :~ fuc5.e% 11 01110000 + I deam.II I 01110001 = 113 (d) 01110111 (complemento a 2) + 119 1. 12:~ 2.6. ARITMETICA EN COMPLEMENTO A 2 Un microprocesador puede utilizar números en complemento a 2 porque puede complementar, incrementar (sumar + 1 a un número) y sumar números binarios. Los microprocesadores no tienen circuitería para restar, en su lugar utilizan un sumador y números en complemento a 2 para realizar la sustracción. Sumar los números decimales con signo +5 y +3. El proceso se muestra en la Figura 2.14a en decimal y en la forma en complemento a 2. A partir de la tabla de la Figura 2.12 se encuentra que + 5 es igual a 0000010 I en su notación en complemento a 2, mientras que + 3 es igual a 000000 11. Los números en complemento a 2 00000 I OI Y000000 11 se suman entonces igual que los núme­ ros binarios regulares, obteniéndose la suma en complemento a 2 de 0000 1000. La suma 0000 1000 es igual a +8 10, Primer sumando Segundo sumando Suma (a) 00000101 +00000011 (+8) 00001000 Problema de suma en complemento a 2 Primer sumando Segundo sumando Suma Primer sumando Segundo sumando (+5) + (+3) (+ 7) + (-3) + 1 J 111101 (+4) (1)00000100 00000111 I '--' Suma re) +(-8) 00000011 +11111000 (-5) 11111011 (+3) Problema de suma en complemento a 2 Primer sumando Segundo sumando Suma (-2) 11111110 +(-5) + 11111011 (-7) 11111001 / Descarta overnow Descarta overnow (b) Problema de suma en complemento a 2 (d) '1 Problema de suma en complemento a 2 Figura 2.14. http://librosysolucionarios.net .­ ó:-- .... .., :;;.¡;. ,j r NUMEROS. CODlGOS DE COMPUTADORA Y ARITMETlCA !Smos para los lIerOS decimales , iones en com­ • los siguientes: - 1i3 • 1 i= 113 119 t ~ I ~plementar, ocesadores no lplemento a 2 ígura 2.14a en encuentra que al a 000000 1 l. Que los núme­ K)(). La suma bll 000 I Sumar los números decimales con signo +7 y -3. El procedimiento utilizando la suma en decimal yen complemento a 2 se muestra en la Figura 2.14b. A partir de la tabla de la Figu­ ra 2.12 se encuentra que +7 00000111 Y -3 = 1111110 l en la notación en complemento a 2. Los números en complemento a 2 se suman entonces (00000111 y 11111101) como si fuesen números binarios regulares, obteniéndose la suma de 100000 l OO. El MSB es un arrastre de «overflow» del registro de 8 bits y se descarta. Por tanto, la suma en complemento a 2 es igual a 00000 I00, ó +4 10, Sumar los números decimales con signo +3 y -8. El procedimiento se detalla en la Figu­ ra 2.14c. A partir de la tabla de la Figura 2.12 se encuentra que +3 = 00000011 Y -8 = 11111000 en notación en complemento a 2. Entonces se suman estos números en complemento a 2 como si fuesen números binarios regulares, obteniéndose una suma de 111110 11. De nuevo de la Figu­ ra 2.12 se determina que la suma en complemento a 2 de I 11110 II es igual - 5 10, Sumar los decimales -2 y -5. El procedimiento se detalla en la Figura 2.14d. A partir de la tabla de la Figura 2.12 se encuentra que la notación en complemento a 2 de -2 = 11111110 y la de - 5 = 111110 11. Estos números se suman entonces como si fuesen números binarios regulares. La suma es 11111100 l. El MSB es un arrastre de «overflow» del registro de 8 bits y se descarta. La suma de los números en complemento a 2 (11111110 Y 11111011) es entonces 11111001 (en complemento a 2). Utilizando la Figura 2.12 se determina que la suma en complemento a 2 de 11111001 es igual a - 7 10, Restar los números decimales con signo +5 de +8. El procedimiento se esboza en la Figu­ ra 2.15a. El minuendo (+8) es igual a 00001000. El sustraendo es +5, ó 00000101. El 00000101 debe convertirse a su forma en complemento a 2 (complementar y sumar 1), dando 111110 11. El «minuendo» de 00001000 se suma al complemento a 2 del sustraendo 11111011 como si fuesen números binarios. La suma es igual a 1000000 11. El MSB es un arrastre de «overflow» del registro y se descarta, obteniéndose la suma de 000000 11. A partir de la tabla de la Figura 2.12 se determina que la suma en complemento a 2 de 00000011 es igual a +3 10, Observar que al restar, el sustraendo se convierte a su forma en complemento a 2 y después se suma al minuendo. Utilizando la representación en complemento a 2 y un sumador, el microprocesador puede reali­ zar la sus/ración. Minuendo Sustraendo Diferencia C~v~rtc (+8) - (+5) = ! 1 111110 ; 1011 ¡:: 11001 l• IDe11to a 2 00001000 OOOOOIOI-;;;;;;¡;¡;;;;;;;;;¡;;-;T-+ + 11111011 (000000011 (+3) / Descana :011 ~toa2 29 overflow (a) Problema de resta en complemento a 2 utilizando suma Minuendo Sustraendo Diferencia rh) (+2) - (+6) 000001 (-4) 00000010 + 11111010 11111100 Problema de resta en complemento a 2 utilizando suma Figura 2.15. Restar el número decimal +6 de +2. El procedimiento se muestra en la Figura 2.15b. El minuendo +2 es igual 00000010. El sustraendo +6 es igual 00000110. Este sustraendo se com;er­ te a su forma en complemento a 2 (complementar y sumar 1) dando 11111010. Los números " 1 http://librosysolucionarios.net I , 30 FUNDAMENTOS DE LOS MICROPROCESADORES (000000 IO Y IIIllO 1O) se suman como si fuesen números binarios dando una suma de 11111100. De la tabla de la Figura 2.12 se determina que la suma en complemento a 2 de 11111100 es igual a -4 10, PROBLEMAS RESUELTOS 2.29. Sumar los siguientes números decimales con signo utilizando números en complemento a 2: (+7) (a) (b) .:!J~ (+31) + ( + 26) Solución: Seguir el procedimiento de la Figura 2.14a. Las sumas son las siguientes: (a) (+7) 00000111 .!l..±..!2 + 00000oo 1 (+ 8) = 00001000 (complemento a 2) (b) (+31) 00011111 + ( + 26) + 000 11 O10 (+ 57) = 00111001 (complemento a 2) 2.30. Sumar los siguientes números decimales con signo utilizando números en complemento a 2: (a) ( + 8) (b) ( + 89) + ( - 5) + ( - 46) 1 Solución: Seguir el procedimiento de la Figura 2.14b. Las sumas son las siguientes: (a) (+ 8) 00001000 (b) (+89) 01011001 + ( - 5) + 1 11110 11 + (- 46) + 11010010 (+ 43) = (i)ooIOIOII (complemento a 2) T+3) = q)OOOOOOll (complemento a 2) / ¡ ! dnt8rt3. overflow d9cana O\<e'rtlO'l' 2.31. Sumar los siguientes números decimales con signo utilizando números en complemento a 2: (a) (+1) (b) + ( - 6) (+20) + ( - 60) Solución: Seguir el procedimiento de la Figura 2.14c. Las sumas son las siguientes: (a) (+ 1) 00000001 (b) (+ 20) 00010100 +(-6) +11111010 +(-60) +11000100 (- 5) = 11111011 (complemento a 2) ( - 40) = 11011000 (complemento a 2) 2.32. Sumar los siguientes números decimales con signo utilizando números en complemento a 2: (a) (-3) +(-4) (b) (-13) +(-41) http://librosysolucionarios.net 1.-. r NUMEROS. CODIGOS DE COMPUTADORA Y ÁRITMETICA una suma de mento a 2 de 31 Solución: Seguir el procedimiento de la Figura 2.14d. Las sumas son las siguientes: (a) (-3) 11111101 (b) (-13) 11110011 +(-4) +11111100 +(-41) +11010111 ----r=7) ;)11111001 (complemento a 2) ( - 54) '111001010 (complemento a 2) descana overfkrw complemento 2.33. Restar los siguientes números decimales con signo utilizando números en cOlflplemento a 2: (a) ( + 7) (b) - ( + 2) f ( + 113) - (+ 50) Solución: Seguir el procedimiento de la Figura 2.15a. Los resultados de los problemas de resta son los siguientes: (a) (+ 7) 00000111 - (+ 2) = 00000010 <omp!nnm.u2 • + 11111110 , suma 1O1 (complemento a 2) (+ 5) = jlfJOOOO Iplemento a 2) ~ complemento dncarta (b) - ( + 113) (+ 50) 00110010 (+ 63) overflow yauma 01110001 + 1100 1110 111 111 (complemento a 2) }IOO comp!nnm.u 2 • dtseana overfkJw mplemento a 2) 2.34. Restar los siguientes números decimales con signo utilizando números en complemento a 2: (a) complemento ( + 3) - (+ 8) (b) (+12) - (+ 63) Solución: Seguir el procedimiento de la Figura 2.15b. Los resultados de los problemas de resta Son los siguientes: ( + 3) 00000011 (a) -(+8)-00001000 comple........ 2 1+ 11111000 ( - 5) puma + 11111011 (complemento a 2) (b) (+ 12) - ( + 63) = 00111111 (-51)= complemen.a a 2 • )' suma 00001100 + 1 100000 1 11001101 (complemento a 2) rplemento a 2) I complemento , 1..7. AGRUPACIONES DE BITS t:" n simple dígito binario se denomina bit. Cuatro bits agrupados se denominan nibble. Ocho bits ¡grupados se denominan byte. http://librosysolucionarios.net 32 FUNDAMENTOS DE LOS MICROPROCESADORES Una característica muy importante de cualquier microprocesador es el tamaño del acumula­ dor. Los microproc~sadores sencillos. comúnmente utilizan acumuladores de 8 bits. El tamaño de la palabra del microprocesador entonces es de 8 bits. En este caso I byte forma una palabra. Los microprocesadores tienen longitudes de palabra de 4, 8, 16 o incluso 32 bits. Un microprocesador de 16 bits tiene por tanto una longitud de palabra de 2 bytes, o de 16 dígitos binarios. Una palabra es un grupo de bits que es procesada como un simple número o instrucción por el microprocesador. Un microprocesador de 8 bits transfiere y almacena todos los datos en grupos de 8 bits, vía ocho conductores paralelos denominados bus de datos. El contenido de la memoria de una microcomputadora de 8 bits puede ser el reflejado en la Figura 2.16a. Observar que cada posición de dirección (contenido etiquetado) contiene informa­ ción en grupos de 8 bits. Cada byte se denomina palabra de memoria, ya que el microprocesador es una unidad de 8 bits. Cada palabra de memoria tiene un significado específico cuando es buscada y decodificada por el microprocesador. El contenido binario de la memoria de la Figu­ ra 2.16a puede representar: ~;" 1, ¡ , , .. '; 1" l. 2. 3. 4. 5. 6. 7. Un número binario. Un número binario con signo. Un número BCD. Un carácter (una letra del alfabeto). Una instrucción. Una dirección de memoria. Una dirección de un puerto de entrada o salida. ; ... ¡ : Considerar la posición superior de la memoria (O II 00 I 00 2) de la Figura 2.16a. El contenido de esta posición de memoria es 110 II O11. Esta palabra de memoria puede interpretarse como sigue: l. tomo un número binario -110 11011 2 ", 219¡o­ 2. Como un número binario con signo -11011011 (complemento a 2) '" -37 10, 3. Como un número BCD -esto no puede ser un número decimal codificado binario por­ que ni 1101 ni 1011 son códigos BCD. 4. Como un carácter -esto no puede ser ningún carácter ASCII (ASCII es un código alfanu­ mérico popular especial). 5. Como una instrucción -11011011 = la instrucción INPUT (ENTRAR) del popular mi­ croprocesador Intel 8080/8085. 6. Como una dirección de memoria -110 lI O11 2 " OB I6 ­ posición de memoria 219 10 , 7. Como una dirección para un puerto de entrada o salida -1 10 11011 2 = puerto 219 10, La palabra superior de la memoria de la Figura 2.16a puede ser el número binario 219 10, el número binario con signo -3710' la instrucción INPUT (ENTRAR) del microprocesador 8085, la dirección de la posición de memoria DBI6 o la dirección del puerto de entrada o salida 219 10, En este ejemplo la palabra superior de la memoria (110 110 11) puede significar una de cinco posicio­ nes diferentes, instrucciones o cantidades. Si el operador de la microcomputadora 8085 arrancase el contador de programa en la direc­ ción 100 10 (01100100 2), entonces el microprocesador buscaría y decodificaría la palabra de me­ moria 110 110 11 como una instrucción de INTRODUCIR dato (INPUT). El microprocesador continuaría posteriormente en la siguiente dirección: 10110 (O lI 00 10 12), El contenido de la me­ http://librosysolucionarios.net r NUMEROS, CODIGOS "DE COMPUTADORA Y ARITMETICA o del acumula­ s.. El tamaño de !la palabra. Los OCroprocesador ~ binarios. Una trucción por el latos en grupos . ~ Entrada puerto l ""'" Bus de dirección y líneas de control Dirección - -!j" 01100100 1101 1011 00000001 01100110 00110110 01100111 1100 1000 0110 1000 11010011 01101001 0000 1010 • 1100 1000 01000001 • (a) alída 219 10, En ~ cinco posicio­ lila en la direc­ ~labra de me­ , . -,procesador mdo de la me- tJ Contenido típico de una memoria binaria de una microcomputadora Interpretación del microprocesador de las palabras de memoria Dirección Contenido 01100100 1101 1011 103 01100111 1100 1000 Código para la instrucción de INTRODUCIR dato Código binario para dirección del puerto 1 Código binario para instrucción de TRANSFERIR dato Código binario para dirección de memoria 104 01101000 11010011 Código para instrucción SACAR dato 105 0110 1001 0000 1010 Código binario para dirección del puerto 10 • • • 100 inario 219 10, el r:sador 8085, la Salida puerto 10 Posición de memoria (en decimal) alfanu­ oria 219 10, lerto 219 10' ./ Memoria I lel popular mi­ Bus de datos • • • • El contenido rpretarse como I código Contenido 01100101 L :lo binario por- ~ Microprocesador de 8 bits reflejado en la ltiene informa­ ticroprocesador fico cuando es tJria de la Figu­ In,o' 33 101 01100101 00000001 102 01100110 00110111 • • 200 _,.,.1 • 1100 1000 01000001 ......---l.... ASCII Código para la letra A Memoria (b) Interpretación por el microprocesador del contenido de la memoria .., Figura 2.16. http://librosysolucionarios.net . ~ ~ 34 FUNDAMENTOS DE LOS MICROPROCESADORES • •• moria en la Figura 2. 16a es el mismo que el de la FIgUra 1.4. Recordar que el programa de la Figura 1.4 ejecuta las siguientes instrucciones: 1. INTRODUCIR (INPUT) el dato del puerto 1. 2. ALMACENAR (STORE) el dato en la posición de memoria 200. 3. SACAR (OUTPUT) el dato al puerto 10. •• La interpretación que el microprocesador hace del contenido de la memoria se detalla en la Figura 2.16b. Las instrucciones del programa se listan en las seis posiciones superiores de memo­ ria (100-105 10), La posición inferior de memoria (200 10) es la posición donde se almacena el dato. En este caso, el código ASCII de la letra A se almacena en esta posición de memoria. En resumen, es importante observar que en las microcomputadoras, los bits se agrupan en palabras. Estas palabras de la memoria de programa son interpretadas por el microprocesador secuencialmente, una cada vez. Es importante para el programador saber cómo el microprocesa­ dor realiza las secuencias e interpreta los datos. Cada microprocesador tiene su propio código, único, de instrucciones; sin embargo, todos los microprocesadores realizan el secuenciamiento de las posiciones de memoria de forma similar. •• PROBLEMAS RESUELTOS '\ 2.35. Cuatro bits agrupados se denominan nibble, mientras que un grupo de 8 bits se deno­ mina ___ . Solución: Una agrupación de 8 bits se denomina byte. Bajo circunstancias especiales esta agrupación de 8 bits también puede denominarse palabra. 2.36. El tamaño de ___ es una característica importante de un microprocesador y está rela­ cionada con el número de bits transferidos y procesados como un grupo. Solución: El tamaño de palabra es una de las características más importantes de un microprocesador. ... ... .-r" dJII ,. JI:II:,. . • ~ 2.37. Acudir a la Figura 2.16a. El byte de datos almacenados en cualquier posición de memoria se denomina palabra de ___ . Solución: . El byte de datos almacenados en cualquier posición de memoria se denomina palabra de memoria. 2.38. Citar siete interpretaciones posibles de una palabra de memoria de 8 bits. Solución: El contenido de una 'posición de memoria puede interpretarse como un número binario, un número binario con signo (notación en complemento a 2). un número BCD, un carácter, una instrucción, una dirección de memoria y una dirección de un puerto de entrada o salida. 2.39. Acudir a la Figura 2.16b. ¿Cómo interpretaría el microprocesador la palabra de memoria (00000001) de la dirección IOI¡Q? http://librosysolucionarios.net --1E ­ :¡:., NUMEROS. CODlGOS DE COMPUTADORA Y ARITMETICA programa de la 3S . Soludón: Acudir a la Figura 2.16b. El microprocesador busca la palabra de memoria (0000000 1) esperan­ do que le diga por qué puerto va a entrar el dato. La palabra de memoria indica al microprocesador que va a entrar un dato por el puerto l. . I . I se detalla en la riores de memo­ Imacena el dato. nona. IS se agrupan en lIlicroprocesador el microprocesa­ il propio código, uenciamiento de I ~ 2... Acudir a la Figura 2.16b. ¿Cómo interpretaría el microprocesador, la palabra de memoria (00110111) de la dirección 102 10? Solución: Acudir a la Figura 2.16b. El microprocesador busca la palabra de memoria (00 II O111) esperan­ do que sea una nueva instrucción. La palabra 00110111 es decodificada por el microprocesador y significa TRANSFERIR (MOVE) dato desde el acumulador hasta la posición de memoria cuya dirección se encuentra en la siguiente posición de memoria. 1.41. Los códigos utilizados para las instrucciones son los mismos para todos los microprocesa­ dores, y por tanto un programa escrito para un microprocesador Intel funcionará en una unidad de Motorola (verdadero o falso). Solución: Falso. Cada microprocesador tiene su propio código único de instrucciones. 8 bits se deno­ 2.8. CODIGOS ALFANUMERICOS . sta agrupación de ~ &dar y está rela­ ~dor. ión de memoria L.. . , Los códigos que contienen caracteres alfabéticos y numéricos son necesarios cuando los micro­ procesadores se comunican con dispositivos como teletipos o terminales CRT (tubo de rayos catódicos). Estos códigos se denominan códigos alfanuméricos. El código alfanumérico más utilizado en los sistemas microcomputadores es el American Slandard Code for Information Interchange o ASCII (pronunciado «ask-i») (Código Estándar Americano para Intercambio de Información). Un listado parcial del código de 7 bits se muestra en la Figura 2.17. Este listado contiene códigos de 7 bits para números, letras mayúsculas y caracteres de puntuación. El código completo tiene también códigos para las letras minúsculas y los caracteres de control. ;. PROBLEMAS RESUELTOS palabra de 2.41. Los códigos binarios que representan números y letras se denominan códigos ___ • Lero binario, un un carácter, una o salida. In. de memoria Solución: Los códigos binarios utilizados para representar números y letras son los códigos alfanuméricos. 2.43. La representación ASCII del número O es 011 0000. El número 9 se representa en ASOI por _ _ (7 bits). Solución: Acudir a la Figura 2.17. El número 9 se representa en ASCII por 01 I 1001. http://librosysolucionarios.net I FUNDAMENTOS DE LOS MICROPROCESADORES ASCII Carácter Carácter ASCII :..@. Espacio ! " :# $ % & · ( ) • + • · / 010 010 010 010 010 010 010 010 010 010 010 010 010 010 010 010 0000 A 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 B 011 011 011 011 011 011 011 011 011 011 0000 Q 0001 0010 0011 0100 0101 01 lO 0111 1000 1001 R S T U C D E F G H 1 J K L M N O P 100 lOO lOO 100 100 100 100 100 100 100 100 100 100 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1lOO 1101 lOO 1110 100 1111 101 0000 :.r :.... r :.. ~ •~ ~ ... ~ !..a. :.I l..CI O I 2 :j 3 4 5 6 7 8 9 Figura 2.17. V W X Y Z 101 101 101 101 101 101 101 101 101 101 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 Usta parcial del conjunto de caracteres ASCII. 2.44. Al eliminar los tres bits más significativos de la representación ASCII del O al 9 se obten­ drá el _ _ equivalente de ese número. Solución: Acudir a la Figura 2.17. Al eliminar los tres bits más significativos en la representación ASCII del O al 9 se obtendrá el equivalente binario o BCD de ese número. http://librosysolucionarios.net UL; :.: ,..­ I NUMEROS, CODIGOS DE COMPUTADORA Y ARITMETICA I ! 37 PROBLEMAS SUPlEMENTARros 2.45. Mentalmente, convertir los siguientes números binarios a sus equivalentes decimales: (b) 0010 (e) 0011 (d) 0111 (e) 1001 (f) 1100 Res. (a) O (b) 2 (e) 3 (d) 7 (e) 9 (f) 12 (a) 0000 2.47. 01101001 2 - _ 10' Res. 105 10 , 2.47. 60 10 - _ - 2, Res. 1III00r 2.48. El número binario 10011100 se representa como 9C en notación _ _ . hexadecimal. Res. 2.49. 8° 16 " - - 2 ' Res. 10001101 2, 2.50. 01011111 2 Res. _ _ 16 , 5FI6' 2.51. 3C I6 - - - 10' Res. 60 10, I 2.52. 90 10 " - - 1 6 ' Res. SA I6• ,'< , 2.53. 92 1O - _ - OCD ' Res. 1001 00 lO ocD' 2.54. 1000 OIlO ocD Res. - - 10' 86 10 , 2.55. Resolver los siguientes problemas de suma binaria: 11000011 (b) 01101110 +00111100 +00111101 Res. (a) 11111111 2 (b) 10101011 2 (a) 2.56. 110110002 -00110011 2 Res. 2.57. lItaCión ASCII del 10100101 2, 1001 2 X 1101 2 ", Res. --2' --2' 1110101 2, 2.58. Cuando se almacenan números positivos y negativos en un registro del microprocesador, si el bit de signo (MSB) es 1, el número es _ _ (negativo, positivo). Res. negativo. http://librosysolucionarios.net í 38 FUNDAMENTOS DE LOS MICROPROCESADORES 2.59. O1111110 en notación en complemento a 2 representa dn número _ _ (negativo, positivo). Res. positivo. 2.60. Traducir los siguientes números decimales con signo a su forma en complemento a 2 de 8 bits: (a) + 12 (b) 12. (b) 11110100 (complemento a 2). Res. (a) 00001100 (complemento a 2) 2.61. Traducir los siguientes números en complemento a 2 a sus decimales con signo equivalentes: (a) 01110100 (b) 11011101. Res. (a) + 116 10 (b) - 35 10, 2.62. Sumar los siguientes números decimales con signo utilizando números de 8 bits en complemento a 2: (a) ( + 13) (b) ( + 17) (e) ( - 6) + (+ 8) Res. + (- 8) (a) 00010101 (complemento a 2) + ( - 14) (b) 00001001 (complemento a 2) (e) 11101100 (complemento a 2) 2.63. 2.64. Restar los siguientes decimales con signo utilizando números en complemento a 2 de 8 bits: (a) ( + 13) (b) ( + 19) _,,-+-::..t. ( + 29) Res. (a) 00001000 (complemento a 2) (b) 11110110 (complemento a 2) . . .=-­ ~-'-.~ _. w1I ~~~.~ 11 ~ Un byte es un grupo que contiene _ _ bits. Res. 8. a~· Un nibble es un grupo que contiene _ _ bits. E=-' Res. 4. 2.66. t ..iI .:;¡,,­ 2.65. :t:I ~ ~ ..;JI ., -31 El tamaño de palabra más popular para los sencillos microprocesadores es de _ _ (8,48) bits. Res. 8. 2.67. Acudir a la Figura 2.16a. Se trata de un diagrama de bloques básicos de _ _ (una microcomputa­ dora. un microprocesador). Res. una microcomputadora. 2.68. Acudir a la Figura 2.16b. ¿Cómo interpreta el microprocesador la palabra de memoria (11010011) de la dirección 104 1O? Res. Acudir a la Figura 2.16b. El microprocesador busca la palabra de memoria ( 110 1001 1) espe­ rando que sea una nueva instrucción. La palabra (110 100 11) es decodificada por el microprocesador y significa SACAR (OUTPUT) dato del acumulador al puerto de salida cuyo número está en la siguiente posición de memoria. 2.69. 2.70. Las letras ASCII significan _ _ . Res. American Standard Code for Information Interchange (Código Americano Estándar para In­ tercambio de Información). Un código se utiliza. probablemente, para traducir información desde un dispositivo de entra­ da (teclado) a un sistema microcomputador. Res. alfanumérico o ASCII. http://librosysolucionarios.net ~ ... ~ Rr_ ::..tI m: .::11 r-. .. -.r-! r L. Capítulo 3 positivo). ~a 2 dttS bits: , en complemento I (8,48) bits. na microcomputa­ la J.l. PUERTAS LOGICAS Los circuitos utilizados para procesar seflales digitales se denominan puertas lógicas. Para identi­ 2 de 8 bits: _ DISPOSITIVOS DIGITALES BASICOS (! 101(011) de 111101(011) espe­ ~ microprocesador Dumero está en la 'BU.da< pa" ••­ ~itiVO de entra- Scar estos circuitos se utilizan símbolos lógicos. Las siete puertas que son los elementos lógicos fundamentales en los sistemas digitales aparecen en la Figura 3.1. Los nombres de los siete elementos lógicos se dan en la columna izquierda de la Figura 3.1. los símbolos lógicos estándares gráficos se ilustran en la segunda columna. La tercera muestra la JL.uÓn exacta (salida) del circuito con entradas dadas. En la tabla de verdad, un significa un nÍ\"el de tensión BAJO mientras que un 1 significa un nivel de tensión ALTO. La columna derecha de la Figura 3.1 da la expresión booleana para cada elemento lógico. Las expresiones ~Ieanas son una especie de <<taquigrafia» utilizada para representar una función lógica. Observar que cada símbolo lógico de la Figura 3.1 tiene una forma distintiva. Algunos fabri­ .:antes están comenzando a utilizar símbolos rectangulares para todos los dispositivos lógicos. Estos nuevos símbolos lógicos están basados en el no ensayado estándar (IEEE Standard 91-1984) ~ollado por el Instituto de Electricidad e Ingeniería Electrónica. Sin embargo, por ahora, :.ldos los trabajadores de esta área reconocerán los símbolos lógicos dibujados en la Figura 3.1. El ejemplo de la Figura 3.2 es práctico con la utilización de información con las puertas J.)gicas. ¿Cuáles son las salidas del inversor (a veces denominado puerta NOT) de la Figura 3.2 · . ~ el pulso a en la entrada? Oe acuerdo con la segunda línea de la tabla de verdad de la ~"Jra 3.1, la salida será 0, la opuesta a la entrada. Cuando el pulso b (un 0, o BAJO) alcanza la . ~:-ada del inversor, la salida será un nivel ALTO o un 1. El pulso de entrada c producirá una ja de nivel BAJO, mientras que el pulso d producirá una salida de nivel ALTO. El proceso de .. ~rsión también se denomina complementación o negación. La expresión booleana para la -::plementación es A = A (leer A complementado es igual a no A o A no). La barra superior se ": ':0 y se utiliza para invertir o complementar la variable o expresión que está debajo. Otro ejemplo se muestra en la Figura 3.3a, donde aparece una puerta ANO de 2 entradas. Los · . 50S de entrada en a son y 1, que según la tabla de verdad de la Figura 3.1 producirán una ja de nivel BAJO ó O. Los pulsos a, by c producirán todos salidas de nivel BAJO. Cuando · -::as entradas de la puerta ANO estén en el nivel ALTO (ver pulso d en la Fig. 3.3a), la salida -~ un nivel ALTO ó l. Considerar el problema mostrado en la Figura 3.3b. Aquí los «nibbles» 10 10 (en la entrada A) : IX) 1 (en la entrada B) van a realizar la operación ORo El «nibble» de salida se determinará · - .·:rando la tabla de verdad de la Figura 3.1. El «nibble» de salida será 1 11 como resultado de :;ac:ión OR de 1010 con 1001. Observar que primero realizan la operación OR los pulsos a. · "",:,ues los b, etc. ° ° ° http://librosysolucionarios.net .1 I1 40 FUNDAMENTOS DE LOS MICROPROCESADORES Función lógica Símbolo lógico de puerta Entrada Salida A A - A--t>­ A Inversor Salida Entrada O I I O ~:[)-Y Salida Entradas AD­ B NAND Y B A O O I O I I A B =D­ Y Salida Entradas ;=L)o-Y NOR O I O O O I I I I O ~j[)-Y Entradas Salida D- NOR exclusiva A·B-Y Salidas A+B-Y B A OR O O O 1 O 1 I I I I O 1 J O Entradas OR exclusiva A·B-Y AND NAND Entradas OR - A-A Salidas Entradas AND Expresión booleana Tabla de verdad NOR O O A+B-Y Salidas B A O O O O I I I O I I I A (J)B-Y XOR XNOR O 1 O O I A@B-Y Figura 3.1 . Las siete funciones lógicas comparadas. ~ ----, Entrada~ida "'"-d e b NOT a Figura 3.2. Problema del inversor. http://librosysolucionarios.net ? DISPOSITIVOS DIGITALES BASICOS 11..!fil.!.. ~ d b c a ~---' (a) ·4 - A c b ,a ~-..r (b) ~? A Entradas ~~A d f c,b SaJida ' ~? a ~~~ .4·8-Y ~I :::B- y SaJida Problema de la puerta OR ,A·B-Y ¡:;S-y Salida ~, Problema de la puerta ANO Entradas ll.!.Ji1..2....~ d Entradas 41 (C) Problema de la puerta XOR Figura 3.3. ¿Cuál es el «nibble» de salida después que 10 1O y 1001 realicen la operación OR exclusiva (XOR) en la Figura 3.3c. Utilizando la tabla de verdad XOR de la Figura 3.1, se determina que el resultado de la operación XOR de 10 10 con 100 l es 00 11. Los microprocesadores pueden realizar operaciones lógicas. Normalmente un microprocesa­ dor tendrá instrucciones NOT (complementación o negación), ANO, OR Y XOR. Estas instruc­ ciones operan sobre grupos de bits similares a los de las puertas lógicas de las Figuras 3.2 y 3.3. . , , ,"" ,~ PROBLEMAS RESUELTOS 3.1. Citar los nombres de siete funciones lógicas. Solución: Acudir a la Figura 3.1. Las siete funciones lógicas se denominan NOT (inversor) ANO, NANO, OR, NOR, OR exclusiva (XOR) y NOR exclusiva (XNOR). 3.2. Citar los nombres de cuatro funciones lógicas que pueden ser realizadas por las sencillas instrucciones de un microprocesador. Solución: Muchos microprocesadores tienen instrucciones que realizan las funciones lógicas NOT, ANO, ORyXOR. 3.3. Si un microprocesador realiza la operación ANO de 1100 con 10 11, el «nibble» de salida será _ _ . Solución: Acudir a la tabla de verdad ANO de la Figura 3.1. La salida resultante de la operación ANO de 1100 con 1011 será 1000. http://librosysolucionarios.net 42 FUNDAMENTOS DE LOS MICROPROCESADORES 3.4. Si un microprocesador realiza la operación OR de 00 1r con 1000, el (mibble» de salida será _ _ . Solución: Acudir a la tabla de verdad OR de la Fisura 3.1. El resultado de salida de la operación OR de ()() I I con 1000 será 1011. 3.5. Si un microprocesador complementa (NOT) 1001, el «nibble)~ de salida será _ _ . Solución: Acudir a la tabla de verdad del inversor de la Figura 3.1. La salida resultante de complementar 1()() 1 será 0110. 3.6. Si un microprocesador realiza la operación XOR de 0011 con 0110, el «nibble» de salida será _ _ . Solución: Acudir a la tabla de verdad OR exclusiva de la Figura 3.1. La salida resultante será OI Ol. 3.7. Describir las salidas de la puerta NANO de la Figura 3.4. Solución: Acudir a la tabla de verdad NANO de la Figura 3.1. Los pulsos de salida de la Figura 3.4 serán los siguientes: pulso e - 1 pulso a - 1 pulso b = O pulso d- 1 Entradas Salida Ol ll-L-~ de b ~? a ~~ Figura 3.4. 3.8. Problema del tren de pulsos. Describir la salida de la puerta XNOR de la Figura 3.5. Entradas Salida ~~A de b ~? a -2..JiIl..!..~ Figura 3.5. " ,., Problema del tren de pulsos. Solución: Acudir a la tabla de verdad NOR exclusiva de la Figura 3.1. Los pulsos de salida de la Figura 3.5 serán los siguientes: pulso a - O pulso e = 1 pulso b - O pulso d- 1 http://librosysolucionarios.net r DISPOSITIVOS DIGIT AtES BASICOS Lte> de salida operación OR de 3.2. COMBINACION DE PUERTAS LOGICAS Los sistemas digitales están formados por combinaciones de puertas lógicas, las cuales pueden ser descritas por una tabla de verdad, expresiones booleanas o diagramas de símbolos lógicos. Considerar la tabla de verdad de la Figura 3.6a, que muestra todas las posibles combinaciones de cuatro entradas (D, e, B y A). Observar que sólo la combinación 1010 producirá una salida l. será _ _ . Entradas de complementar Salida Entradas D e B A Y D r o o o o o o o o o o o o o o o o o o o o o o o 1 l 1 1 I I I 1 o o o o Salida R A Y o o Ilibble» de salida ~ le será 0101. I a Figura 3.4 serán 43 1 I I 1 1 l 1 o o o o l I 1 o I 1 (a) o o '0 1 1 1 o o o o 1 1 1 I 1 I 1 1 o 1 1 o o o o o Conversión de una tabla de verdad a la expresión booleana equivalente D.C.B.A .. Y L~ __ l-----,A y e . .' ' - - - - -.... D _ _ _ _ _ _ _....J Salida Entradas (b) Conversión de una expresión booleana a su diagrama de símbolos lógicos la de la Figura 3.5 Salida Entradas (e) Diagrama simplificado de los símbolos lógicos . Figura 3.6. http://librosysolucionarios.net c· 44 o de nivel ALTO. Una expresión booleana equivalente para esta tabla de verdad se indica en la parte derecha de la tabla de la Figura 3.6a. Las entradas realizan la operación ANO, formando la expresión booleana D . c· B . A = y (se lee D ANO no e ANO B ANO no A igual a la salida }). A continuación se obtiene un diagrama de símbolos lógicos para la expresión booleana. Este procedimiento está esbozado en la Figura 3.6b. Las entradas A y e deben de complementarse utilizando un inversor. La salida es una puerta ANO de 4 entradas. Una versión simplificada del mismo diagrama lógico se muestra en la Figura 3.6c. En este diagrama los inversores aparecen como burbujas inversoras. Estas burbujas inversoras también pueden considerarse como entradas activas en el nivel BAJO (o en BAJA). En otras palabras, para activar la puerta ANO de la Figura 3.6c, las entradas A y e deben estar en el nivel BAJO y las B y D en el nivel ALTO. Como las entradas B y D deben de estar en el nivel ALTO para activar la puerta ANO, se consideran entradas activas en el nivel ALTO (o en ALTA). Entradas , ¡, i • Salida D e B A Y o o o o o o o o o o o o o o o o o o o o o o o 1 1 o I 1 o o o 1 1 1 1 (a) I 1 1 o 1 Salida Entradas D e B A I o o o o o o o 1 1 1 I 1/ 1 1 I Y 1 o o o o I 1 o 1 1 o o o 1 1 1 1 o 1 1 1 o o I Conversión de una tabla de verdad a la expresión booleana equivalente en minterms .~ ~ ~ f 'ji "f, l~ :~ "7,,: 1 ruNDAMENTOS DE LOS MICROPROCESADORES Entradas A -.....--i ')o--.:~----.¡--"'" B---+--~--~~~--~_4 C--~------~~~>O_+_4 D~++------------~--~~ D.C.'B:¡ __~ Salidas !, l.' (b) Conversión de una expresión booleana en minterms a su diagrama de símbolos lógicos Figura 3.7. http://librosysolucionarios.net o I D ÚII -= , -"-" ­ DISPOSITIVOS DIGITALES BAstCOS se indica en la A.~D, formando . no A igual a la o booleana. Este complementarse 3.6c. En este también :as palabras, para :l BAJO Ylas B y O para activar la lIJ"3 ~ras t I 45 Considerar la tabla de verdad de la Figura 3.7a. Oos combinaciones de entrada producirán un 1 ó salida ALTA. La expresión booleana de esta tabla de verdad es entonces D . L . 11 . A + D . e . 11 . A = Y (se lee D ANO no e ANO no B ANO no A OR D ANO e ."--~ no B ANO A igual a la salida Y). La expresión booleana es convertida a continuación a un diagrama de símbolos lógicos. Este procedimiento se ilustra en la Figura 3.7b. Observar que este tipo de expresión booleana crea patrones de puertas lógicas ANO-OR, siendo la puerta OR la más cercana a la salida. El patrón de esta expresión booleana se denomina forma de suma de productos o minterms. Las expresiones booleanas son generadas a partir de los unos de la columna de salida de la tabla de verdad de la forma mostrada en la Figura 3.7a. .. PROBLEMAS RESUELTOS 3.9. Acudir a la Figura 3.6c. Las entradas B y D son entradas activas en el nivel ___ (ALTO, BAJO), mientras que las entradas A y e son activas en el nivel _ _ (ALTO, BAJO). Solución: En la Figura 3.6, las entradas By D son activas en el nivel ALTO, mientras que A y e son activas en el nivel BAJO. En otras palabras, la puerta ANO de 4 entradas puede ser activada (la salida está en el nivel ALTO) solamente cuando las entradas A y e son BAJAS y las B y D son ALTAS. o 3.10. Escribir la expresión booleana de la tabla de verdad de la Figura 3.8. Solución: Hay dos combinaciones de entradas que producen una salida ALTA en la tabla de verdad de la Figura 3.8. A partir de estas combinaciones se desarrolla la expresión booleana en minterms: »·~·j·A+D·C·B·A=~ . \. ,o' Entradas Salida Entradas Salida D e B A Y D e B A Y o o o o o o o o o o o o o o o o 1 1 1 1 o 1 1 1 1 o o o o o o o o o 1 o o o o 1 1 1 1 1 1 1 1 I 1 1 o o 1 1 o o o o o o o o 1 1 1 1 o o o o o o 1 1 1 1 1 1 Figura 3.8. http://librosysolucionarios.net 1 1 46 RlNDAMENTOS DE LOS MICROPROCESADORES 3.11. Dibujar el diagrama de símbolos lógicos de un circuito que genere la tabla de verdad de la Figura 3.8. Solución: La expresión booleana para la tabla de verdad mostrada en la Figura 3.8 es D . Ji . A + D . e . B . A = Y. A partir de esta expresión se dibuja el diagrama de símbolos lógicos AND-OR mostrado en la Figura 3.9. e. D.C.S.A Salida y Entradas A--~+;---------r--~ B---+~--------~ c----~--------~ D----~~------_L Figura 3.9. __~ Solución del diagrama lógico. 3.3. FLIP~FLOPS y CERROJOS Los circuitos lógicos pueden clasificarse en dos grandes categorías. El primer grupo es el de los circuitos lógicos combinacionales, que está compuesto de puertas. El segundo grupo es el de los circuitos lógicos secuenciales, que incluye unos dispositivos denominados «flip-flops». Los flip­ flops están interconectados para formar circuitos lógicos secuenciales para almacenamiento de datos, temporización, conteo y secuenciamiento. Los flip-flops tienen una característica de me­ moria extremadamente valiosa. Un flip-flop «recordará» sus entradas aún después de que éstas se hayan eliminado. Una puerta lógica sin embargo, «no recordará» su estado de salida después que se eliminen las entradas. El símbolo lógico para el flip-flop D (también llamado fliPllop de datos) aparece en la Figu­ ra 3.1 Oa. El símbolo lógico muestra dos entradas etiquetadas D (para datos) y CK (para reloj). Los flip-flops habitualmente tienen salidas complementarias etiquetadas Q y"Q (no Q). La salida Q es la utilizada con más frecuencia y se considera la salida normal. La salida "Q se denomina la salida complementaria o invertida del flip-flop. El > en la entrada CK del símbolo lógico D denota que este flip-flop transfiere datos de la entrada a la salida en el flanco positivo (t) del pulso de reloj. Los modos de operación del flip-flop D se muestran en la columna izquierda de la tabla de la Figura 3.lOb. Poner en set el flip-flop significa cargar un 1 en la salida normal (Q). La primera línea de la tabla de verdad de la Figura 3.1 Oh muestra que colocando un l en la entrada D y pulsando una vez la entrada CK (reloj) la salida Q se pone a l. La segunda línea muestra la reinicialización (reset) del flip-flop. Reinicializar significa borrar la salida Q (ponerla a O). Mante­ ner (hold) significa almacenar el dato de salida. Cuando el flip-flop está en el modo de manteni­ miento, los cambios en el estado lógico de los datos de entrada no ocasionan ningún cambio en http://librosysolucionarios.net ..i1lL "•• 47 DIsPOsmvos DIGITALES BAStCOS · de verdad de la Entradas k Figura 3.8 es ama de símbolos D CK Set 1 f Reiniciali­ zación O f Manteni­ miento X No pulso de reloj Salidas Q Q O 1 Salidas Entradas Dato Q Normal FF Reloj Modo de operación CK Q Complementaria Igual que antes 0= BAJO I-ALTO X irrelevante t - transición BAJA-ALTA del pulso de reloj (a) Símbolo lógico para el Oip-flop D (b) Tabla de verdad para el flip-flop D Figura 3.10. L ~l es de los rupo es el de los ·ps». Los flip­ acenamiento de r:ter(Slica de me­ s de que éstas se ida después que mece en la Figu­ '!'ara reloj). Los _a salida Q es DOmina la salida ro D denota que :1 pulso de reloj. de la tabla de la _ La primera I la entrada D y linea muestra la e-rla a O). Mante­ \ de manteni­ Dgún cambio en las salidas. La condición de mantenimiento ilustra la característica de memoria del flip-flop D. Observar que las operaciones de set y reinicialización se refieren a la salida Q. Considerar el símbolo lógico de la Figura 3.11 a correspondiente a un cerrojo transparente de 4 bits. Cada cerrojo (flip-flop) dentro del símbolo es un dispositivo de almacenamiento o memo­ ria. Pensar que el cerrojo de 4 bits contiene 4 flip-flops D con sus entradas de reloj conectadas a la entrada de habilitación (enable) (E) mostrada en el símbolo de la Figura 3.11 a. De acuerdo con la tabla de verdad del cerrojo de la Figura 3.11 b, cuando la entrada de habilitación (E) está en ALTA (a 1), los datos de las entradas D son transferidos a sus respectivas salidas (QO-Q3)' La palabra de 4 bits llega en forma paralela (opuesta a la forma serie) y también sale en forma paralela. A esto se denomina entrada paralela y salida paralela. El dispositivo de almacenamiento cerrojo es una aplicación realizada con flip-flop. El flip-flop JK es probablemente el más utilizado en los circuitos lógicos secuenciales, debido a su adaptabilidad. El símbolo lógico de un flip-flop JK se muestra en la Figura 3.12a. Este flip-flop tiene dos entradas de datos etiquetadas J y K más una entrada de reloj (CK) y las salidas Q (normal) y <2 (complementaria). Un flip-flop JK tiene cuatro modos de operación, que se describen en la Figura 3.12b. El modo de operación de conmutación (toggle) significa que con cada pulso, un tren de pulsos de reloj, las salidas cambian a su estado lógico opuesto. En este modo, la salida Q de un flip-flop JK será ALTA-BAJA-ALTA-BAJA, etc., con pulsos de reloj consecutivos. La tabla de verdad de la Figura 3.l2b muestra que el flip-flop JK conmutará cuando ambas entradas de datos, J y K, estén en el nivel ALTO, siempre que un pulso de reloj llegue a la entrada CK. La acción de conmutación real tiene lugar cuando el pulso de reloj cambia del nivel ALTO al BAJO, como muestra la flecha (t) en la tabla de verdad. http://librosysolucionarios.net ~ I 48 J FUNDAMENTOS DE LOS MICROPROCESADORES Entradas Modo de operación Salidas Entradas D Salidas Q E E -. 1iIe:: ~ P­ ~. é:E:- " ~oo paralelo { DJ Q) D2 DI Q2 Q¡ Do Q(} } 1 O 1 1 I X O Igual que antes D.OO paralelo Dato encerrado E Habilitación O ~ Dato habilitado :~ > ­ O-BAJO I-ALTO X - irrelevante Símbolo lógico para el cerrojo transparente de 4 bits (a) (b) Tabla de verdad para el cerrojo Figura 3.11 . ...:¡ s;.::-" --' Entradas .: Modo de operación Q J Dato ~ Salidas Q J K CK Conmuta­ ción 1 1 ~ Estado opuesto Set 1 O ~ 1 O Reiniciali­ zación O 1 ~ O 1 Mantení­ miento O O ~ Q Normal FF Reloj ...iII 'A. Salidas Entradas Dato ... _~ CK K Q Complementaria No cambia "ti .. 0- BAJO l-ALTO .j. - transición ALTA-BAJA del pulso de reloj (o) . (b) Tabla de verdad para el flip-flop JK Símbolo lógico para el flip-f1op JK Figura 3.12. http://librosysolucionarios.net 111. ]... r DISPOSITIVOS DIGITALES BASICOS ( Salidas Q ~ O ~ 1 II Igual que antes I r 49 El flip-flop IK está en el modo ser cuando las entradas de datos son: 1- 1 YK = O. La segunda línea de la tabla de verdad de la Figura 3.12b muestra que la transición de ALTO a BAJO del pulso de reloj pone la salida Q a l. El modo de reinicialización (poner Q a O) se muestra en la tercera línea de la tabla de verdad. La última línea de la tabla de verdad de la Figura 3.12b describe el modo de mantenimiento (modo de no hacer nada) del flip-flop JK. Cuando ambas entradas de datos (J y K.) son BAJAS, un pulso de reloj en la entrada CK no tendrá efecto sobre las salidas. El disparo es una característica importante de los flip-flops. Los flip-flops pueden clasificarse en dispositivos disparados por flanco o dispositivos disparados por nivel. Los símbolos lógicos de las Figuras 3. lOa y 3.12a sugieren que estos flip-flops son disparados por flanco, por el pequeño > (mayor que) que está junto a la entrada de reloj. El flip-flop D es disparado en la transición L a H (BAJA a ALTA) del pulso de reloj. Esto se muestra en la tabla de verdad y en el símbolo lógico (la no existencia de circulito en la entrada CK implica que es necesario un 1 para activar el reloj). El flip-flop D también se denomina flip-flop disparado por flanco positivo ya que es la transición positiva del pulso de reloj la que dispara al flip-flop. El flip-flop JK es una flip-flop disparado por flanco negativo. Esto se muestra en la tabla de verdad y en el símbolo lógico de la Figura 3.12. El circulito en la entrada CK, del símbolo lógico del flip-flop JK, implica que es necesario un nivel BAJO para activar el reloj. Debido a que el flip-flop JK es disparado por flanco, realmente es en la transición H a L (ALTA a BAJA) (negati­ va) del pulso de reloj cuando se dispara el flip-flop. El cerrojo transparente de 4 bits de la Figura 3.11 es un dispositivo disparado por nivel. Esto significa que cuando la entrada de habilitación (análoga a las entradas CK de los flip-flops) está en ALTA, cualquier dato binario en las entradas (D 3-Do) aparecerá inmediatamente en las salidas (Q3-QO)' Por esta razón se dice que el cerrojo es transparente. Salidas Q Q Estado opuesto 1 O O 1 ) PROBLEMAS RESUELTOS . 3.12. Los circuitos lógicos secuenciales contienen dispositivos llamados _ _ . Solución: Los circuitos lógicos secuenciales contienen flip-f1ops. 3.13. Una característica de memoria utilizada para almacenar datos es típica de _ _ (flip­ flops, puertas). / "So cambia Solución: Los flip-flops tienen una característica de memoria y pueden utilizarse para almacenar datos. 3.14. El flip-flop D también se denomina flip-flop _ _ . de reloj ~tlopJK Solución: El flip-f1op D también se denomina flip-flop de datos. A veces se llama flip-flop de retardo. 3.15. La salida normal de un flip-flop es la salida _ _ (Q, Q). Solución: La salida normal de un flip-flop es la salida Q). La salida Q es la invertida, o complementaria. -, http://librosysolucionarios.net SO FUNDAMENTOS DE LOS MICROPROCESADORES 3.16. Listar los tres modos de operación del flip-flop D mostrado en la Figura 3.10. Solución: Acudir a la tabla de verdad de la Figura 3.1 Ob. El flip-flop D puede operar en los modos de set, reinicialización o mantenimiento. 3.17. Listar el modo de operación del flip"flop D durante cada uno de los cinco pulsos de reloj de la Figura 3.13. Solución: Acudir a la tabla de verdad de la Figura 3.1 Ob. Según esta tabla, los modos del flip-flop D durante cada pulso de la Figura 3.13 son los siguientes: pulso a = modo set pulso d modo set pulso b = modo reset pulso e modo reset período de tiempo e (no pulso)" modo mantenimiento 3.18. Listar los valores binarios de la salida normal (Q) del flip-flop D de la Figura 3.13 después de cada uno de los pulsos de reloj. Solución: Acudir a la tabla de verdad de la Figura 3.1 Ob. Las salidas binarias en Q del flip-flop D de la Figura 3.13 son: después del pulso a = 1 después del pulso d - I después del pulso b = O después del pulso e .., O período de tiempo e (no pulso) .. O (igual que después del pulso b) ) O Entradas I I O ,,--_ .. H .. L Q ? FF CK LNOPUlSO Figura 3.13. Salidas -" Q -, ? Problema del flip-flop D. ............""­ ":;;; 3.19. Un cerrojo es un dispositivo de --'-- (cuenta, almacenamiento). Solución: La función principal de un cerrojo es la de almacenar datos. . .J& 3.20. Acudir a la Figura 3.11. La entrada de habilitación de este cerrojo de 4 bits es activada por un _ _ (O, 1) lógico. Solución: Acudir a la tabla de verdad de la Figura 3.11 b. De acuerdo con esta tabla, la entrada de habilita­ ción de este cerrojo de 4 bits se activa por un 1 lógico. http://librosysolucionarios.net ..... .::Ji 'I11III •- "'!!P!'" - DISPOSITIVOS DIGITALES BASICOS ~.tO. 3.21. Listar los cuatro modos de operación del flip-flop JK de la Figura 3.12. SI . -., Solución: Acudir a la tabla de verdad de la Figura 3.12b. Los modos de operación del flip-flop JK son conmutación, set, reinicialización y mantenimiento. los modos de set, o pulsos de reloj 3.22. Listar el modo de operación del flip-flop JK durante cada uno de los pulsos de la Figu­ ra 3.14. ~flOP D durante Salidas Entradas o o ~ Q ? Q ? FF H CK L pea 3.13 después J o :1 flip-flop D de la O Figura 3.14. lo K Problema del flip-flop JK. Solución: Acudir a la tabla de verdad de la Figura 3.12b. De acuerdo con esta tabla los modos del flip-flop JK durante cada pulso de la Figura 3.14 son: pulso e"'" conmutación pulso a = set pulso b - conmutación pulso f - reset pulso e - conmutación pulso g = mantenimiento pulso d = conmutación pulso h conmutación ialidas -1 'j 'j . : 3.23. Listar los valores binarios de la salida normal Q del flip-flop JK de la Figura 3.14 después de cada pulso de reloj. Solución: Acudir a la tabla de verdad de la Figura 3.12b. Figura 3.14 son las siguientes: después después del pulso a = se pone l después después del pulso b = conmuta a O después después del pulso e = conmuta a I después del pulso d = conmuta a O después ~.24. Las salidas binarias en Q del flip-flop JK de la del del del del pulso e = conmuta a 1 pulso f = se pone a O pulso g - se mantiene en O pulso h = conmuta a I Acudir a la Figura 3.tO. Este flip-flop D es un dispositivo disparado por ___ (flanco, nivel). Solución: entrada de habilita- El flip-flop D de la Figura 3.10 es un dispositivo disparado por flanco. Esto se muestra en el diagrama lógico por el símbolo>. También se muestra en la tabla de verdad por el símbolo t, indicando que el flip-l1op se dispara en la transición H a L del pulso de reloj. ,'. http://librosysolucionarios.net 1­ 52 FUNDAMENTOS DE LOS MICROPROCESADORES 3.25. Acudir a la Figura 3.11. Este cerrojo de 4 bits es un dispositivo disparado por _ _ (flan­ co, nivel). Solución: El cerrojo transparente de la Figura 3.11 es un dispositivo disparado por nivel. 3.26. Acudir a la Figura 3.12. Este flip-flop JK es un dispositivo disparado por flanco _ _ (negativo, positivo). Solución: El flíp-flop de la Figura 3.12 es un dispositivo disparado por flanco negativo ya que se dispara en la transición H a L (negativa) del pulso de reloj. " 3.4. CODIFICADORES, DECODIFICADORES Y VISUALIZADORES DE SIETE SEGMENTOS ~ *~ ,t " Considerar el sencillo diagrama de bloques de la calculadora de la Figura 3.1Sa. En este sistema digital la entrada decimal del teclado debe traducirse a forma decimal codificada en binario (BCD). Este proceso lo realiza un dispositivo digital llamado codificador. La traducción de deci­ mal a BCD se denomina codificación. La salida de la unidad central de tratamiento (CPU) está en forma decimal codificada en binario. El decodificador traduce el BCD al código especial del visualizador de siete segmentos. Para el usuario, el decodificador está traduciendo de BCD a decimaL Un diagrama lógico de un codificador de prioridad decimal a BCD se muestra en la Figu­ ra 3.ISb. El codificador tiene 9 entradas activas en BAJA y 4 salidas conectadas a lámparas indicadoras. El cableado del teclado se muestra en la parte izquierda, cada tecla numerada está conectada a su entrada correspondiente del codificador. El ejemplo de la Figura 3.ISb muestra que al pulsar la tecla 7, se activa (pone a tierra) la entrada 7 del codificador. Esta entrada produce la salida BCD 0111, como muestran los visualizadores de la Figura 3.ISb. La mayoría de los codificadores tienen una característica de prioridad. Esto significa que si se pulsan dos teclas al mismo tiempo, la que tiene el valor decimal más alto activará las salidas. Es claro que las conexiones de alimentación son necesarias para completar el cableado del codificador de la Figura 3.ISb. El codificador puede comprarse en forma de CI, pero también puede ser construido a partir de puertas lógicas individuales. Probablemente se necesitarán entre 10 Y 20 puertas lógicas para implementar este circuito. Considerar el circuito decodificador-visualizador detallado en la Figura 3.1Sc. El decodifica­ dor BCD a siete segmentos traduce el O111 BCD a su equivalente 7 en el visualizador de siete segmentos. El visualizador utilizado en este circuito se denomina de ánodo común porque los siete LEOs (que forman los siete segmentos) tienen sus ánodos conectados a la fuente de alimen­ tación de +S V. El visualizador LEO de siete segmentos de la Figura 3.ISc tiene las entradas activas en BAJA, como muestran los circuitos en las entradas de la a a la g. Es necesario un nivel BAJO para activar un segmento del visualizador. Observar también que el decodificador tiene las salidas activas compatibles en BAJA. Los resistores de ISO n de cada línea, entre el decodificador y el visualizador, son de limitación para mantener las corrientes a niveles seguros. El ejemplo de la Figura 3.15c muestra que solamente las salidas del decodificador a, by c están activadas (en O lógico). Las otras salidas (d, e, f y g) permanecen a I lógico. El visualizador de la Figura 3.ISc http://librosysolucionarios.net al --...­ -.c :-.41 =r=~ -=.r -=.~ -~ "'a... L__ DISPOSITIVOS DIGITALES BASICOS [2][!J ~ L IOr Salida Entrada (flan­ EJ0~ r---­ 0~0 ~ flanco - - ­ Unidad Codificador ----, central de tratamiento t' - I~;r,"", I · O Visualizador decimal Teclado a que se dispara en ! 53 (a) . Teclado Diagrama de bloques simplificado de una calculadora Entrada decimal Salida BCD 9 8 D Codificador e 6 de prioridad decimal-a-BCD B Activado ~ 7 . 5 En este sIstema 6cada en binario aducción de deci­ úento (CPU) está ódigo especial del ciendo de BCD a l. 3 2 pestra en la Figu­ :tadas a lámparas ~ numerada está a.ra 3.15b muestra a entrada produce ..a mayoría de los Illsan dos teclas al Es claro que las codificador de la ale ser construido ~ 10 y 20 puertas (b) Diagrama lógico de los circuitos codificadores del teclado Salida decimal Entrada BCD Activa a a rl---'\.I\I'_,....r4 o 8 D 4 e 2 B a a~. ~ <e d e A Decodificador BCD-a-7-segmentos t5c. El decodifica­ IIl3.lizador de siete l1ún porque los 1 fuente de alimen­ tiene las entradas ~ecesario un nivel .licador tiene las re el decodificador IrOS. El ejemplo de Ián activadas (en O de la Figura 3.15c A 4 f I n - _ J \ ,1\ 1\ g ........_-"./\ ~,-".,. il JI' ~> +5 V Anodo común i------J '" 1500 Visualizador LEO de siete-segmentos (e) Diagrama lógico de los circuitos del decodificador-visualizador Figura 3.16. sólo una conexión de alimentación de +5 V, mientras que el decodificador debe tener dos :xsiooes de alimentación. Las conexiones de alimentación del decodificador se han omitido :1 ~agrama. Los decodificadores reales BCD a siete segmentos también contienen entradas _""lo ~.¡uear (desconectar todos los segmentos) y para test de lámparas (conectar todos los :':C ~~toS). http://librosysolucionarios.net f S4 FUNDAMENTOS DE LOS MICROPROCESADORES PROBLEMAS RESUELTOS 3.27. El codificador de la Figura 3.15b traduce un teclado decimal a la forma _ _ (ASCII, BCD). Solución: Acudir a la Figura 3.15b. Este codificador traduce las pulsaciones de las teclas deCÍmales a forma BCD. 3.28. El codificador de la Figura 3.15b tiene entradas activas en _ _ (ALTA, BAJA). 35. B1. Solución: Acudir a la Figura 3.l5b. Este codificador tiene entradas activas en BAJA. Están representadas en el diagrama lógico por los CÍrculitos en las entradas del codificador. 3.29. El decodificador de la Figura 3.16 traduce del decimal codificado binario a _ _ (deci­ mal, hexadecimal). Solución: El decodificador en la Figura 3.16 traduce del BCD a la representación decimal en el visualizador de siete segmentos. La cin:uiI denCrnl.n. mulupiex, CIiCltadon En est :.u d:JSri :.!:llC"tu e1 :;¡ -­ F' ;.. _....'" - . Salida Entradas 11...0;....._o~O___o _o-,rl ° ° O~ O --.r- ° 1 ° 1 1 O 1 O o~ .!JTL2_!:Jil.~_Jill!!.Jl~ O j 8 4 D e :il~ 2 B Decodificador A BCD-a-7­ segmentos a a b d e e e dil r%' f hgfedcba +5V g d 3.30. bD ,V '\ 150n Problema del decodificador BCD-a-siete-segmentos. El decodificador de la Figura 3.16 tiene las entradas activas en _ _ (ALTA, BAJA) Ylas salidas activas en _ _ (ALTA, BAJA). Solución: El decodificador de la Figura 3.16 tiene las entradas activas en ALTA y las salidas en BAJA. 3.31. Listar las indicaciones decimales del visualizador de siete segmentos para cada pulso de entrada en la Figura 3.16. http://librosysolucionarios.net e ;--i:j ~ Visualizador LED de siete-segmentos Figura 3.16. la_ -r::':J!?ll'U a ::U-"I!l. !:as ,-\1. T.o\. :!' I r DISPOSITIVOS DIGITALES BASICOS· a _ _ (ASCII, decimales a forma L. BAJA). ~ Solución: Las salidas decimales para los diversos pulsos de la Figura 3.16 son las siguientes: pulso a == l pulso f = 3 pulso b "" 4 pulso g == O pulso e 7 pulso h = 2 pulso d= 9 pulso i = 5 pulso e "" 6 pulso j = 8 3$: BUFFERS y DISPOSITIVOS DE TRES ESTADOS istán representadas o a _ _ (deci- I en el visualizador I Salida a la circuiterfa electrónica que puede traducir señales de una sección de un sistema a otra se denomina interfaz. En un sistema basado en microprocesador, las interfaces pueden ser buffers, multiplexores, conversores analógico~digitales (ADC), conversores digitales~analógicos (DAC), excitadores de transistores discretos y aisladores (ópticos o relés). En esta sección nos concentraremos en un dispositivo de interfaz: el buffer. Los fabricantes ban diseñado diversos circuitos integrados especiales denominados buffers que se utilizan como interfaz en situaciones especiales. El símbolo lógico para un buffer no inversor de bus se ilustra en la Figura 3.17a. la operación del buffer del bus se detalla en la tabla de verdad de la Figura 3.17 b. El buffer tiene una entrada de habilitación activa en BAJA, y el dato no se invierte cuando pasa a través del buffer. Cuando el buffer del bus está inhabilitado, la salida está «flotando» y no tiene efecto en la línea del bus. En la condición de inhabilitación, la salida de la puerta no absorbe ni da ninguna corriente a la línea del bus. El buffer del bus de la Figura 3.17 se dice que tiene salida de tres estados (o tristate). +5V las salidas de los dispositivos lógicos se definen habitualmente como ALTA o BAJA. Por esta razón, las salidas de dos dispositivos lógicos no pueden conectarse entre sí ya que si una está en ALTA y la otra en BAJA, entonces la salida estará indefinida y los CI pueden sufrir daños. Los fabricantes han desarrollado CI especiales con salidas de tres estados para utilizarlas cuando las Entradas IIalizador LED lÍcte-segmentos l YA. BAJA) Y las Iidas en BAJA. Salida Modo de operación Entradas Dato A E A Y O O O O l 1 1 O 1 1 Alta impedancia (tensión de salida flota) Salida y Habilitado E Habilitación _ _---1 Inhabilitado (a) Símbolo lógico para el buffer del bus de tres estados (b) Tabla de verdad para el buffer del bus de tres • cada pulso de Figura 3.17. http://librosysolucionarios.net 56 FUNDAMENTOS DE LOS MICROPROCESADORES J-ll. Al di salidas de distintos CI deban compartir un camino de salida o bus común. Los dispositivos de tres estados tienen estados de salida de ALTA, BAJA y un estado especial de alta impedancia (estado de alta-Z). Cuando el dispositivo está en su estado de alta-Z, su salida está desconectada o aislada efectivamente del bus. El diagrama lógico para un transceptor de bus está esbozado en la Figura 3.18a. Este transcep­ tor de bus de tres estados es un buffer no inversor que puede enviar datos en cualquier dirección. Entre la RAM y el bus de datos y también entre el microprocesador y el bus de datos de un sistema microcomputador es necesario un buffer de dos direcciones. En la práctica, los transcep­ tores son construidos en las RAM y microprocesadores. La operación del transceptor de un bus de tres estados se detalla en la tabla de verdad de la Figura 3.18b. El transceptor tiene dos entradas de control (G y DIR). La entrada DIR controla la dirección del flujo de datos. Un nivel ALTO en la entrada DIR significa que el terminal A es la entrada de datos y el terminal B es la salida al bus. Un nivel BAJO en la entrada DIR significa que el terminal B es la entrada de datos y el terminal A es la salida al bus. Un nivel BAJO en la entrada V activa los buffers y permite que pasen los datos. Sin embargo, un nivel ALTO en la entrada V inhabilita los buffers quedando los terminales A y B aislados entre sí. , , Controles{ DIR __-----i Dato A ---<I'-----~ >-'1--_ _ Dato B .Ll.I. . ~ ..... s. ~.J!_ ca SIl " Entradas de control Habilitación Dirección G .. S. Operación G DIR L L Dato B abusA L H Dato A a bus B H X Aislamiento (alta Z) H = nivel lógico ALTO L - nivellógÍco BAJO X irrelevante (a) Diagrama lógico pard el transceptor del bus de tres estados . :, í '! (b) Tabla de verdad para el transceptor de bus de tres estados ¡ = • PROBLEMAS RESUELTOS 3.32. La salida de un dispositivo lógico de tres estados puede ser 1 lógico, O lógico o el estado de alta _ _ (tensión, impedancia). .. .. Figura 3.18. Solución: La salida de un dispositivo lógico de tres estados puede ser ALTA, BAJA, o un estado de alta im­ pedancia. http://librosysolucionarios.net .... La.-. =..... -- '~ ~ ~l'!!:II: DISPOSITIVOS DIGITALES BASICOS spositivos de tres pedancia (estado nectada o aislada ~. Este transcep­ t.1quier dirección. ¡ de datos de un ica los transcep­ de verdad de la I DIR controla la terminal A es la da DIR significa Ilivel BAJO en la ivel ALTO en la I 57 3.33. Acudir a la Figura 3.18. El transceptor es un buffer del bus de tres estados que puede pasat datos en _ _ (ambas, una) dirección. Solución: El transceptor de la Figura 3.18 puede pasar datos en cualquier dirección (de A a B o de B a A) dependiendo del nivel lógico en el control DlR. 3.34. Acudir a la Figura 3.18. Si el control de habilitación del transceptor (V) está en ALTA, ¿pasarán los datos por los buffers? Solución: No. Con el control de habilitación del transceptor en ALTA, los terminales de datos A y B están aislados y ningún dato puede pasar en ninguna dirección. 335. La puerta del buffer del bus de la Figura 3.19 tiene una entrada de habílitación activa en _ _ (ALTA, BAJA). Solución: El buffer del bus de la Figura 3.19 tiene una entrada de habilitación activa en BAJA. Entradas Salida ,1 Operación [)ato B a bus A O O f e d O O • '! a e I A I O O )atO A a bus B Figura 3.19 Problema del buffer del bus de tres estados. ¡lamiento (alta Z) 3.36. Acudir a la Figura 3.19. Listar las salidas de la puerta del buffer del bus durante cada uno de los seis pulsos de entrada. Solución: Las salidas de la puerta del buffer del bus de la Figura 3.19 durante cada uno de los seis pulsos de entrada son: durante el pulso d - estado de alta Z (puerta durante el pulso a - 1 (puerta habilitada) inhabilitada) , durante el pulso b = O (puerta habilitada) durante el pulso e "" O (puerta habilitada) durante el pulso e = estado de alta Z (puerta inhabilitada) durante el pulso f = I (puerta habilitada) ice o el estado de 3.6. MEMORIAS SEMICONDUcrORAS L~deaIUim- El flip-flop, o cerrojo, es la celda bdsica de memoria utilizada en muchas memorias semiconduc­ toras. Las memorias semiconductoras habitualmente se dividen en dos grupos: memorias de lectura/escritura y memorias de sólo lectura (ROM), Los nombres implican las diferencias entre http://librosysolucionarios.net 58 fUNDAMENTOS DE LOS MICROPROCESADORES los dos tipos de memoria. Una ROM es una memoria no volátil con su patrón 6inario de ceros y unos programados permanentemente por el fabricante. La memoria de lectura/escritura es una memoria que puede ser fácilmente programada, borrada y reprogramada por el usuario. La programación se denomina escribir en memoria. Copiar datos de la memoria. sin destruir el contenido, se denomina leer de memoria. La memoria de lectura/escritura se denomina RAM (memoria de acceso aleatorio), con frecuencia. Generalmente, el programa de la RAM es volátil, lo cual significa que se perderá si se desconecta la alimentación del CI, incluso durante un instante. Los sistemas microcomputadores normalmente contienen los dos tipos de memorias semiconductoras ROM y RAM. Las posiciones de almacenamiento ROM y RAM están habitual­ mente en CI separados. Existen actualmente cuatro posibilidades de memorias de sólo lectum. La ROM estándar es programada por el fabricante. La PROM (memoria de sólo lectura programable) puede ser pro­ gramada permanentemente por el usuario o distribuidor utilizando un equipo especiaL Puede ser programada solamente una vez. La EPROM (memoria de sólo lectura programable borrable) puede ser programada y borrada por el usuario. Los datos almacenados en la EPROM pueden ser borrados aplicando luz ultravioleta de alta intensidad, a través de una ventana especial transpa­ rente, en la parte superior del CI. Otra PROM borrable es la EAROM (memoria de sólo lectura alterable eléctricamente) que puede ser borrada y programada por el usuario con un equipo especial. La EAROM se borra eléctricamente y no con luz ultravioleta. La ROM, PROM, EPROM YEAROM son considemdas memorias no volátiles permanentes y no pierden sus datos cuando se desconecta la alimentación del CL Las memorias -RAM se subdividen en dos grupos. Si la memoria de lectura/escritura contiene circuitos tipo «flip-flop» como celdas de memoria, se denomina RAM estática (SRAM). Una forma más simple de la celda de memoria de lectura/escritura es la base de la RAM dinámica (DRAM). Debido a que la celda de memoria de la RAM dinámica está basada en una capacitan­ cia, las celdas deben ser refrescadas cientos de veces por segundo. La RAM estática no necesita refrescarse y mantiene su información binaria, indefinidamente, todo el tiempo que esté alimen­ tado el CI. Las RAM dinámicas tienen mayor capacidad y menos consumo de potencia que las estáticas. Un dispositivo de memoria semiconductom más moderno es la RAM no volátil (NVRAM). La NVRAM combina RAM estáticas y PROM borrables eléctricamente (EEPROM) de idéntica capacidad. Los datos pueden ser transferidos entre la SRAM y la EEPROM y viceversa mediante operaciones de almacenamiento y rellamada. Los datos pueden almacenarse con seguridad en la EEPROM no volátil cuando se desconecte la alimentación. Cuando se conecta la alimentación, los datos de la EEPROM son rellamados automáticamente a la sección SRAM de la RAM no volátil. El concepto de RAM no volátil también está implementado por los fabricantes de micro­ computadoras utilizando pastillas comunes de RAM con una bateIia de seguridad. En microcomputadoras, las RAM se utilizan para almacenamiento temporal de programas y datos del usuario. Las ROM son utilizadas más frecuentemente pam almacenar instrucciones del lenguaje máquina que pueden considerarse el programa monitor. El programa monitor puede contener rutinas de inicialización no modificables, rutinas de entrada/salida y algoritmos aritméticos. f 1 3.37 S -:1:1< 3.31. 1..; .. Se¡ l.l9. LI So !Al. La vol Sal JJnII 3.41. La SIl .~ 3.42. Las SeII I ~ 3.·0. uf Sal ~ J.44. La Del !W n:p J.45. La SiII http://librosysolucionarios.net , binario de ceros y ra/escritura es una Xlr el usuario. La ría. sin destruir el r denomina RAM la RAM es volátil, lcluso durante un tipos de memorias \M están habitual- I ROM estándar es ~/e) puede ser pro­ especial. Puede ser ~amable borrable) PROM pueden ser I especial transpa­ na de sólo lectura io con un equipo ..a ROM, PROM, I pierden sus datos 'escritura contiene ica (SRAM). Una la RAM dinámica en una capacitan­ ~tica no necesita o que esté alimen­ e potencia que las ro/átil (NVRAM). ROM) de idéntica 'ÍC'e\ersa mediante :)0 seguridad en la I ]a alimentación, M de la RAM no ncantes de micro­ idad. ~ de programas mar instrucciones I!"ngrama monitor ja y algoritmos DISPOSITIVOS DIGITALES BAS1COS 59 PROBLEMAS RESUELTOS 3.37 En la práctica, la memoria de lectura/escritura se denomina _ _ (RAM, ROM). Solución: En la práctica, la memoria de lectura/escritura se denomina RAM. 3.38. Las letras RAM significan _________ en electrónica digital. Solución: Las letras RAM significan memoria de acceso aleatorio. En la práctica las RAM semiconducto­ ras también son memorias de lectura/escritura. 3.39. Las letras PROM significan _ _ _ _ _ , ___ , Solución: Las letras PROM significan memoria programable de sólo lectura. 3.40. La ROM y la _ _ (RAM, PROM) son dispositivos de almacenamiento permanente no volátiles. Solución: La ROM Y la PROM son dispositivos de almacenamiento permanente no volátiles. La ROM es programada por el fabricante mientras que la PROM es programada por el usuario. 3.41, La RAM es un dispositivo de almacenamiento ___ (no volátil, volátil). Solución: La RAM es un dispositivo de almacenamiento volátil. 3.42. Las letras EPROM significan _ _ _ ---i... _ _'_ _ _ _ en electrónica digital. Solución: Las letras EPROM significan memoria de sólo lectura programable borrable. 3.43. Las letras EAROM significan _ _ _ _ _ _ _ _ _ _ . Solución: Las letras EAROM significan memoria de sólo lectura alterable eléctricamente. 3.44. La EPROM se considera un dispositivo de almacenamiento _ _'_ (temporal, perma­ nente). Solución: La EPROM se considera un dispositivo de almacenamiento permanente. Puede ser borrada y reprogramada pero solamente con equipo especial. 3.45. Las memorias de lectura/escritura muchas veces se denominan RAM estáticas o ___ . Solución: Las R WM muchas veces se clasifican como RAM estáticas o dinámicas. http://librosysolucionarios.net '. 60 FUNDAMENTOS DE WS MICROPROCESADORES 3.46. La RAM _ _ (dinámica, estática) utiliza como celdas de memoria circuitos basados en flip-flops. Solución: La RAM estática utiliza como celdas de memoria circuitos basados en flip-flops. esaittml. 11 la direccióI las entrada Ir:ctura. el j 3.47. La RAM ___ (dinámica, estática) necesita que sus posiciones de almacenamiento sean refrescadas cientos de veces por segundo. Solución: La RAM dinámica necesita que sus posiciünes de almacenamiento sean refrescadas cientos de veces por segundo. 3.48. En una microcomputadora, una PROM puede ser utilizada para que contenga un progra­ ma _ _ (monitor, de usuario temporalmente). Solución: En una microoomputadora,una PROM puede utilizarse para que contenga un programa monitor. 3.49. ',1 i . Las letras NVRAM significan _ _ . Solución: Las letras NVRAM significan RAM no volátil. 3.50. Las más modernas NVRAM contienen RAM estáticas y _ _ (DRAM, EEPROM). Solución: Las NVRAM contienen SRAM y EEPROM de idéntica capacidad. 3.7. UTlLIZAOON DE LAS RAM Y ROM La organización de una RAM o ROM puede considerarse similar a la de una tabla de verdad. La Figura 3.20a muestra una posible organización de las posiciones de memoria. Esta tabla represen­ ta la organización de una RAM de 16 x 4 bits e indica que los datos de la memoria están organi­ zados en 16 grupos de 4 bits denominados palabras en esta tabla. En la Figura 3.20a, la mayoría de las cajas (celdas de memoria) están vacías excepto la palabra 12 que contiene almacenado el dato O1Ol. En la práctica, cada celda «vaCÍa» contiene algún patrón de ceros y unos. Un símbolo lógico para una RAM de 16 x 4 bits se da en la Figura 3.20b. En el diagrama, la RAM de 64 bits está en el proceso de escribir el dato de entrada 0101 en la posición de memo­ ria 12 10 (1100 2), Las entradas de datos contienen el dato que se va a almacenar (0101 2), La posición de la palabra 1210 se localiza inicializando las entradas de dirección con 1100 2 (12 10), A continuación, los dos controles «(3' y WE) colocan a la RAM en el modo de escritura. Observar que las entradas de habilitación de escritura (WE) y de selección de pastilla «(3') deben estar en BAJA durante la operación de escritura. El 0101, se coloca entonces en la palabra de posi­ .ción 12 10, como muestra la Figura 3.20a. Algunos nibricantes denominan a la entrada de control (3' habilitación de memoria. La tabla de verdad para la RAM de 64 bits está detallada en la Figura 3.20c. Esta RAM está en el modo de escritura cuando ambos controles (WE y C3') están en BAJA. Durante la operación de http://librosysolucionarios.net '~ ,j DISPOSITIVOS DIGITALES BASICOS itos basados en 61 escritura, los 4 bits de datos (D 4 , D 3, D 2 , DI) son cargados en la posición de memoria seftalada por la dirección. Durante la operación de escritura, las salidas (04' 0 3, O2, D,) flotan en ALTA. Con las entradas de control = O Y WE = 1, la RAM está en el modo de lectura. Durante el modo de lectura, el complemento de la palabra del dato señalada por las entradas de dirección aparece en rs Iops. ICenamiento sean Dirección i-escadas cientos de Palabra O b~ un progra­ Palabra 1 Bit D Bit e Bit B Bit A Palabra 2 alga un programa Palabra 3 .­ ., Palabra 4 1 Palabra 5 . Em»ROM). I Ibla de verdad. La sta tabla represen­ IOria están organi­ 3.20a. la mayoría De almacenado el , unos. En el diagrama, la [)Sición de memo­ cenar (0101 2), La ¡)n 1100 (12 ), A 10 2 scrilura. Observar :5) deben estar en I palabra de posi­ :nlrada de control Esta RAM está en lte la operación de I Palabra 6 Palabra 7 Palabra 8 Palabra 9 . Palabra lO Palabra 11 Palabra 12 O I O I Palabra 13 ~ Palabra 14 1 Palabra 15 • (a) Organización de una RAM de 16 x 4 bits Figura 3.20. http://librosysolucionarios.net 1 'í , .~ f 62 FUNDAMENTOS DE LOS MICROPROCESADORES o D4 °4 DJ O] Entradas de datos O D2 DI Habilitación de escritura Selección O) O Escritura = ( Lectura I LaRJ Salidas Entradas te pequei comprad En la Salidas de datos (invertidos) 16x4bit RAM de gran 65.536 x ten en el Vn e mantenin das y saJjc es leida ( selección Algun 8192x8: WE O) Habilita memoria = de pastilla ( Inhabilita memoria = 1 O í . -.;,, , ¡ J capacidad H ¡ j; ~ . (b) Símbolo lógico para una RAM de 16 x 4 bits 3.51. la ra) ¡. Sol _l j' ji ti JI Entradas de control Modo de operación es WE Escritura O O Estado lógico I Lectura O I Complemento del dato almacenado en memoria Manteni­ miento 1 X Estado lógico I 1¡ t~;1 I '¡ sdI Salidas Q ;~ ! .'" JIf: !'¡¡ :;'J ~i , ,t, 'r' 'l ~. t" x ~ irrelevante (e) ,• ~ í U Tabla de verdad para una RAM de 64 bits U Figura 3.20 (continuaci6n). la saJida. Los datos almacenados en la RAM no son destruidos por la operación de lectura. En el modo de mantenimiento (hold) las salidas van todas al nivel ALTO y no entra ningún dato procedente de las cuatro entradas D. http://librosysolucionarios.net L T· .1 ¡ ~.. 63 DISPOSITIVOS DIGITALES BASICOS datos kls) La RAM de 64 bits de la Figura 3.20 es una pastilla de memoria de capacidad extremadamen­ te pequeña y se cita por su simplicidad. Sin embargo, esta RAM estática de 16 x 4 bits puede ser comprada todavía como un circuito integrádo TTL (lógica transistor-transistor) (el 7489). En la pasada década, se realizaron grandes avances para producir memorias semiconductoras de gran capacidad a bajo costo. Las RAM dinámicas comunes pueden ser de 16.384 x 1; 65.536 x 1; 131.072 xl; 1.048.576 x 1; 16.384 x 4; 65.536 x 4, y 262.144 x 4 bits. También exis­ ten en el mercado módulos de RAM dinámicas incluso con capacidades mayores. Un CI ROM opera de forma similar a la RAM cuando está en los modos de lectura y mantenimiento (hold). Una ROM comparable a la de la Figura 3.20 puede tener todas las entra­ das y salidas de la RAM excepto las entradas de datos y de habilitación de escritura. Una palabra es leída de la ROM direccionando una posición espeCífica y activando después la entrada de selección de pastilla (C'S) con un nivel BAJO. Algunas organizaciones típicas y capacidades de CI ROM son: 512 x 4; 2048 x 8; 4096 x 8; 8192 x 8; 16.384 x 8; 65.536 x 8, y 131.072 x 8 bits. Algunos módulos EEPROM tienen incluso capacidades mayores. PROBLEMAS RESUELTOS 3.51. La RAM de 64 bits de la Figura 3.21 está en el modo de _ _ (mantenimiento, escritu­ ra) durante el pulso a, y todas las salidas están flotando en _ _ (ALTA, BAJA). Solución: Durante el pulso a en la Figura 3.21, ambos controles (eS y WE) están en ALTA. La tabla de selección de modo de la Figura 3.20c indica que éste es el modo de mantenimiento para la RAM y las salidas están flotando en ALTA. Salidas Entradas L2....:: ,,'; ~ ", r, ~ ;" , 1 1 O O O I .1 ~ u.: 1 O O O O d e a O O h g f e O O O O O O b O O O O O O O O 0­ 1 O O I O O 0­ O O O 0_ °2 °1 16 x 4 bits _ RAM O O D4 u...:: O O . O - Al Ao ! ., .~, 8 4 2 Dirección de lectura. En el Itra ningún dato Figura 3.21. Problema de la RAM estática. http://librosysolucionarios.net ..-.~ 64 AJNDAMENTOS DE LOS MICROPROCESADORES s 3.52. La RAM de la Figura 3.21 está en el modo de _ _ (lectura, escritura) durante los pulsos b, e, dy e. •a Solución: Durante los pulsos b, e, d y e en la Figura 3.21, ambos controles (CS y WE) están en BAJA. La tabla de selección de modo de la Figura 3.20c indica que éste es el modo de escritura para la RAM. Los datos de las entradas D se copian en la posición de memoria direccionada por las entradas A durante estos cuatro pulsos. e; ;;~ ~.~ 3.53. La RAM de la Figura 3.21 está en el modo de _ f, g. he i. :-~ (lectura, escritura) durante los pulsos ,,1 3.57. Sil Solución: Durante los pulsos f, g. h e í en la Figura 3.21, CS ~ O Y WE - 1. La tabla de selección de modo de la Figura 3.20c indica que éste es el modo de lectura para la RAM. Los datos almacenados en la posición de memoria sefialada por las entradas de dirección aparecerán en las salidas en forma invertida. La operación de lectura no destruye los contenidos de la RAM. 3.54. Acudir a la Figura 3.21. Listar la dirección y los datos almacenados el} la RAM durante la operación de escritura en los pulsos b. e, d y e. h. 1.!1. u. 1ab ~ l.!I9. Aa Solución: 01 Las posiciones de almacenamiento (direcciones) y los datos almacenados durante cada operación de escritura son los siguientes: pulso b .. dirección = 0000; dato almacenado - 1111 pulso e = dirección = 0001; dato almacenado - litO pulso d .. dirección - 00 10; dato almacenado .. 1101 pulso e .. dirección - 00 11; dato almacenado - 1100 hJ 3.55. Acudir a la Figura 3.21. Listar la dirección y los datos que aparecen en las salidas de la RAM durante la operación de lectura en los pulsos f, g. h e i. Solución: La posición de almacenamiento (dirección) y los datos de salida durante cada operación de lectura son: pulso f .. dirección" 0000 dato almacenado .. 1111 dato de salida (invertido) .. 0000 pulso g .. dirección .. 000 I dato almacenado .. 1110 dato de salida (invertido) .. 0001 pulso h = dirección = 00 10 dato almacenado = 110 1 dato de salida (invertido) .. oo'to pulso i - dirección = 1111 dato almacenado - no había dato almacenado en esta dirección dato de salida .. desconocido (la salida será impredictible) 3.56. Si la RAM de la Figura 3.21 fuese una ROM, ¿qué entrada(s) se omitiría(n) del diagrama lógico? http://librosysolucionarios.net .. 3.68. Aa NA 3.61. Aa XCJ Re 3.62. 3.63. LOI RIJ DISPOSITIVOS DIGITALES BASICOS Die los pulsos , IStán en BAJA. La tura para la RAM. por las entradas A Solución: La RAM de la Figura 3.21 puede convertirse en un símbolo lógico de ROM, omitiendo las entradas de datos y de habilitación de escritura. Una ROM la programa permanentemente el fabri· cante y no tiene modo de escritura. IDrante los pulsos PROBLEMAS SUPLEMENTARIOS 3.57. Si los flip.flops están interconectados para formar circuitos lógicos secuenciales, entonces las~ t lit'lección de modo almacenados en la i salidas en forma ~ RAM durante la l...: ope,,~o. I las salidas de la _ _ son utilizadas para formar circuitos lógicos combinacionales. Res. puertas lógicas. 3.58. Una función lógica puede ser descrita de cuatro formas: por su nombre, su símbolo lógico gráfico, su tabla de verdad o su expresión _ _ . Res. booleana. 3.59. Acudir a la Figura 3.22. Describir el tren de pulsos en la salida Y si este circuito lógico es una puerta OR de 2 entradas. Res. pulso a - O, pulso b - 1, pulso e - 1, pulso d == l. Salida Entradas ll..!.JIl....2. ~ e a d Ida operación de D) 65 b O 0­ Figura 3.22. A Circuito B lógico y ? Problema del tren de pulsos.'''''' 3.60. Acudir a la Figura 3.22. Describir el tren de pulsos en la salida Y si este circuito lógico es una puerta NANO de 2 entradas. Res. pulso a." 1, pulso b - 1, pulso e - 1, pulso d - O. 3.61. Acudir a la Figura 3.22. Describir el tren de pulsos en la salida Y, si este circuito lógico es una puerta XOR de 2 entradas. Res. pulso a == O, pulSO b == 1, pulso e == 1, pulso d == O. 3.62. Los microprocesadores ¿qué cuatro instrucciones lógicas tienen en su conjunto de instrucciones? Res. NOT (complementación o negación), ANO. OR Y XOR. del diagrama 3.63. Escribir la expresión booleana para la tabla de verdad de la Figura 3.23. Res. c· B . A + e . B ' A - Y. http://librosysolucionarios.net ,~i , J 66 FUNDAMENTOS DE LOS MICROPROCESAOORES Entradas Salida e B A Y o o o o o o o o o 1 I I 1 1 1 o l~~¡ 1 o o o 1 l ~~ . ':'1 l o o o o o 1 l 1 1 1 .­ 3M. LisI:I uno Res. Figura 3.23. 3.64. Dibujar el diagrama lógico de un circuito que genere la tabla de verdad de la Figura 3.23. Res, Ver Figura 3.24. 3.70. Losl ... Res. 3.71. UD1 ....... Res. Salida ~", 3.72. Ac:ucI estar Entradas Res. A~~~~------r-~ B ~----~ 3.73. Las I c----~------~~ Figura 3.24. Res. Solución del diagrama lógico ANO-OR. 3.74. 3.65. Poner en set un flip-flop significa cargar un I en la salida normal 0 __ (Q, ea. salid.1 Res. Q). Res. Q. 3.75. Cuu pena alta_ 3.66. Poner en reinicialización un flip-flop significa cargar un O en la salida _ _ (Q, Q). Res. Q, Res. 3.67. Cuando a un flip-flop se denomina cerrojo, se utiliza como dispositivo de _ _ (conteo, me­ moria). Res. memoria. '. 3.68. ~n-j ~ Listar el modo de operación del flip-flop JK durante cada uno de los pulsos de reloj de la Figu­ ra 3.25. Res. pulso a - reset pulso c - conmuta pulso e - conmuta pulso f = mantenimiento pulso b conmuta pulso d = set http://librosysolucionarios.net 3.76. Listal cornil Res. 3.77. Una perm Res. j 67 DISPOSITIVOS DIGITALES BASICOS f." . o O O O Figura 3.29. Salidas Entradas .').t - -- J Q ? Q ? _\O. FF CK K Problema del f1ip-f1op JK. 3.69. Listar las salidas binarias en la salida normal (Q) del flip-flop JK de la Figura 3.25 después de cada uno de los pulsos de reloj. Res. pulso a - O pulso c - O pulso e == O pulso b == 1 pulso d .. 1 pulso f O ~. 13 3.23. , .j 3.70. Los traductores de código electrónico normalmente se denominan _ _ o _ _ . Res. codificadores, decodificadores. 3.71. Un visualizador LED de siete segmentos puede ser excitado por un dispositivo llamado _ _ a-siete-segmentos. Res. decodificador BCD. • .4- Y 3.73. Las letras TTL significan _ _ _ _ - _ _ en electrónica digital. Res. lógica transistor-transistor. .'j :.j 3.74. Cuando los dispositivos TTL o CMOS se conectan a las líneas del bus de la microcomputadora, las salidas deben ser del tipo de _ _ _ _ . Res. tres estados. 'lA t conteo. me­ reloj de la Figu­ ~ 3.72. Acudir a la Figura 3.15c. Para que luzca el segmento d del LEO. la entrada d del visualizador debe estar excitada en _ _ (ALTA, BAJA) por el decodificador. Res. BAJA. '''iI j 3.75. Cuando la salida de un dispositivo TTL de tres estados no está ni en O lógico ni en 1 lógico, pero se le permite que flote al nivel de tensión de la línea del bus, se dice que está en el estado de alta _ _ . Res. impedancia (Z). ­ 1 1 3.76. Listar los dos tipos de memorias semiconductoras normalmente utilizados en los sistemas micro­ computadores. Res. RAM y ROM. 3.77. Una ROM y una permanentes. Res, PROM. (PROM, RAM) son muy similares, ya que ambas son tipos de memoria http://librosysolucionarios.net , ~ ~'1 t 68 RlNDAMENTOS DE LOS MICROPROCESADORES 3.78. Colocar datos en memoria se conoce como operación de _ _ (lectura, escritura). Res. escritura. 3.79. Copiar datos de memoria se conoce como operación de _ _ (lectura, escritura). Res. lectura. '1 . : 3.80. En la práctica, las letras usadas para denominar una memoria semiconductora de lectura/escritura son _ _ (EPROM, RAM). Res. RAM. 3.81. ¿Qué dos tipos básicos de CI RAM pueden adquirirse? Res. estáticos y dinámicos. 3.82. Los programas de usuario pueden almacenarse temporalmente en la _ _ (EPROM, RAM) de una microcomputadora. Res. RAM. 3.83. ¿Cuál es la longitud de cada palabra de una RAM de 256 x 4 bits? Res. 4 bits. 4.1. lN1 Más de I.AIq 2. RqJ 3. MíIl 4. Señ: 3.84. ¿Cuántas palabras de datos puede contener una ROM de 32 x 8 bits? Res. 32. .3.85. ¿Cuál es la capacidad total en bits de una EAROM de 512 x 8 bits? Res. 4096 bits. 'Ve Muchas m. sistemas m tadora gene de las ca.r3( Ante U[ 5. FUD La arqu bits de los t Elreper1 sador, dond de comprol utilizan di,! El esquc dispositivos. puenos de f funciones SI: procesadora Las seña ejemplo RII lecturas y e!I Un esru. especiales d. E/S de dato 4.2. A~ La arquited operaciones http://librosysolucionarios.net Capítulo 4 FUNDAMENTOS DE LAS MICROCOMPUTADORAS lectura/escritura M, RAM) de una r 4.1. INTRODUCaON Más de veinte compañías fabrican gran variedad de microprocesadores de propósito general. Muchas más compañías ensamblan microprocesadores, memorias y otros componentes de los sistemas microcomputadores. Debido a esta gran variedad, se ha seleccionado una microcompu­ tadora genérica para estudiarla en este capítulo. Esta microcomputadora universal tiene muchas de las características de las mícrocomputadoras comunes. Ante un nuevo microprocesador, el programador debe estudiar lo siguiente: l. 2. 3. 4. 5. Arquitectura del microprocesador. Repertorio de instrucciones. Mínimo sistema que utiliza el microprocesador. Señales de control. Funciones de las patillas. La arquitectura está relacionada con la organización de los registros de la CPU, número de bits de los buses de direcciones y datos, etc. El repertorio de instrucciones es el conjunto de operaciones que puede realizar el microproce­ sador, donde se incluyen transferencia de datos, operaciones aritméticas y lógicas, instrucciones de comprobación de datos y bifurcación y operaciones de entrada/salida. Estas instrucciones utilizan diversos modos de direccionamiento. El esquema de un sistema mínimo mostrará cómo se conectan al microprocesador otros dispositivos. Un sistema mínimo puede estar formado por microprocesador, reloj, RAM, ROM, puertos de entrada/salida, decodificador de direcciones y fuente de alimentación. A veces estas funciones son realizadas por el o componentes separados; sin embargo, algunas unidades micro­ procesadoras pueden realizar la mayoría de estas funciones. Las señales de control incluyen las salidas que controlan la operación de otros el (como por ejemplo RAM, ROM Y puertos de E/S). Algunas señales de control típicas pueden controlar lecturas y escrituras en memoria o lecturas y escrituras de entrada y salida. Un estudio de la función de cada patilla del el dará más detalles sobre las entradas y salidas especiales del microprocesador. Otras patillas pueden ser las de la fuente de alimentación, reloj, ~ 'S de datos serie, entradas de interrupción y control del bus. 4.2. ARQUITEcrtJRA SIMPLIFICADA DE UNA MICROCOMPUfADORA La arquitectura de una microcomputadora se muestra en la Figura 4.1. En el centro de todas las operaciones está la MPU (unidad microprocesadora). La MPU necesita conexiones con la fuente 69 http://librosysolucionarios.net ) 70 FUNDAMENTOS DE LOS MICROPROCESADORES () (1 () Teclado (¡ () .'"­ .: ¡ - .~ 1 - ~J , --tIo> ( .. \ ..:'", Interfaz del teclado ---.... 1 Línea de interrupciones :1 I ¡. ¡ Decodificador ~ (t ~~_.~ ........... MPU ~ ~ Fuente de alimentación RAM. ~ + Bus de direcciones _ (16 líneas) r Reloj 1 ~ r 1 - Bus de control Bus de datos (8 líneas) ~ --tIo> ,.) ROM ---fIo> ~ 1" ~ ) --+ l alimentación ""'Í-­ <1 " I ~j. 1 r - , r--, Visua­ 1---4 1---1 Iizador L ...i L_.J I I I Figura 4.1. • t CDtonces, aHIIiI CIl . Interfaz del visualizador I r-' r-" J II I I---/I--'¡ , ,1 I L • .JI..._..J r Arquitectura de una microcomputadora. http://librosysolucionarios.net J El sistema 11 Las conexiones especial denoml entradas del te( linea de imemil la instrucción a UlStrucciones di circuito de intel para activar la l. ::-us de datos. u de tres estados 1 La miCl'OCOl ~entos. El v especial de inJt'I ~ de la Figura .le habilitación. la interfaz di Las 16 linea _nos. Las líoe :-:nplo. R -\\1. ~ ---to--¡\ .\ +-- Líneas de ~ y Líneas de selección de pastilla r-­ RAM de alimentaciót microprocesad( direcciones de I conectan al bU!. La arquitec1 nas semicondu grama monitor de pastilla y <14 estados, conect tiende que la R se omitan en le La arquitec1 miento tempor. de selección de de tres estados . palabras de 8 t Jtrrod~flcado : decodificad! -_~ti\O corn 'I:J:!C al decodific FUNDAMENTOS DE LAS MICROCOMPUTAOORAS io---<4­ Fuente de alimentación _ Bus de datos (8 líneas) - - Líneas de alimentación 71 de alimentación y el reloj. El reloj puede ser un circuito separado o puede residir en la pastilla del microprocesador. Una sencilla MPU puede tener 16 líneas de dirección que forman el bus de direcciones de un sentido. La MPU también tiene las 8 líneas típicas de datos, con buffers que se conectan al bus de datos de dos sentidos. La arquitectura de la microcomputadora mostrada en la Figura 4.1 tiene dos tipos de memo­ rias semiconductoras. La ROM es la memoria permanente, que probablemente contiene el pro­ grama monitor del sistema. La ROM tiene las entradas de dirección junto a las líneas de selección de pastilla y de habilitación de lectura. También tiene la ROM 8 salidas, con buffers de tres estados, conectadas al bus de datos. Cada palabra de memoria tiene por tanto 8 bits. Se sobreen­ tiende que la ROM tiene también conexiones a la fuente de alimentación aunque muchas veces se omitan en los diagramas de bloques. La arquitectura de la Figura 4.1 muestra también una RAM como dispositivo de almacena­ miento temporal de lectura/escritura. La RAM tiene las entradas de dirección junto a las entradas de selección de pastilla y de habilitación de lectura/escritura. La RAM tiene 8 salidas, con buffers de tres estados, conectadas al bus de datos. Esta RAM introduce, saca y almacena los datos corno palabras de 8 bits. También se muestran las conexiones de la fuente de alimentación de la RAM. El sistema microcomputador de la Figura 4.1 tiene un teclado corno dispositivo de entrada. Las conexiones de alimentación al teclado se muestran junto con las líneas de datos en un CI especial denominado interfaz de teclado. El circuito de interfaz almacena los datos y coordina las entradas del teclado. En el instante adecuado, la interfaz de teclado interrumpe la MPU vía la línea de interrupción especiaL Esta senal de interrupción hace que la MPU ( 1) termine de ejecutar la instrucción actual, (2) suspenda la operación normal y (3) bifurque a un grupo especial de instrucciones del programa monitor que manipulan la entrada de datos desde el teclado. El circuito de interfaz del teclado tiene entradas de dirección, de selección de pastilla y de control para activar la unidad. Una vez activada, la interfaz de teclado pondrá los datos del teclado en el bus de datos. La MPU acepta los nuevos datos de entrada, vía el bus de datos. Cuando las salidas de tres estados no están activadas, vuelven a su estado de alta impedancia. La microcomputadora de la Figura 4.1 utiliza corno salida un grupo de visualizadores de siete segmentos. El visualizador está conectado a la fuente de alimentación de la derecha. Un circuito especial de interfaz de visualizador o CI se utiliza para almacenar datos y excitar los visualizado­ res de la Figura 4.1. Cuando son activados por las entradas de dirección, de selección de pastilla y de habilitación, la interfaz acepta los datos del bus de datos y los almacena. La interfaz excita entonces, continuamente. los visualizadores, mostrando de forma visual los datos almacenados en la interfaz del visualizador. Las 16 líneas del bus de direcciones pueden contener 65.536 (2 16) diferentes patrones de ceros y unos. Las líneas del bus de direcciones pueden estar conectadas a varios dispositivos corno, por ejemplo, RAM, ROM e interfaces. Para conectar o habilitar solamente el dispositivo ordenado, un decod(ficador de direcciones muestrea datos en el bus de direcciones. La lógica combinacional del decodificador de direcciones activa la línea adecuada de selección de pastilla, habilitando el dispositivo correcto. Para simplificar la circuitería, no todas las 16 líneas del bus de direcciones van al decodificador de direcciones, memorias o interfaces. http://librosysolucionarios.net ~ 72 FUNDAMENTOS DE LOS MICROPROCESADORES PROBLEMAS RESUELTOS 1; 4.1. -1 4.8. Soluciól Segú tes del b nientes j Acudir a la Figura 4.1. La _ _ (MPU, RAM, ROM) sirve como centro de todas las operaciones y control de la microcomputadora. Solución: La MPU sirve como centro de todas las operaciones y control de la microcomputadora. Sin embargo, las instrucciones de la ROM y/o RAM guían las acciones del microprocesador. Acudir 4.9. Acudir: Soludáll: 4.2. Solución: El bus de direcciones es una ruta de datos de un sentido, desde la MPU a todos los dispositivos. M~ ~~I¡ Acudir a la Figura 4. l. El bus de _ _ (direcciones, datos) es una ruta de datos de un sentido. 4.3. Con 16 líneas, el bus de direcciones de la Figura 4.1 puede acceder hasta _ _ (16.384, 65.536) posiciones separadas de memoria y/o de entrada/salida. Solución: El bus de direcciones de 16 líneas de la Figura 4.1 puede acceder hasta 65.536 (2 16 ) posiciones de memoria. 4.4. Acudir a la Figura 4.1. Citar como mínimo tres tipos de salida de la unidad microprocesa­ dora. Solución: Según la Figura4.1, la MPU tiene salidas de bus de direcciones (l6Iíneas), del bus de datos (8 líneas) y del bus de control. 4.5. Acudir a la Figura 4.1. Citar como mínimo cuatro tipos de entradas a la unidad micropro­ cesadora. Solución: Según la Figura 4.1, la MPU tiene entradas de la fuente de alimentación, de reloj, de interrup­ ción y del bus de datos (8 lineas). 4.6. Acudir a la Figura 4.1. Citar como mínimo cuatro tipos de entradas a la ROM. Solución: Según la Figura 4.1, la ROM tiene entradas de la fuente de alimentación, entradas de dirección provenientes del bus de direcciones, una entrada de selección de pastilla y una entrada de habilita­ ción de lectura del bus de control. ~ 4.7. Acudir a la Figura 4.1. Citar la(s) salida(s) de la ROM. Solución: Según la Figura 4.1, la ROM tiene salidas del bus de datos de tres estados (8 lineas). http://librosysolucionarios.net Segút 4.10. Acudir; interfaz SoIIlCÍ6E Según ción. de 4 control d. 4.11. Acudir a teclado. Solucióa.: Según del bus de 4.12. ¿Cuál es! Figura 4.1 Solucióa.: El CÍl"C1I para envial 4.13. ¿Qué hac circuito d SoluciÓD: Cuand( (a) ComJ: (b) Suspe (e) Bifurc teclad 4.14. Acudir a J interfaz d, SolucWII: Según 11 tación, de 4 entrada de I FUNDAMENTOS DE LAS MICROCOMPUTADORAS ".8. Acudir a la Figura 4.1. Citar como mínimo cuatro tipos de entradas a la RAM. Solución: Según la Figura 4.1, la RAM tiene entradas de la fuente de alimentación, de dirección provenien­ tes del bus de direcciones, una entrada de selección de pastilla y entradas de lectura/escritura prove­ nientes del bus de control y entradas del bus de datos (8 líneas). otro de todas las ocomputadora. Sin rocesador. 73 ".9. Acudir a la Figura 4.1. Citar la(s) salida(s) de la RAM. Solución: Según la Figura 4. t la RAM tiene salidas del bus de datos de tres estados (8 líneas). ta de datos de un ·4.10. Acudir a la Figura 4.1. Citar como mínimo cinco tipos de entrada al circuito especial de interfaz del teclado. . a todos los dispo- Solución: Según la Figura 4.1, el circuito de interfaz del teclado tiene entradas desde la fuente de alimenta­ ción, de dirección desde el bus de direcciones, una entrada de selección de pastilla y entradas de control desde el bus de control y de datos desde el teclado. ~ ta _ _ (16.384, (1") posiciones de Acudir a la Figura 4.1. Citar como mínimo dos tipos de salida del circuito de interfaz del teclado. Iad microprocesa­ Solución: Según la Figura 4.1, el circuito de interfaz del teclado tiene una salida de interrupción y salidas del bus de datos de tres estados (8 líneas). t ~1), del bus de datos ".11. ".12. ¿Cuál es el propósito de la salida de interrupción del circuito de interfaz de teclado de la Figura 4.1? Solución: El circuito de interfaz de teclado de la Figura 4.1 activa la línea de interrupción cuando está lista para enviar datos de entrada desde teclado a la MPU. ~ unidad micropro­ ".13. ¿Qué hace la MPU cuando la línea de interrupción de la Figura 4.1 es activada por el circuito de interfaz de teclado? Ir reloj, de interrup- Solución: Cuando la línea de interrupción de la Figura 4.1 es activada, la MPU hace lo siguiente: (a) Completa la instrucción que está ejecutando actualmente. (b) Suspende la operación normal. (e) Bifurca a un grupo especial de instrucciones que manipulan la entrada de datos desde el teclado. lla ROM. bdas de dirección mtrada de habilita- I I 8 lineas). 4.14. Acudir a la Figura 4.1. Citar como mínimo cinco tipos de entradas al circuito especial de interfaz del visualizador. Solución: Según la Figura 4.1, el circuito de interfaz del visualizador tiene entradas de la fuente de alimen­ tación, de dirección desde el bus de direcciones, de datos desde el bus de datos de 8 líneas, una entrada de selección de pastilla y entradas de control desde el bus de control. http://librosysolucionarios.net I I , 74 FUNDAMENTOS DE LOS MICROPROCESADORES 4.15. Acudir a la Figura 4.1. Citar las salidas del circuito especial de interfaz del visualizador. Solución: Según la Figura 4.1. el circuito de interfaz del visualizador tiene salidas de datos para excitar los visualizadores de siete segmentos. 4.16. ¿Cuál es el propósito del decodificador de direcciones de la Figura 4.1? Solución: El decodificador de direcciones de la Figura 4.1 selecciona y ayuda a habilitar un solo dispositivo corno, por ejemplo, la interfaz de teclado, R.OM, RAM o la interfaz del vísualízador. Representación hex o O O O H O O O H • 4.3. ORGANIZACION SIMPLIFICADA DE LA MEMORIA Escribir en o leer en una posición de memoria se denomina acceder a la memoria. Generalmente, el acceso a los datos de una memoria puede realizarse de forma secuencial o aleatoria. Los datos en la memoria de acceso secuencial se localizan buscándolos en forma serie a través de todas las posiciones de memoria. Por ejemplo, cuando los datos se almacenan en cinta magnética, hay que recorrer la cinta desde el principio al final hasta encontrar el dato apropiado. En una memoria de acceso aleatorio, cualquier posición de memoria puede ser escrita o leída en un tiempo determinado (llamado tiempo de acceso). Los dispositivos semiconductores de almacenamiento, RAM y ROM, utilizados en las microcomputadoras son del tipo más rápido de acceso aleatorio. La microcomputadora genérica que se ha estudiado tiene 16 líneas en el bus de direcciones. Esto es común en muchas pequefias microcomputadoras utilizadas para entrenamiento. Las 16 líneas de dirección pueden generar un total de 65.536 (2 16) combinaciones diferentes de ceros y unos. Algunas combinaciones binarias se muestran bajo el bus de direcciones de la Figura 4.2. Es costumbre representar la dirección binaria en forma hexadecimal; como muestra la Figura 4.2, la dirección 0000 0000 0000 0000:; es igual a OOOOH (0000 16), Observar el uso de la H para designar la representación hexadecimal. La dirección más alta generada por el bus de 16 líneas de la Figura 4.2 es III1 1111 III1 1111 2 que se representa por FFFFH (FFFF I6 ). El diagrama de la Figura 4.3 representa el mapa de memoria de la microcomputadora. El bus de direcciones de 16 bits del microprocesador puede generar 65.536 (10000 16 ) direcciones únicas, algunas de las cuales aparecen en notación hexadecimal en la columna izquierda de la Figura 4.3. En esta microcomputadora particular, las 256 primeras posiciones (100 16 ) se encuentran en la ROM. La ROM es, probablemente, de 256 x 8 bits (256 palabras, de 8 bits cada una). Si el bus de direcciones accede a la dirección OOOOH, la ROM presentará en la salida su patrón de ceros y unos programado permanentemente (la palabra 11000011). Es conveniente para los principiantes pensar que los 256 primeros bytes o palabras (100 16) de datos en la ROM de la Figura 4.3 están en la página ooH. Observar que el número de página es igual a la representación hexadecimal del byte de orden superior de la dirección (ver Fig. 4.2). Así cuando se trata de la página OOH, solamente es necesario considerar los dos dígitos hexadecimales de orden inferior. Algunos microprocesadores utilizan instrucciones simplificadas para acceder a las posiciones de memoria en la primera página (por ejemplo, el 6502, el 65816). El mapa simplificado de memoria de la Figura 4.3 muestra que desde la página OlH hasta la IFH (direcciones OIOOH· IFFFH) no hay memoria en esta microcomputadora. El acceso a esta http://librosysolucionarios.net ~ • • r "-;: A F F F E H F F F F H área abierta prod ningún dato. La : página 20H. de <lo( almacenamiento colocado la RA..\t y FFH, en esta mi de almacenamien Si un micropr ocho celdas de mI bus de datos. Des mente escritos set Físicamente la están organizadas. to más oscura de I RAM de la pági: uúlizan dos RAÑ página 20H de eS1 En la Figura 4. de la Figura 4.4.a dos CI para forma RAM de 256 x 4 I Figura 4.4c tamt: 256 x 8 bits. FUNDAMENTOS DE LAS MICROCOMPUTAOORAS 75 del visualizador. latos para excitar los I.f un solo dispositivo izador. ria. Generalmente, leatoria. Los datos través de todas las nagnética, hay que ~ ser escrita o leída miconductores de tipo más rápido de de direcciones. Iltrenamiento. Las iferentes de ceros y k la Figura 4.2. Es ra la Figura 4.2, la la H para designar de 16 líneas de la llIUS Ilputadora. El bus lirecciones únicas, la. de la Figura 4.3. encuentran en la I una). Si el bus de patrón de ceros y Jalabras (100 16 ) de mero de página es I (ver Fig. 4.2). Así tos hexadecimales ias para acceder a 16). @ina 01 H hasta la L El acceso a esta I área abierta producirá resultados impredecibles ya que no está almacenado ningún programa ni ningún dato. La memoria de lectura/escritura de la microcomputadora (RAM) se localiza en la página 20H, de acuerdo con el mapa de memoria de la Figura 4.3. La RAM es un dispositivo de aJmacenamiento de 256 x 8 bits. Los diseñadores del sistema microcomputador podían haber colocado la RAM en cualquier otra página. El acceso al área comprendida entre las páginas 21 H YFFH, en esta microcomputadora, producirá resultados impredecibles porque ningún dispositivo de almacenamiento está ubicado en esta área abierta. Si un microprocesador fuese a escribir en la posición de memoria 2000H de la Figura 4.3, las ocho celdas de memoria (bits) de la parte superior de la RAM se rellenarían con ceros y unos del bus de datos. Después, si el microprocesador fuese a leer en la dirección 2000H, los datos previa­ mente escritos serían leídos de la RAM. Físicamente la ROM de la Figura 4.3, probablemente, es un solo el. Sin embargo, las RAM están organizadas, con frecuencia, de forma diferente. En la Figura 4.3, el área de almacenamien­ to más oscura de la RAM está dividida en dos mitades. Esto sugiere que el área de memoria de la RAM de la página 20H está formada por dos el físicamente separados. En este ejemplo se utilizan dos RAM de 256 x 4 bits para formar el área de almacenamiento de 256 x 8 bits en la página 20H de esta microcomputadora. En la Figura 4.4 se muestran tres organizaciones físicas de el de RAM semiconductoras. El el de la Figura 4.4a está organizado como una RAM de 256 x 8 bits. En la Figura 4.4b se utilizan dos el para formar el mismo dispositivo de almacenamiento de 256 x 8 bits. Aquí se utilizan dos RAM de 256 x 4 bits para construir la palabra de 8 bits necesaria. Las ocho RAM mostradas en la Figura 4.4c también forman un dispositivo de almacenamiento de lectura/escritura de 256 x 8 bits. http://librosysolucionarios.net 7.6 FUNDAMENTOS DE LOS MICROPROCESADORES BiI Bit Bit S .. . BIt 6 7 256 bytes de ROM Direcciones abiertas (no memoria) 256 bytes de RAM Direcciones abiertas (no memoria) Figura 4.3. Diagrama simplificado de memoria mostrando las posiciones de la ROM y la RAM. La organización de CI mostrada en la Figura 4.4c se utiliza normalmente para construir grandes memorias de lectura/escritura. En general se utilizan CI de RAM de 1024 xl; 16.384 xl; 65.536 x 1, y 1.048.576 x 1. Utilizando la técnica mostrada en la Figura4.4c, son necesarias ocho RAM de 4096 x 1 bit son necesarias para formar una memoria de lectural http://librosysolucionarios.net ""4.4. 1 FUNDAMENTOS DE LAS MICROCOMPUT ADORAS 77 .. Bit Bit O Bit 1 Bit 2 Palabra de S-bits Palabra de 8-bits Bit 3 Bit 4 Bit 5 I Bit 6 7 . ROM Bit Bit 4 Bit 5 Bit 6 7 256 x4 RAM 256 x 8 bertas na) 256 x 4 (b) Bit M O /" Palabra de S-bits ria) f ICO Ocho RAM de 256 x 1 bit M V la RAM. (e) le para construir LM de 1024 x 1; son Doria de lectura/ 1 Figura 4.4c, Figura 4.4. Tres métodos de formar una memoria de lectura/escritura de 256 x 8 bits utilizando RAM semiconductoras. http://librosysolucionarios.net 78 FUNDAMENTOS DE LOS MICROPROCESADORES escritura de 4096 x 8 bits. Observar que en dicha configuración, las ocho RAM están activadas por la misma línea de selección de pastilla procedente del decodificador de direcciones. En un sistema microcomputador, la memoria se divide en bloques de IK. Una capacidad de IK no significa exactamente 1000, sino 28 o 1024 bytes de memoria (1024 x 1). Por tanto, 4K de memoria significan 4096 bytes (1024 x 4 = 4096). Si una microcomputadora comercial tiene 256K de memoria, realmente tendrá 262.144 (1024 x 256 262.144) posiciones de memoria de 8 bits cada una. La capacidad de memoria de las microcomputadoras comerciales actuales varía desde unos 64K a más de 1 millón (1 M) de bytes. Una capacidad de memoria de I M realmente significa 1.048.576 (1024 x 1024 = 1.048.576) bytes de memoria. , ~ ~: .. '.I ­ PROBLEMAS RESUELTOS 4.17. Escribir o leer en una posición de memoria de una microcomputadora se denomi­ na ___ (acceder a, encontrar la) memoria. Solución: Escribir o leer en una posición de memoria se denomina acceder a la memoria. 4.18. Las RAM y ROM utilizadas en las microcomputadoras son ejemplos de memorias de acceso _ _ (aleatorio, secuencial). Solución: Las RAM y ROM son ejemplos de memorias de acceso aleatorio. 4.19. Acudir a la Figura 4.2. Si la dirección en el bus de direcciones fuese 0010 0000 0000 0000, ¿a qué posición de memoria (número hexadecimal) accedería el microprocesador? Solución: El binario 00 10 0000 0000 0000 es igual a 20ooH. Se accedería a la posición de memoria 2000H si la salida del bus de direcciones fuese 00 I O 0000 0000 0000 de la Figura 4.2. 4.20. Acudir a la Figura 4.3. Si la microcomputadora direcciona la posición de memoria OOOIH, la_(RAM, ROM) sacará _ _ _ _ _ _ _ _ (8bits). Solución: De acuerdo' con el mapa de memoria de la Figura 4.3, la posición 0001 H de la ROM producirá la salida del dato almacenado permanentemente 0000000 l. 4.21. Acudir a la Figura 4.3. Si la microcomputadora accede a la posición de memoria 200IH y si el dispositivo de almacenamiento está en el modo de escritura, un (byte, nibble) de datos del bus de datos se colocará en la _ _ (RAM, ROM). Solución: De acuerdo con la Figura 4.3, la posición de memoria 200 I H está en una RAM cuyas palabras son de 8 bits (bytes). 4.22. Acudir a la Figura 4.3. ¿Qué salida aparecerá en el bus de datos si el microprocesador lee la posición de memoria FFFFH? http://librosysolucionarios.net SoluciÓll Dea la direcc 4.23. Lá_ SoluciÓII En 1, memoru 4.24. ¿En qw Solución laR orden su 4.25. OchoC ra 4.4c I memori SoluciÓD. laR 16.384 b 4.26. Acudir, de direc Soluc::iáll: UD b OOOOH a 8 bits: sir 4.27. Si una drá_ SoluciÓII: L'na bytes de I 4.4. REPER El grupo de ÍD repertorio de ;, variar desde ex estandarizados. de los microprc Las instrucc organizarán en 4 FUNDAMENTOS DE LAS MICROCOMPUTADORAS [ están activadas :ciones. na capacidad de ~or tanto, 4K de comercial tiene •de memoria de es actuales varía le I M realmente 79 / Solución: De acuerdo con el mapa de memoria de la Figura 4.3, ningún dispositivo de memoria reside en la dirección FFFFH, y por tanto la salida será impredecible. 4.23. La _ _ (RAM, ROM) se ha implementado utilizando solamente un CI. Solución: En la Figura 4.3 la ROM se ha implementado utilizando solamente un Cl. En este ejemplo la memoria de lectura/escritura se implementó utilizando dos CI RAM de 256 x 4 bits. 4.24. ¿En qué página reside la RAM de la Figura 4.3? Solución: La RAM de la Figura 4.3 reside en la página 20H de memoria. Los dos dígitos hexadecimales de orden superior se consideran el número de página en este sistema. ora se denomi­ l de memorias de Solución: La RAM de 16.384 x 8 bits se referencia como una memoria de 16K. La memoria de 16K tiene 16.384 bytes o palabras de memoria. 4.26. Acudir a la Figura 4.3. ¿Cuál es la memoria máxima que puede ser accedida por 16 líneas de dirección? J )()()() 0000 0000, ocesador? • 4.25. Ocho CI RAM de 16.384 x 1 bits pueden organizarse de forma similar a los de la Figu­ ra 4.4c para formar una memoria de lectura/escritura de 16.384 x 8 bits, que se denomina memoria de _ _ K. . 11 Solución: Un bus de 16 líneas de dirección puede acceder ~ 64K de memoria. Las direcciones van de OOOOH a FFFFH, que es igual a 65.536 10 posiciones. En este caso las palabras de memoria son de 8 bits: sin embargo, otros sistemas pueden tener 4 ó 16 bits por palabra. 1memoria 2000lI memoria 4.27. Si una microcomputadora comercial contiene 512K de memoria, realmente ten­ drá _ _ posiciones de memoria de 8 bits cada una. Solución: Una microcomputadora con una memoria de SI2K tendrá 524.288 (1024 x 512 - 524.288) bytes de memoria. 10\1 producirá la Loria 2001 H Y _ <byte, nibble) 4.4. REPERTORIO DE INSTRUCaONES l1M cuyas palabras El grupo de instrucciones que un microprocesador espeCífico puede ejecutar se denomina su repertorio de instrucciones. Los repertorios de instrucciones de los microprocesadores pueden variar desde ocho hasta 200 instrucciones básicas. Los repertorios de instrucciones no están estandarizados, debido al individualismo de cada fabricante y a la diferencia de arquitectura y uso de los microprocesadores. Las instrucciones de un repertorio pueden clasificarse de diversas formas. En este capítulo, se organizarán en las siguientes categorías: ~ oprocesador lee http://librosysolucionarios.net 80 FUNDAMENTOS DE LOS MICROPROCESADORES l. 2. 3. 4. 5. 6. 7. Instrucciones aritméticas. Instrucciones lógicas. Instrucciones de transferencia de datos. Instrucciones de bifurcación. Instrucciones de llamada a subrutina. Instrucciones de vuelta. Instrucciones misceláneas. Un sencillo repertorio de instrucciones de un microprocesador debería incluir las siguientes ins­ trucciones aritméticas: l. Sumar. 2. 3. 4. 5. 6. Restar. Incrementar. Decrementar. Comparar. Negar. ~~ Otras instrucciones aritméticas utilizadas por algunos microprocesadores pueden incluir opera­ ciones de suma con arrastre, resta con préstamo, multiplicación y división. El mismo microprocesador simplificado deberla tener las siguientes instrucciones lógicas: 2. ORo 3. OR exclusiva. 4. Not. 5. Desplazamiento a la derecha. 6. Desplazamiento a la izquierda. Otras instrucciones lógicas utilizadas por algunos microprocesadores pueden incluir desplaza­ miento aritmético a la derecha, desplazamiento circular a la derecha, desplazamiento circular a la izquierda, desplazamiento circular a la derecha a través del arrastre, desplazamiento circular a la izquierda a través del arrastre y operación de test (prueba). El microprocesador básico deberla contener variaciones de las siguientes instrucciones de transferencia de datos: . Otras instrucciones de transferencia de datos utilizadas por algunos microprocesadores pueden incluir intercambio y diversas operaciones de borrado e inicialización. El microprocesador debería contener las siguientes instrucciones de bifurcación en su reperto­ rio de instrucciones: l. 2. 3. 4. Bifurcación Bifurcación Bifurcación Bifurcación Bif'un:ac Bifurcac Bifurcac Otras instruccio depender de ca 4mwrt1ow». Las e n sencillo [ como CALL i pe que realizan Urui incondicional. y de IJamada conel I.lamada si no P'l Al final de .. principal. Esta t; pueden incluir el habitualmente in ta condicional. Un repertor'ÍIl tes instrucciones l. 2. 1. ANO. 1. Cargar. 2. Almacenar. 3. Transferir. 4. Entrar. 5. Salir. 5. 6. 7. incondicional. si cero. si no cero. si igual. http://librosysolucionarios.net Noopen Introduci 3. Sacar. 4. Esperar. 5. Alto. Otras insbUl.'cial ruptura y ajuste j Los usuarios como por eie'"!"""! Motorola 6' operación. En la frecuentemente e ra 4.5a, el nem04 nemotécnicos SOl instrucción de al representación be: ción. En la Figura 6800. La columru al contenido del acumulador A. Un ejemplo q contenido del acu (00101101,) se ro do de la pOsición I dor A y ahora el ~ FUNDAMENTOS DE LAS MICROCOMPUTAOORAS 5. Bifurcación si no igual. 6. Bifurcación si positivo. 7. Bifurcación si negativo. las siguientes ins­ \ \ len incluir opera­ ':iones lógicas: 81 / Otras instrucciones de bifurcación condicional utilizadas por algunos microprocesadores pueden depender de condiciones como mayor que o menor que, no arrastre o arrastre, no «overflow» u «overfloW». Las operaciones de bifurcación son instrucciones de toma de decisiones. Un sencillo microprocesador debería tener una instrucción de llamada a subrutina (referencia como CALL) para hacer que el programa bifurque o salte a un grupo especial de instrucciones que realizan una tarea específica. Todos los microprocesadores tienen la instrucción de llamada incondicional, y algunos también tienen instrucciones de llamada condicional. Las instrucciones de llamada condicional pueden incluir llamada si cero, llamada si no cero, llamada si positivo, llamada si no positivo, etc. Al final de la subrutina el programa debe volver donde originalmente abandonó el programa principal. Esta tarea la ejecuta una instrucción de vuelta. Las instrucciones de vuelta (retomo) pueden incluir el retomo de una subrutina o de las operaciones de interrupción. Las vueltas son habitualmente incondicionales, pero algunos microprocesadores contienen instrucciones de vuel­ ta condicional. Un repertorio de instrucciones simplificado de un microprocesador debería incluir las siguien­ tes instrucciones misceláneas: l. No operación. 2. Introducir. 3. Sacar. 4. 5. incluir desplaza­ iento circular a la ento circular a la instrucciones de esadores pueden In en su reperto- Esperar. Alto. Otras instrucciones miSGeláneas pueden incluir habilitar interrupción, inhabilitar interrupción, ruptura y ajuste decimal. Los usuarios del microprocesador pueden describir de varias formas la misma instrucción, como por ejemplo se esboza en la Figura 4.5 para la instrucción de sumar del microprocesador Motorola 6800. El nombre de la instrucción es comúnmente un verbo de acción y se denomina operación. En la Figura 4.5a, la operación es sumar. Los usuarios de la MPU también trabajan frecuentemente con formas abreviadas de la instrucción denominadas nemotécnicos. En la Figu­ ra 4.5a, el nemotécnico para esta operación particular de sumar es ADD A (observar que los nemotécnicos son mayúsculos). El registro de instrucción y la circuitería de decodificación de la instrucción de un microprocesador comprenden solamente ceros y unos. El código de op es la representación hexadecimal del código binario de 8 bits que hará que la MPU ejecute la instruc­ ción. En la Figura 4.5a, el código de op para ADD A es 8B I6 (1000 1O11 2) para el microprocesador 6800. La columna simbólica de la Figura 4.5a muestra que el contenido de memoria (M) se suma al contenido del acumulador A de la MPU, y la flecha indica que la suma se coloca en el acumulador A. Un ejemplo que utiliza la instrucción de sumar (ADD A) está esbozado en la Figura 4.5b. El contenido del acumulador A (00011110 2) se suma al contenido de memoria (00001111 2), la suma (00101101 2) se coloca en el acumulador A, a la derecha. Observar que no ha cambiado el conteni­ do de la posición de memoria de la Figura 4.5b, mientras ha cambiado el contenido del acumula­ dor A y ahora el acumulador A contiene la nueva suma. http://librosysolucionarios.net 82 rI FUNDAMENTOS DE LOS MICROPROCESADORES 4.32. Listar Operación de los Código Op Simbólico (Todas las etiquetas de los (hex) registros referencian contenidos) Nemotécnico Soludó Las Sumar 8B ADDA ferir. A+M-+A 4.33. (a) Resumen de la instrucción de suma .... Acumulador A ·furcacic A"""'Ia'§ , I I Lasop de Solució Acumulador A Memoria et 4.34. (b) Listar . río de 0000 1111 Solucio Instrucción de suma Las Figura 4.5. tes: bifi: ción si 1 ción si , . ~ 4.35. Un Bf'II PROBLEMAS RESUELTOS 4.28. El grupo de operaciones que puede ejecutar un microprocesador su _ _ _ _ _ _ . ma. se se denomina Solución: El grupo de operaciones que puede ejecutar un microprocesador se denomina su repertorio de instrucciones. 4.29. Citar siete tipos de las instrucciones que se encuentran en el repertorio de instrucciones de un microprocesador. Solución: Una agrupación de operaciones del repertorio contiene las siguientes categorías: aritméticas, lógicas, de transferencia de datos, bifurcaciones, llamadas a subrutina, vueltas de subrutina e instruc­ ciones misceláneas. Soluciál Unl na subr ~j 4.36. ¿Qué 11 Soluciól La~ 4.37. ¿Qué iJ vuelva SoltlCÍál bi micropl 4.30. Una operación ADD (de SUMA) es una instrucción aritmética, mientras que una operación OR (O) se denomina una instrucción _ __ Solución: Una operación OR se clasifica como una instrucción lógica. 4.31. Las operaciones de desplazamiento se denominan instrucciones ___ . Solución: Las operaciones de desplazamiento se denominan instrucciones lógicas. http://librosysolucionarios.net pueden tina. '1 4.38. Listar ( muchQ Sol. . . tasi esperar ción Id. , FUNDAMENTOS DE LAS MICROCOMPUTADORAS 83 4.32. Listar cinco operaciones básicas de transferencia de datos encontradas en la mayor parte • de los repertorios de instrucciones de los microprocesadores. le los / l)S) Solución: Las operaciones de transferencia de datos del microprocesador incluyen cargar, almacenar, trans­ ferir, entrar y salir. 4.33. Las operaciones de toma de decisión de un microprocesador se denominan instrucciones de _ _ . Solución: Las operaciones de toma de decisión de un microprocesador se denominan instrucciones de bi­ .furcación. 4.34. Listar varias operaciones de bifurcación condicional que pueden encontrarse en el reperto­ rio de instrucciones de un microprocesador. Solución: Las instrucciones de bifurcación condicional de un microprocesador típico incluyen las siguien­ tes: bifurcación si cero, bifurcación si no cero, bifurcación si igual, bifurcación si no igual, bifurca­ ción si positivo, bifurcación si negativo, bifurcación si mayor que, bifurcación si menor que, bifurca­ ción si arrastre, bifurcación si no arrastre, bifurcación si overflow y bifurcación si no overflow. 4.35. Un grupo especial de instrucciones que realizan una tarea específica, dentro de un progra­ ma, se denomina un(a) ___ (índice, subrutina). . se denomina L repertorio d, l instrucciones de L aritméti,,, brutina e instruc- lque una opera- Solución: Un grupo especial de instrucciones que realizan una tarea específica en un programa, se denomi­ na subrutina. 4.36. ¿Qué instrucciones hacen que el microprocesador bifurque a una subrutina? Solución: La instrucción CALL o de llamada a subrutina hace que la MPU bifurque a una subrutina. 4.37. ¿Qué instrucción se coloca al final de una subrutina para indicar al microprocesador que vuelva a la posición correcta en el programa principal? Solución: La instrucción vuelta de subrutina (RET) se coloca al final de una subrutina para hacer que el microprocesador bifurque a la posición correcta del programa principal. Esta instrucción también puede restaurar algunos registros a la condición que tenían antes de la operación de llamada a subru­ tina. 4.38. Listar cinco operaciones misceláneas encontradas en los repertorios de instrucciones de muchos microprocesadores. Solución: Las instrucciones misceláneas de la MPU incluyen no operación, introducir (push), sacar (pop), esperar (wail), alto (halt), habilitación de interrupción (enable interrupt), inhabilitación de interrup­ ción (disable interrupt), bifurcar y ajuste decimal. http://librosysolucionarios.net 84 FUNDAMENTOS DE LOS MICROPROCESADORES Operación ? ? (hex) Restar SUBA 80 Simbólico (Todas las etiquetas de los registros referencian contenidos) A-M_A Generalmen computacional ' decodificación e nes necesarias d Las funcione l. (a) Resumen de la instrucdón de resta 4. Acumulador A Acumulador A ? Después de la operaclÓII Memoria (b) Buscar. I 2. Transfer 3. Responc: Problema de resta Figura 4.6. 4.39•. Acudir a la Figura 4.6a. ¿Qué deberá aparecer encima de SUB A en el diagrama que describe la instrucción de resta? Proporci La mayoría esbozados en la mética y lógica control, junto é registros más es Figura 4.7. La unidadd desplazar circm mentar, borrar : procedimiento I lador (OA ,ó ) se s colocar en el ac Algunas de 1 ALU contiene 1 Solución: La abreviatura SUBA es el nemotécnico para restar del acumulador A. En la Figura 4.6a, enci­ ma de SUB A debe aparecer «Nemotécnico». 4.40. El 80 hexadecimal de la Figura 4.6a se denomina _ _ _ _ . Solución: El 80'6 de la Figura 4.6a se denomina código de op de la instrucción de restar. 4.41. Acudir a la Figura 4.6b. La diferencia binaria que deberá aparecer en el acumulador A, después de la operación SUB A, será _ _ . Bus de direcciones E' Solución: El binario 00110111-00101101 = 00001010 (decimal 55 - 45 = 10). El acumulador A conten­ drá la diferencia de 0000 l O1O2 después de la operación SUB A en la Figura 4.6b. Líneas de control 4.5. ORGANIZACION SIMPLIF1CADA DE LA CPU La unidad principal de cualquier sistema computador se denomina unidad central de tratamiento o CPu. Muchos CI microprocesadores son la CPU del sistema. Es común en tecnología de computadoras implementar la memoria de programa, memoria de datos, interfaces de entrada/ salida, decodificador de direcciones y CPU en CI separados, como sugiere el sistema de la Figu­ ra 4.1. La MPU forma la unidad central de tratamiento en este sistema. http://librosysolucionarios.net e .,.------1 .~ FUNDAMENTOS DE LAS MICROCOMPUTAOORAS 85 Generalmente la CPU contiene elementos de memoria denominados registros y circuitería computacional denominada unidad aritmética y lógica (ALU). También contiene circuitería de decodificación de instrucciones y una sección de temporización y control, además de las conexio­ nes necesarias de entrada y salida. Las funciones principales de la CPU de una microcomputadora son: l. Buscar, decodificar y ejecutar instrucciones del programa en el orden adecuado. 2. Transferir datos entre memoria y las secciones de entrada/salida. 3. Responder a las interrupciones externas. 4. Proporcionar señales de temporización y control al sistema completo. ~agrama La mayoría de las CPU de los microprocesadores contienen como mínimo los elementos esbozados en la Figura 4.7. Las secciones principales incluyen diversos registros, la unidad arit­ mética y lógica, el decodificador de instrucciones y la importante sección de temporización y control, junto a las entradas y salidas. La mayoría de las CPU realmente contienen algunos registros más especiales, así como muchas entradas y salidas especializadas no detalladas en la Figura 4.7. La unidad aritmética y lógica (ALU) de la CPU realiza operaciones como sumar, desplazar/ desplazar circularmente, comparar, incrementar, decrementar, negar, AND, OR, XOR, comple­ mentar, borrar y preinicializar (preset). Si la ALU ejecutase la instrucción de SUMAR (ADD), el procedimiento podría ser parecido a lo esbozado en la Figura 4.8a. Aquí el cómenido del acumu­ lador (OA I6 ) se suma al contenido del registro temporal (05 16), La suma (OF I6 ) entonces se vuelve a colocar en el acumulador. Algunas de las secciones funcionales de una ALU típica se encuentran en la Figura 4.8b. La ALU contiene un sumador y desplazador, que está conectado al acumulador, vía el bus interno que L6Q.enc> CPU r-­ ,., ~ ::1 ......-­ . ~ Contador de programa .S '" :;, Registro de instrucciones ~ ... f+-+ ~:;, Bus de datos ~~' IXI "- l· f-ot­ . ~ i' Líneas de entrada f+-Temporización y control ......­ de le entrada/ de la Figu­ ~ .S IXI Decodificador de instrucciones ro-­ e r--­ '"::1 .........-­ .....-­ ~ología ........... o IXI Líneas de control rratamiento ......­ Acumulador ~ c::: ...,........ I Registro temporal o - L 11 u '¡:;­ IXI conten. Unidad aritmética y lógica !-- Bus de o direcciones '0' 1: .., unulador A, l .. ¡ I lA i . ¡ );. i ~ Figura 4.7. Arquitectura simplificada de una CPU. .­ http://librosysolucionarios.net ,. 86 RJNDAMENTOS DE LOS MICROPROCESADORES ¡ Acumulador I0000 ~ Antes de la operación ADD . ALU 10000 1111 J Acumulador Después de la operación ADD Registro temporal (en CPU) (a) r- -- Ejecución de la instrucción de sumar en la ALU --ALU - ''---1 I \ ~ I IL- ::J Registro temporal splazador e El ~ .5 Sumador res tienen un COI! de direcciones. L da por instruccic que el contador ejecutar un prog¡ dor de programa La secuencia de la computado es el código de e sección de contr instrucciones. El que ejecute la in La organizaci de las CPU de 1 16 bits. Existen I de la CPU . Acumulador .............¡~ .~ ,~ __ (b) Organización de la ALU Figura 4.8. de datos. De importancia crítica para el programador es el registro de status localizado en la ALU, también denominado registro de códigos de condición o de señalizadores. El registro es realmente un grupo de flip-flops individuales que pueden ser puestos a I ó O según las condicio­ nes creadas por la última operación de la ALU. Los flip-flops individuales, o señalizadores, incluyen indicadores para cero, resultados negativos, arrastres desde el MSB, etc. Los señalizado­ res son utilizados para tomar decisiones cuando posteriormente se emplean instrucciones de bifurcación. Los registros temporales y acumulador mostrados en la Figura 4.8b se consideran muchas veces parte de la ALU. El acumulador es utilizado en la mayoría de las operaciones realizadas por la CPU, como por ejemplo en las transferencias de datos. La sección de temporización y control de la Figura 4.7 es robableme ión más com­ pleja de la CPU. ~.fe~ta Lsecuencia todos los eventos de la CPU y de la micr.QCWllputaaefB.. En un capítulo anterior se mencionó que cada instrucción del programa puede dividirse en etapas de búsqueda, decodificación y ejecución. Cada una de estas etapas puede ser además subdividida en una serie de pequeños pasos, denominados microprograma. El microprograma para cada instruc­ ción reside en la sección de decodificación de instrucciones y es ejecutado por la sección de temporización y control de la CPU. Un registro de 16 bits llamado contador de programa se muestra como parte de la CPU de la Figura 4.7. El contador de programa es responsable de seguir la pista de la dirección de la siguien­ te instrucción de memoria que se va a buscar. Debido a que las instrucciones del programa, normalmente, son ejecutadas en secuencia, el contador de programa cuenta normalmente de forma ascendente hasta que no se le diga que haga otra cosa. La mayoría de los microprocesado­ http://librosysolucionarios.net 4.42. Las letras Soluciéll: Las Ieb 4.43. Acudir al Solucióo; La uniC ma mostra 4.44. Una el'( (b) circuitJ sección de Solucióo; Una O cuiteria ca sección de 4.45. Citar cual Solucióa: Cuatro (a) Busca (b) Trans (e) Respc: Propc: (d) I , I FUNDAMENTOS DE LAS MICROCOMPUT ADORAS 87 l a tienen un contador de programa de 16 bits que accederá a 64K palabras de memoria vía el bus direcciones. La ejecución secuencial normal de las instrucciones del programa puede ser altera­ .::..? por instrucciones especiales de bifurcación, llamada, o vuelta, o por interrupciones que hacen .;ue el contador de programa bifurque a un número distinto de la dirección siguiente. Para ~tar un programa después de conectar la computadora, el operador debe inicializar el conta­ .:or de programa con el número de la posición de la primera instrucción del programa. La secuencia de búsqueda-decodifica-ejecuta la instrucción es fundamental para la operación :c la computadora. La primera instrucción buscada, de la memoria de programa, se supone que :"S el código de op de la primera instrucción y es colocada en el registro de instrucciones por la :...",,-uón de control de la CPU. El código de op es entonces interpretado por el decodificador de ~_,trucciones. El decodificador de instrucciones indica a la sección de temporización y control ~ Je ejecute la instrucción específica. La organización de la CPU mostrada en la Figura 4.7 es una versión simplificada. La mayoría :.e las CPU de los microprocesadores contienen como mínimo algunos registros más de 8 y -.; bits. Existen grandes variaciones en los microprocesadores según el número y tipos de registros :e la CPU. ::l! ie ADD PROBLEMAS RESUELTOS ....42. Las letras CPU significan ¿qué parte de un sistema microcomputador? _./ localizado en la res. El registro es ~ún las condicio­ , o sefializadores, c. Los señalizadoinstrucciones de ,8b se consideran ~ las operaciones bón máscom­ :cm~En -e en etapas de as subdividida en cada instruc­ or la sección de Solución: Las letras CPU significan unidad central de tratamiento. ".43. Acudir a la Figura 4.1. La CPU reside ¿en qué bloque de este sistema microcomputador? Solución: La unidad central de tratamiento reside en el bloque MPU (unidad microprocesadora) del siste­ ma mostrado en la Figura 4.1. 4.44. Una CPU generalmente contiene (a) dispositivos de memoria denominados_. (b) circuitería computacional denominada ___ • (c) circuitería ___ ___ y (d) una sección de temporización y ___ . Solución: Una CPU generalmente contiene (a) dispositivos de almacenamiento llamados registros, (b) cir­ cuitería computacional llamada ALU, (e) circuitería de decodificación de instrucciones y (d) una sección de temporización y control. liara ~de la CPU de la ión de la siguien­ s del programa, rlormalmente de microprocesado­ 1 4.4S. Citar cuatro tareas principales de la CPU de una microcomputadora. Solución: Cuatro tareas de la CPU de una microcomputadora son: (a) Buscar, decodificar y ejecutar instrucciones de programa en el orden adecuado. (b) Transferir datos entre memoria y las secciones de entrada/salida. (e) Responder a interrupciones externas. (d) Proporcionar señales de temporización y control a todo el sistema. http://librosysolucionarios.net ~ Ji J/ 88 FUNDAMENTOS DE LOS MICROPROCESADORES 4.46. ¿Qué significan las letras ALU? .~ ,~ ".52. El cont dones ( tipos de Solución: Las letras ALU significan unidad aritmética y lógica. So-. 4.47. Acudir a la Figura 4.9. ¿Cuál es el contenido binario del acumulador después de la opera­ Las i: illC'reJne1 ción ANO? Solución: El contenido binario del acumulador de la Figura 4.9 después de realizar la operación ANO, bit a bit, es 00000000. La tabla de verdad ANO se muestra en la Figura 3.1. "'.53. AJ comi coloca e ( SoI.w. I Acumulador ~ I? I A"~ de b opmcl60 AND~ " " ' _ d...."""Ióft AND Regtstro temporal (en CPU) ~ ~ Seftalizador de cero Si acumulador OOH, entonces seftalizador de cero - 1 Si acumulador #- OOH, entonces seilalizador de cero = O "54. La seca. nes e ioc denomir EJ_ SoIIlCiáE ciones e Figura 4.9. 4.48. AIro coloca el Acumulador Acudir a la Figura 4.9. El señalizador de cero estará en _ _ (set, reinicialización) des­ pués de la operación ANO. Í: 4.6. OPER·\J Solución: La condición del señalizador de cero se basa en el contenido del acumulador después de la operación ANO. Debido a que el acumulador es igual a cero, el señalizador de cero del registro de status se pondrá a l después de la operación ANO de la Figura 4.9. 4.49. El registro de status de la ALU también se denomina registro de códigos _ _ , y los flip-flops individuales se denominan _ _ (señalizadores. signos). Considerar la SIe1 ;lequeño .,..... ¡laSOs que a cont Instrucción J Instrucción 2 Instrucción 3 Solución: El registro de status de la ALU se denomina registro de códigos de condición, y los flip-flops individuales muchas veces se denominan señalizadores (flags). 4.50. ¿Qué sección importante de la CPU afecta y secuencia todos los eventos en la CPU y en la microcomputadora? Solución: La sección de control y temporización de la CPU afecta y secuencia todos los eventos en la CPU y en la microcomputadora. 4.51. El registro de la CPU que sigue la pista de la dirección de la siguiente instrucción que se va a buscar en la memoria de programa se denomina _ _ _ _ _ _ . Solución: El contador de programa sigue la pista de la dirección de la siguiente instrucción que se va a buscar en la memoria de programa. http://librosysolucionarios.net \ Instrucción 4 DespuésdeJ como las del ~ .,rograma comier ::rene 2 bytes de :nstrucción. míen LOAD (CARGA ~emplo. El opera jel microprocesa :,marias en notaci ,Ión. Suponer que e ~n la Figura 4. 1. ! • f1JNDAMENTOS DE LAS MICROCOMPUTADORAS 89 .t..52. El contador de programa normalmente incrementa su contenido accediendo a las instruc­ ciones de la memoria de programa en orden secuencial excepto cuando se altera por ¿qué tipos de instrucciones? Solución: tspués de la opera- Jperación AND, bit a Las instrucciones de bifurcación, llamada o vuelta, o interrupciones, pueden alterar el normal incremento del contador de programa. .t .53. Al comienzo de la ejecución de un programa el código de op de la primera instrucción se coloca en el _ _ (acumulador, registro de instrucciones) de la CPU. Solución: Al comienzo de la ejecución de un programa, el código de operación de la primera instrucción se coloca en el registro de instrucciones de la CPU. ~ 54. La sección de la CPU que interpreta el código de op colocado en el registro de instruccio­ nes e indica la sección de control y temporización sobre cómo ejecutar la instrucción se denomina ___ . Solución: .. de cero'" t DI' de cero = O , tci&áaciónl de~ klador despu~ de la r cero del registro de ~ ligos ___ , y los Lón, y los flip-tlops ~ en la CPU y en la I l. . 'o.en la CPU Lucción que se va IJUcción que se va a El decodificador de instrucciones de la CPU interpreta el código de op en el registro de instruc­ ciones e indica a la sección de control y temporización cómo ejecutar la instrucción. ...6. OPERACION DE LA MICROCOMPUTADORA -.:msiderar la sencilla tarea de sumar tres números como 10 + 5 + 18 = 33'0' Puede escribirse un programa de microcomputadora para que realice esta tarea elemental siguiendo los ::--a50S que a continuación se indican: ~ueño Instrucción 1 CARGAR (LOAD) el primer número (10'0) en la CPU. Instrucción 2 SUMAR (ADD) el segundo número (5 10 ) al primero. Instrucción 3 SUMAR (ADD) el tercer número (18 10 ) a la suma de los dos primeros núme­ ros. Instrucción 4 ALMACENAR (STORE) la suma de los tres números (33 10 ) en la posición 2000'6 de la memoria de datos. Después de cargarlas en la memoria de programa, las instrucciones anteriores deben aparecer :omo las del diagrama de memoria de la Figura 4.10. Observar que la primera instrucción del ;,rograma comienza en la dirección OOOOH. La primera instrucción (CARGAR el número OAH) :lene 2 bytes de memoria. El primer byte de memoria contiene la parte de operación de la :nstrucción, mientras que el segundo byte contiene el operando. El código de op para la operación LOAD (CARGAR) es 86H (100001102) para el microprocesador que se está utilizando en este ejemplo. El operando OAH (00001010 2) es el primer número que se va a cargar en el acumulador del microprocesador. Observar en la Figura 4.10 que es costumbre representar las cantidades binarias en notación hexadecimal. En la máquina real éstos son niveles ALTOS y BAJOS de ten­ sión. Suponer Que el programa se coloca en el bloque de RAM de la microcomputadora ilustrada en la Figura 4.1. Suponer también que la CPU de la microcomputadora tiene las características http://librosysolucionarios.net 90 FUNDAMENTOS DE LOS MICROPROCESADORES -, Memoria de programa Direcciones Contenidos (hex) (hex) 0000 86 Instrucción l-CARGAR (LOAD) 0001 OA 0002 88 detalladas en la ~:.latro operacion La operación la posición de m~ lCUmulador cont ;.Jbreescribe en el se muestra en la >urna al contenid en el acumulador :\DD). ( " Instrucción 2-SUMAR (ADO) \ 0003 05 0004 88 0005 12 0006 87 0007 20 0008 00 . 1 ";) Instrucción 3-SUMAR (ADD) Memor .. Instrucción 4-ALMACENAR (STORE) 0009 ooOA ..,.,.~ ........ Memoria de datos I1 Memoria 2000 2001 2002 2003 Figura 4.1 O. Un segmento del programa de mícrocomputadora para sumar 10+ 5 + 18. http://librosysolucionarios.net FUNDAMENTOS DE LAS MICROCOMPUTADORAS ~adas en la Figura 4.7. Entonces la Figura 4.11 detalla los resultados de cada _...aIrO operaciones del programa CARGAR-SUMAR-SUMAR-ALMACENAR. 91 una de las La operación CARGAR (instrucción 1) detal1ada en la Figura 4.11 a muestra el contenido de -'- ;x>sición de memoria OOOlH cargado en el acumulador de la CPU. Después de la operación, el c..:'Jmulador contiene 00001010 2, que es el primer número a sumar. La operación de CARGAR .: jreegcribe en el contenido del acumulador y lo borra. La operación de SUMAR (instrucción 1) .: muestra en la Figura 4.1Ib. El contenido de la posición de memoria 003H (00000101 2 ) se _:na al contenido del acumulador (0000 10102), dando la suma de 00001111 2, La suma se coloca . - el acumulador. Observar que el número del acumulador cambia durante la operación de suma ;DD). Acumulador I Antes de la operación Memoria de programa (OOOIH) _ ~ ~lOlOr ~ Acumulador Después de la operaCIón ~ La Ínstrucción de carga (a) RE) Acumulador I 00001~, Acumulador Antes de la operación Después de la operación Memoria de programa (0003H) La instrucción de suma (b) Acumulador I 000011111 ~ Antes de la operación Memoria de programa (0005H) 1001000011 00%] I0010000 1I Acumulador Después de la operación ( 00100001 (d) ~ . La instrucción de suma Antes de la operación 10+5+ 18. Después de la operación I000 1 (e) Acumulador Acumulador I Memoria de datos (2000H) La instrucción de almacenar directo Figura 4.11. http://librosysolucionarios.net ~ 1 ., I 92 FUNDAMENTOS DE LOS MICROPROCESADORES La segunda operación de SUMA (instrucción 3) se detalla en la Figura 4.11 c. La suma acumu­ lada, 00001111 2, se suma al contenido de la posición de memoria 0005H. La suma binaria' es 00001111 + 00010010 = 00100001. La suma final de 00100001 2 aparece en el acumulador des­ pués de la segunda operación de SUMA. La operación de ALMACENAR (instrucción 4) se muestra en la Figura 4.11 d. El contenido del acumulador (00 l 0000 l z) es transferido y almacenado en la posición 2000H de la memoria de datos. Observar que la posición de la memoria de datos estaba identificada en la memoria de programa por 2 bytes separados (posiciones 007 y 0008H). La posición de memoria de programa 0006H en la Figura 4. !O contiene B7H que es el código de op para la instrucción ALMACENAR directo. Considerar la búsqueda, decodificación y ejecución de la instrucción CARGAR en las direc­ ciones OOOOH y 000 1H de la memoria de programa de la Figura 4.10. Este tipo de instrucción de CARGAR probablemente puede ser ejecutada entre 2 y 6 microsegundos (Jl.S) por muchas micro­ computadoras. Algunas de las acciones que ocurren en la CPU, buses, líneas de control y memo­ ria se detallan para la instrucción de CARGAR en la Figura 4.12. Comenzando en la parte superior izquierda de la Figura 4.12, el contador de programa en la CPU se inicializa con la dirección del primer paso del programa. A continuación, la dirección de 16 bits es transferida al registro de direcciones y después al bus de direcciones y memoria de programa. Para activar la memoria de programa, la CPU envía una señal de lectura (línea R/Wa l) mientras que el decodificador de direcciones (no parte de la CPU) habilita la selección de pastílIa de memoria (L'S) con un O. A continuación, el contador de programa en la CPU es incrementado a 000 l H. La posición OOOOH de la memoria de programa es accedida y leída en el bus de datos. El código de op (86H) para la instrucción de CARGAR es transferido al registro de instrucciones de la CPU. Esto completa la etapa de búsqueda del código de op de la instrucción CARGAR. A continuación el código de op (86H) que está contenido en el registro de instrucciones de la CPU es interpretado por el decodificador de instrucciones. En este caso la CPU determina que se trata de la instrucción CARGAR inmediato, que significa que cargará el contenido de la posición de memoria que sigue inmediatamente al código de op en el acumulador. El contenido del contador de programa (000 l H) es transferido al registro de direcciones, bus de direcciones y memoria. La CPU genera un pulso de lectura ALTO, que va a la entrada R/W de la memoria. Un nivel BAJO se aplica a la entrada de memoria CS, que la habilita. En la tercera línea de la parte inferior de la Figura 4.12, el contador de programa es incrementado a 0002H, quedando listo para la búsqueda de la siguiente instrucción. Se accede a la posición de memoria 000 l H, Y su contenido (OAH) es colocado en el bus de datos y despuéS en el acumulador de la CPU. Observar que las etapas de búsqueda y ejecución de esta instrucción son similares a las operaciones de lectura, excepto que el dato leído de memoria era transferido a un registro diferente de la CPU. El código de op de la etapa de búsqueda se coloca siempre en el registro de instrucciones. PROBLEMAS RESUELTOS Busca •1 .li Decodifica • Ejecuta 4.5t1. AC'IXIir ma, d tro_ S.I _ 4.55. Las dos partes de una instrucción de un microprocesador se denominan operación y-_. Cual do (88' Solución: Las dos partes de una instrucción de un microprocesador se denominan operación y ope­ rando. http://librosysolucionarios.net ".57. Acudir que se I FUNDAMENTOS DE LAS MICROCOMPlITADORAS ~lC. La suma acumu­ : La suma binaria' es I el acumulador des­ Inicializado por operador Contador de programa r Registro de direcciones !4.11d. El contenidc tH de la memoria de a en la memoria de emoria de programa t:'ión ALMACENAR Busca .. de programa en la ;ión. la dirección de ¡,nes y memoria de ectura (línea R/Wa ilita la selección de Ima en la CPU es :cedida y leída en el ferido al registro de ti' de la instrucción instrucciones de la lJ detennina que se nido de la posición . El contenido de! :s de direcciones '. de la memoria. U~ ra línea de la parte H. quedando listo Doria 0001 H, Y su ! la CPU. Observar las operaciones de ente de la CPU. El ucciones. z: < x< Decodifica Ejecuta I Registro de direcciones [§B] 'IOOOOH ~ ·1 ooOOH I Bus de direcciones + mt:moria Salida de RjW de la CPU [O Salida del decodificador de direcciones [2] Contador de programa RGAR en las direc­ po de instrucción de , por muchas micro­ de control y memo­ l ~ {O Incrementa ~ (@!!!J Entrada RjW de memoria Entrada C'S de memoria Contador de programa Memoria de programa (OOOOH) ~ Bus de datos Bus de datos Registro de instrucción {Registro de instrucción 93 ~ Decodificador de instrucciones Contador de programa ~ 'lO@iiD Registro de direcciones lO@iiD 'looolHI Bus de direcciones + memoria Salida de RjW de la CPU m Salida del decodificador de direcciones [!J Contador de programa [§!TI Incrementa Registro de direcCiones ,[O Entrada RjW de memoria ,m Entrada es de memoria I~ Contador de programa Memoria de programa (OOOIH) ~ Bus de datos ~ Acumulador Bus de datos Figura 4.12. Un análisis detallado de la instrucción de cargar inmediato. 456. Acudir a la Figura 4.10. Cuando es accedida la posición 0002H de la memoria de progra­ ma, el contenido (8B) es transferido, vía bus de ___ (direcciones, datos), al regis­ tro _ _ de la CPU. minan operación operación y ope- Solución: Cuando es accedida la posición 0002H de la memoria de programa de la Figura 4.10, el conteni­ do (8B) es transferido. vía bus de datos. al registro de instrucción de la CPU. 4.57. Acudir a la Figura 4.10. La posición de la memoria del programa ooo3H contiene 05H, que se considera la parte ___ (operando, operación) de la instrucción. http://librosysolucionarios.net 94 FUNDAMENTOS DE LOS MICROPROCESADORES Solución: En la Figura 4.10, la posición de memoria 0003H contiene 05H, que se considera la parte operando de la instrucción. 4.58. Sohldóa: La inICIa ma se inicial que se va a I como se ind Un número binario de 16 bits está representado normalmente por _ _ (un número) dígitos hexadecimales. Solución: Un número binario de 16 bits es costumbre representarlo por cuatro dígitos hexadecimales. Por tanto 00 1O 0000 0000 1111 2 puede ser representado por 200F en notación hexadecimal. 4.59. Listar las tres etapas que sigue la CPU cuando ejecuta cualquier instrucción. ..l ".65. Listar cinco Solución: Los ciclos de la CPU son las etapas de búsqueda, decodificación y ejecución cuando corre cualquier instrucción. 4.60. Acudir a la Figura 4.12. La etapa de Msqueda de esta instrucción es básicamente una operación de ___ (lectura, escritura), donde el contenido de memoria acaba en el _ _ (acumulador, registro de instrucciones) de la CPU. Solución: La etapa de búsqueda de esta o cualquier instrucción es básicamente una operación de lectura, donde el contenido de memoria acaba en el registro de instrucciones. 4.61. Durante la etapa de búsqueda de una instrucción, el _ _ (decodificador de instruccio­ nes, contador de programa) apunta a la dirección del código de op que se va a acceder en memoria. Solución: Durante la etapa de búsqueda de una instrucción, el contador de programa apunta la dirección del código de op que se va a acceder en memoria. cesador'. Res. 4.66. El bus de un; Res. direco 4.67. El bus de 8 b Res. datos.. 4.68. Acudir a la f salidas. entra Res. entrad; 4.69. Acudir a la F posición de 11 Res. 208F, 4.70. Acudir a la ROM _ _ 4.62. Acudir a la Figura 4.12. Además de las entradas de dirección, ¿qué otras dos entradas de memoria necesitan ser activadas para leer un byte de memoria? Solución: Según la Figura 4.12, la entrada RjW(lectura/escritura) de la MPU y laCS (selección de pastilla) de memoria del decodificador de direcciones necesitan ser habilitadas junto con las entradas de dirección para leer un byte de memoria. 4.63. Acudir a la Figura 4.10. Una vez que la CPU ejecuta la instrucción 4, ¿qué número deci­ mal se almacenará en la posición 2000H de la memoria de datos? Solución: El programa de la Figura 4.10 suma OAH + 05H + 12H, dando un total de 21 H. La suma de 21 H será almacenada entonces en la posición 2000H de la memoria de datos. Esto se ilustra también en la Figura 4.11 d. Res. 4.71. http://librosysolucionarios.net sacará... La ROM de! Res. OOlf !P 4.72. Ocho CIs RJ formar una de _ _ K. Res. 8,4. 4.73. La lista de op de _ _ . Res. 4.74. 4.64. Acudir a la Figura 4.12. Una vez conectado a la red, la inicialización del contador del programa es realizada por el _ _ (decodificador de direcciones, operador). arquilC i\aJes ~ instruí: Unaoperac;t ALMACE,,~ Res. transic ~ FUNDAMENTOS DE LAS MICROCOMPUTADORAS 9S Solucióo: La inicialización del contador de programa es realizada por el operador. El contador de progra­ ma se inicializa con la dirección de la memoria de programa de la primera instrucción del programa que se va a ejecutar. Esta primera inicialización del contador de programa puede, o no, ser OOOOH como se indica en la Figura 4.12. se considera la parte ~ _ _ (un número) I / sÍhexadecimales. Por xadecimaJ. PROBLEMAS SUPLEMENTARIOS Icción. ~..6S. rción cuando corre \ ~ básicamente una emoria acaba en Listar cinco cosas que sea necesario conocer cuando se aprende algo sobre un nuevo micropro­ cesador. Res. arquitectura, repertorio de instrucciones, sistema mínimo que utiliza el microprocesador, se­ ñales de control y funciones de las patillas. ·CA'. El bus de una dirección de 16 bits de la Figura 4.1 se denomina bus de _ _ . Res. direcciones. 4.67. El bus de 8 bits de dos direcciones de la Figura 4.1 se denomina bus de _ _ • Res. datos. .,eración de lectura. 4.68. Acudir a la Figura 4.1. Las conexiones de la MPU al bus de datos se consideran _ _ (entradas, salidas, entradas y salidas). Res. entradas y salidas. dor de instruccio­ se va a acceder en ".69. Acudir a la Figura 4.2. Si la dirección en el bus de direcciones fuese 0010 0000 1000 1111, ¿a qué posición de memoria (número hex) accedería el microprocesador? Res. 208F w 4.70. Acudir a la Figura 4.3. Si la microcomputadora accede a la posición de memoria OOFEH, la ROM _ _ (sacará, aceptará) _ _ _ ~ _ _ _ _ (8 bits). ~apunta la dirección . ~ 5 dos entradas de Lón Res. sacará, 00 100000. 4.71. La ROM de la Figura 4.3 se dice que reside ¿en qué página de memoria? Res. 00'6 (página cero). de p"'illa) Dn las entradas de té 4.72. Ocho as RAM de 4096 x l bit pueden organizarse de forma similar a los de la Figura 4.4c para formar una memoria de lectura/escritura de 4096 x _ _ bits, que se denominaría memoria de _ _ K. número deci- Res. 8,4. 4.73. La lista de operaciones que pueden ser realizadas por un microprocesador se denomina su repertorio de _ _ . l. La suma de 21H ilustra también en Res. instrucciones. 4.74. lel contador del Ior). . Una operación de SUMAR (ADD) es una instrucción aritmética, mientras que una operación de ALMACENAR (STO RE) es una instrucción de _ _ . Res. transferencia de datos . http://librosysolucionarios.net 96 t I FUNDAMENTOS DE LOS MICROPROCESADORES 4.75. Las operaciones de bifurcación son las instrucciones de toma de _ _ del microprocesador. Res. decisiones. 4.76. Las instrucciones de llamada a subrutina y las _ _ (aritméticas, de vuelta) están siempre asociadas con las subrutinas. Res. de vuelta. 4.77. La circuitería computacional de una CPU se denomina _ _ (tres letras). Res. ALU (unidad aritmética y lógica). 4.78. La CPU de una microcomputadora contiene una serie de dispositivos de almacenamiento temporal denominados _ _ (registros, ROM). Res. registros. 4.85. Elcontadc: instrucciól Res. de. 4.86. Durante bi ma y traru Res. cód 4.87. Durante I,¡ de progra¡ nes, temp Res. ePI 4.88. 4.79. La CPU de una microcomputadora contiene circuitería utilizada para interpretar instrucciones a la que se denomina _ _ . Res. decodificador de instrucciones. Acudir al ra 4.14b d Res. ()()() Memoril 4.80. La CPU de una microcomputadora contiene un bloque de circuitería para secuenciar eventos, que se denomina sección de _ _ y _ _ . Res. control, temporización. Direcci~ (hex) 4.81. La CPU de una microcomputadora reside en un dispositivo denominado _ _ (interfaz, micropro­ cesador). Res. microprocesador. 0000 4.82. Acudir a la Figura 4.13. ¿Cuáles son los contenidos binarios del acumulador después de la operación OR? Res. 00111111. 0002 0001 0003 0004 Acumulador ? ~ Después de la operación OR ()O(M! Registro temporal (en CPU) 1"­ Señalizador de cero Si acumulador - OOH, entonces señalizador de cero - l Si acumulador # OOH, entonces señalizador de cero - O Figura 4.13. Mcm La instrucción OR. 200( 4.83. Acudir a la Figura 4.13. El señalizador de cero estará a _ _ (1, O) después de la operación ORo Res. a l. 4.84. Los señalizadores son parte de un código de condición especial o registro _ _ que se encuentra en la ALU de la unidad central de tratamiento de una microcomputadora. Res. de status. http://librosysolucionarios.net 2001 '. FUNDAMENTOS DE LAS MICROCOMPUTADORAS ICTOprocesador. 97 .&.15. El contador de programa de la CPU sigue la pista ~ (de la dirección, del tiempo) de la siguiente instrucción del programa que se va a ejecutar. Res. de la dirección. I Ián siempre asociadas í ..... Durante la etapa de búsqueda, un _ _ (código de op, operando) es leído de la memoria de progra­ ma y transferido al registro de instrucción de la CPU. Res. código de op. / 467. Durante la etapa de decodificación, el decodificador de la instrucción en la _ _ (CPU, memoria :enamiento temporal l ,e " lar instrucciones a la L de programa) interpreta el código de op que actualmente reside en el registro _ _ (de instruccio­ nes, temporal). Res. CPU de instrucciones. ..... Acudir a la Figura 4.14a y b. ¿Cuál es el contenido binario del acumulador de la CPU en la Figu­ ra 4.14b después de la operación ANO? Res. 00000000 2 , Memoria de programa DCIar eventos, que se Dirección Contenidos (hex) (hex) .(interfaz, micropro­ 0000 L de la opcmción 84 0001 00 Instrucción I-AND lógica del operando OOH con el conteni­ do desconocido del acumulador de la CPU 0002 4C Instrucción 2-INCREMENTA el acumulador 0003 B7 0004 20 0005 01 Instrucción 3-ALMACENA (STORE) el contenido del acu­ mulador en la posición 200IH de la memoria de datos 0006 IiIdor de cero - 1 liIdor de cero - O I I~~ I 1 Memoria de datos 2000 • operación ORo 2001 L se encuentra en 2002 (a) Segmento de programa Figura 4.14. http://librosysolucionarios.net 98 FUNDAMENTOS DE LOS MICROPROCESADORES I Acumulador Acumulador 4.94. Acudir a la f es _ _ . Res. 4CH. 4.95. Acudir a .. f es _ _ . Memoria de programa (000 l H) I Res. (b) Acumulador ~ Antes de la Instnlttión La instrucción ANO . I 2~e/ ? I 87H.. datos. Acumulador Despun de la instruccl6n 2 a Incrementa (e) La instrucción incrementar ? Acumulador Antes de la InslnlCdóB 3 . Acumulador Después de la instrucción 3 Memoria de datos (d) La instrucción de almacenar directo Figura 4.14. (continuaciÓn). .,1 " l J ¡ ~.A ,1 . .¡ ~~;t ., ~ :1 .j 4.89. Acudir a la Figura 4.14a y c. El contenido binario del acumulador de la CPU en la Figura 4.14c después de la operación de incrementación es _ _ (8 bits). Res. 0000000 12, 4.90. Acudir a la Figura 4.1 la y d. ¿Cuál es la dirección hexadecimal de la posición de la memoria de datos mostrada en la Figura 4.14d? Res. 2001H. ~ I 4.91. Acudir a la Figura 4.14a y d. El contenido binario de la posición de la memoria de datos mostrada en la Figura 4.l4d después de la operación de almacenar es _ _ (8 bits). Res. 00000001 2, 4.92. Acudir a la Figura 4.14a. ¿Qué dos posiciones de la memoria de programa contienen las direcciones de la operación de almacenar? Res. 0004H y ooo5H. 4.93. Acudir a la Figura 4.14a. El código de op para la instrucción 1 es _ _ (hex), mientras que el operando es _ _ (hex). Res. 84H, OOH. http://librosysolucionarios.net .#} , FUNDAMENTOS DE LAS MICROCOMPUTAOORAS 99 .t.94. Acudir a la Figura 4.140. El código de op para la instrucción 2 es _ _ , mientras que el operando es _ _ . Res. 4CH, no existe operando en la instrucción de incrementar. 4.95. Acudir a la Figura 4.140. El código de op para la instrucción 3 es _ _ , mientras que el operando es _ _ . Res. B7H, combina un operando de 2 bytes para formar la dirección 2001H de la memoria de datos. IIa Figura 4.14c Lria de datos l m"""'da en' las direcciones ientras que el http://librosysolucionarios.net 1 Capítulo 5 Líneas de COllt,., La mayoría de le tes líneas de con EL MICROPROCESADOR 5.1. CARACfERISTICAS COMUNES DE LOS MICROPROCESADORES Un microprocesador puede definirse brevemente como una pastilla de muy alta escala de integra­ ción (VLSI), que realiza las tareas de la unidad central de tratamiento de una microcomputadora u otro sistema de control automático. Lo que sigue es un esbozo, abreviado, de las características principales compartidas por casi todos los microprocesadores de 8 y 16 bits. Este listado sirve para dar al estudiante una visión general de las características más importantes de los diversos micro­ procesadores. Conexiones de alimentaci6n Los microprocesadores (excepto el 8080) requieren una fuente de alimentación regulada de 5 Vdc. TlUlUJílo en bits Líneas tI. Líneas di Líneas d~ Líneas di Líneas di 6. Líneas d 7. Líneas d l. 2. 3. 4. 5. Regiltro, inte,. Contador de prc la siguiente ¡nSl anchura del bw microprocesado Acumulador veces a las Opel 6502 tienen tO( registros de pro! Registro de Los bits indi"id res se asocian. 1 bifurcación pos Registros dt Los microprocesadores se clasifican normalmente en unidades de 4,8, 16 Ó 32 bits. El tamaño en bits de un microprocesador a veces se denomina tamaño de palabra. La longitud del registro acumulador es una buena pista para conocer el tamaño de palabra de un microprocesador. Los microprocesadores 8080/8085,6800,6502 y Z80 son de 8 bits. Los 8086, 8088, 68000, 65816 Y Z8000 son MPU típicas de 16 bits. El 80386, 68020,32000 y Z-8()()()() son ejemplos de micropro­ cesadores avanzados de 32 bits. cenar datos tetl tarea específica. funcionar com< 16 bits habitual dores. Registro ;,. Líneas de datos cuando se utili Los registros de Z8000 y 68000 Los microprocesadores transfieren datos e instrucciones entre la MPU y memoria (o E/S) vía un bus de datos bidireccional. El 6800, 6502, Z80 y 8088 son procesadores que utilizan buses exter­ nos de datos de 8 bits. Muchos miembros de la familia 8080 multiplexan direcciones o informa­ ción de control en las líneas de datos parte del tiempo. pista de la sigUI RAM utilizad.<¡ registros. La pi Líneas de dirrecl611 Modos de dire Los microprocesadores más antiguos (8080/8085, 6800, 6502) utilizan buses de dirección de 16 bits que pueden direccionar solamente 2 16 ó 64K de memoria. Las MPU más modernas de 16 bits tienen buses de direcciones de 16, 20 ó 23 bits. Un bus de direcciones más ancho permite direccionar memorias mayores. Un modo ded ejecución de u modos de dire Registro de. 1. Mod<l 2. Mod<1 100 http://librosysolucionarios.net I t EL MICROPROCESADOR )ítulo 5 UMtu 101 tú co"trol La mayoría de los microprocesadores se caracterizan porque tienen todas o algunas de las siguien­ tes líneas de control: l. 2. 3. 4. 5. 6. 7. )ORES Líneas de reloj. Líneas de lectura/escritura. Líneas de entrada/salida. Líneas de interrupción. Líneas de reinicialización. Líneas de control del bus. Líneas de status del ciclo. Registros i"ternos Contador de programa. El contador de programa (PC) es el registro que contiene la dirección de lCaIa de integra* rocomputadora 5 características stado sirve para diversos mícro* la siguiente instrucción del programa. La longitud del contador de programa es igual que la anchura del bus de direcciones. El contador de programa normalmente contiene 16 bits en los microprocesadores de 8 bits pero es mayor en las MPU de 16 y 32 bits. Acumulador. El acumulador es el registro o registros asociados a las operaciones de la ALU ya veces a las operaciones de E/S. Puede ser de 8, 16 ó 32 bits. Las MPU del 8080/8085, 6800 Y 6502 tienen todas acumuladores de 8 bits. Algunos procesadores (68000 y Z8000) tienen sólo registros de propósito general que pueden ser utilizados como acumuladores. Registro de status o señalizadores. El registro de status está en todos los microprocesadores. Los bits individuales del registro se denominan señalizadores. Las condiciones de los señalizado­ res se asocian, generalmente, a las operaciones de la ALU y son utilizados por instrucciones de bifurcación posteriores para tomar decisiones. Registros de propósito general. Los registros de propósito general pueden utilizarse para alma­ cenar datos temporalmente o para que contengan una dirección. No tienen asignada ninguna tarea específica. En los microprocesadores de 8 bits, los registros de propósito general no pueden funcionar como un acumulador en la ALU y en operaciones de E/S. Sin embargo, las MPU de 16 bits habitualmente permiten que los registros de propósito general se utilicen como acumula* dores. Registroindice. El registro índice se utiliza para que contenga la dirección de un operando cuando se utiliza el modo de direccionamiento indexado (8080/8085, 6800, 6502, Z80, 8086). Los registros de propósito general son utilizados como registros índice en los microprocesadores Z8000 y 68000. Registro del puntero de pila. El puntero de pila (SP) es un registro especializado que sigue la pista de la siguiente posición de memoria disponible en la pila. La pila es un área reservada de la RAM utilizada para almacenamiento temporal de datos, direcciones de vuelta y contenido de registros. La pila se utiliza durante las llamadas a subrutina y durante las interrupciones. l regulada de Lamaftoen lid del registro rocesador. Los 8000,65816 Y s de micropro­ l (o E/S) vía un buses exter­ !leS a informa* ID Jdirección de modernas de ,~ Dcha permite Modos de direccio"amie"to Un modo de direccionamiento es la técnica utilizada para buscar el operando deseado durante la , ejecución de una instrucción. Los microprocesadores individuales pueden no utilizar todos los modos de direccionamiento listados a continuación: l. Modo de direccionamiento inherente (implícito). 2. Modo de direccionamiento inmediato. Q r http://librosysolucionarios.net 102 FUNDAMENTOS DE LOS MICROPROCESADORES 3. I I J I Modo de direccionamiento extendido o absoluto. 5.6. 4. Modo de direccionamiento de registro. 5. Modo de direccionamiento indirecto de registro. 6. 7. 8. 9. Modo Modo Modo Modo 10. Modo 11. Modo 12. Modo 13. Modo / El regiS1 prograrr Soluciólt El co de direccionamiento índice. de direccionamiento de página cero (directo). de direccionamiento relativo. de direccionamiento basado. de direccionamiento basado en índice. de direccionamiento de cadena. de direccionamiento de E/S. de direccionamiento de status de registro. 5.7. Los bits mente _ Solución: Losb ¡¡zadores. Generalmente, los microprocesadores más modernos de 16 bits tienen modos de direccionamien­ to más potentes y flexibles. 5.2. DES<X PROBLEMAS RESUELTOS S.I. Los folletos so!l hojas de datos e función de ~ descripción de I junto al repertOI que utilizan el II El micropnx línea con 40 par tran dos tipos ( plástico, mientn mico del micro¡: dores vienen tan ser empaquetad.< En las Figunl patillas. Observa el CI DIP plástic estas marcas de izquierda es la I numeran entone cuando éste se 11 Un diagram microprocesadOl doro El diagrama cesador Inte) 80l ciÓn. Las patilla! fases. Las patilla: otras salidas). sq (Do -D7) son las 16 bits se debe ' WAIT, WR. HL sistema. Otras e Casi todos los microprocesadores requieren una fuente de alimentación regulada de _ _ Vdc. Solución: Todos los microprocesadores (excepto e180SO) requieren una fuente de alimentación regulada de 5 V dc. 5.2. El 8080/8085, 6800, Z80 y 6502 son todos ejemplos de microprocesadores de _ _ bits. Solución: El 8080/8085, 6800, Z80 y 6502 son todos ejemplos de microprocesadores de 8 bits. Todos tienen acumuladores de 8 bits. S.3. '¡:.;­ La mayoría de los microprocesadores de 8 bits utilizan buses de datos de _ _ (8, 16) bits para transferir datos e instrucciones a y desde memoria (o E/S). Solución: La mayoría de las MPU de 8 bits utilizan líneas de datos de 8 bits. I 5.4. La mayoría de los microprocesadores de 8 bits utilizan buses de direcciones. de _ __ (8, 16, 20) bits. Solución: La mayoría de los microprocesadores de 8 bits utilizan buses de direcciones de 16 bits. El bus de 16 bits direccionará 2 16 Ó 64K de memoria. 5.5. La línea de control_ enVÍa un mensaje desde la MPU a la RAM, indicando a la RAM si el acceso a memoria es una operación de lectura o escritura. Solución: La línea de control de lectura/escritura de la MPU señala la RAM si el acceso a memoria es una operación de lectura o escritura. http://librosysolucionarios.net • EL MICROPROCESADOR 5.6. 103 El registro interno de la MPU que ~ontiene la dirección de la siguiente instrucción del programa es el ___ . Solución: El contador de programa contiene la dirección de la siguiente instrucción de memoria. \ '5.7. Los bits individuales del registro de status de un microprocesador se denominan común­ mente _ _ . Solución: Los bits individuales del registro de status del microprocesador se denominan comúnmente seña­ Iizadores. le direccionamien­ 5.2. DESCRIPCIONES DE LA HOJA DE DATOS :ntación regulada ~ntación regulada de ~ es de _ _ bits. l de 8 bits. Todos i de _ _ (8, 16) I clones. de _ __ 1: 16 bits. El bus de l . mdicando a la I memoria es una I Los folletos sobre microprocesadores específicos contienen varias características comunes. Las hojas de datos contienen información sobre el empaquetamiento del el, diagramas de patillas y función de cada patilla del el. El esquema de la arquitectura de la epu aparece junto a una descripción de las características más importantes. Los diagramas de temporización aparecen junto al repertorio de instrucciones del procesador. La hoja de datos también esboza los sistemas que utilizan el microprocesador. El microprocesador está ubicado normalmente en un circuito integrado encapsulado en doble línea con 40 patillas (40-pin dual-in-line package) (el OIP 40 patillas). En la Figura 5.1 se mues­ tran dos tipos de encapsulado. El DIP de 40 patillas de la Figura 5./a está encapsulado en plástico, mientras que el de la Figura 5.1 b utiliza una base cerámica. El empaquetamiento cerá­ mico del microprocesador se aconseja para operaciones a altas temperaturas. Los microprocesa­ dores vienen también empaquetados con 28,42, 50 Y 68 patillas. Las unidades mayores pueden ser empaquetadas en portadores de pastillas planos más modernos montados en superficie. En las Figuras 5.1 e y d se detallan dos métodos para determinar la patilla 1 del el DIP de 40 patillas. Observar la muesca central y la ranura longitudinal que sirven como marcas de índice en el el OIP plástico de la Figura 5.1c. Inmediatamente en sentido contrario a las agujas del reloj, de estas marcas de índice, está la patilla 1 del el. En la Figura 5.ld, el punto en la parte inferior izquierda es la marca índice para mostrar qué terminal del el es la patilla l. Las patillas se numeran entonces en modo creciente, en sentido contrario a las agujas del reloj, en tomo del el cuando éste se mira desde la parte superior. Un diagrama de patillas, como el de la Figura 5.2a, se incluye en las hojas de datos del microprocesador. El fabricante detalla además el nombre y uso de cada patilla del microprocesa­ dor. El diagrama de patillas y las breves descripciones de la Figura 5.2 corresponden al micropro­ cesador Intel 8080. Observar que las patillas 2, 11,20 y 28 son patillas de la fuente de alimenta­ ción. Las patillas 15 y 22 (01, 02) son las entradas de reloj de un circuito de reloj externo de dos fases. Las patillas 3 a 10 del el 8080 son bidireccionales (significa que unas veces son entradas y otras salidas), según indican las direcciones de las flechas de la Figura 5.2a. Estas patillas de datos (Do -0 7 ) son las ocho conexiones al bus de datos del sistema. El bus de direcciones del sistema de 16 bits se debe conectar a las salidas de dirección Ao a A15' Otras seis salidas (SYNC, DBIN. WAIT, WR, HLDA e INTE) llevan las señales de control y temporización a las demás partes del sistema. Otras cuatro entradas (READY, HOLD, INT y RESET) son entradas de control que http://librosysolucionarios.net ,"~ , 104 FUNDAMENTOS DE LOS MICROPROCESAOORES , \ (a) Microprocesador DIP plástico de 40 patillas Indice ®--/4 .. (b) Microprocesador DIP plástico de 40 patillas Punto índice @ EZ::::::::::::::::I o .. @ ~--~--------------------~21 Nombre de PI 0------------------··@ (Vista superior) (Vista superior) (e) Numeración de las patíllas del CI DIP plástico de 40 palíllas (d) Numeración de las patillas en el el DIP cerámico de 40 patillas Figura 5.1. GND. +5 V.­ 01,02 Do-D, Ao-Au SYNC DBIN WAIT I WR comparten la información con otras partes del sistema. La tabla de la Figura S.2b da detalles adicionales sobre cada patilla del microprocesador Intel 8080. Una hoja de datos típica también debe incluir un diagrama de la estructura del microprocesa­ dor. La Figura 5.3a muestra un diagrama de bloques del microprocesador Intel 8080. El diagrama de la CPU de la Figura 5.3a del microprocesador 8080 muestra los registros internos, incluyendo el acumulador, B y e, D y E, H y L, puntero de pila, registro de status (señalizadores) y algunos registros temporales. El diagrama de bloques también muestra el registro de instrucción y el decodificador de instrucciones, así como la sección de control y temporización. El diagrama de la CPU 8080 también muestra la ALU y los señalizadores asociados y el bloque de ajuste decimal en la Figura 5.3a. Las ocho entradas/salidas de datos así como las salidas de dirección de 16 bits tienen butTers. La CPU del 8080 también contiene muchas líneas de control internas, caminos de datos y buses. Algunas hojas de datos contienen también un resumen de los registros de la CPU que son de interés para el programador. La Figura 5.3b muestra los registros del 8080 que utiliza el progra­ mador. Observar que el registro principal es el registro A, o acumulador. Los registros B y e, D y E, y H y L son unidades de propósito general. El puntero de pila, contador de programa y sefializadores son registros especializados. El registro par l/L también puede utilizarse como registro de direcciones. http://librosysolucionarios.net ~I HLDA lNTE READY t HOLD lNT . REINICTA[ (RESET Las hojas do ciones entre la: entradas/salida esquemas que 1 basado en el 80 interfaces de I<J EL MICROPROCESADOR A" A" 40 39 38 Al) 37 A" o o 36 3~ INTEa=' 8080 HOlO .NT ro de 40 patillas 4>, A. JJ 32 A. JI As 30 29 28 21 A, Al t11V A, 26 ... WA1T 24 READV 23 <1>, 22 HlOA 2' (a) -----lllo...,@ Si en el CI DIP las S.2b da detalles el microprocesaEl diagrama nos. incluyendo ~~res) y algunos ... ,trucción y el I diagrama de la juste decimal en cción de 16 bits nas. caminos de ::PU que son de ltiliza el progra­ "ros B y e, D y de programa y utilizarse como I • U I Caja. A,So A, 34 2~ -----1(0 105 Diagrama de patillas para el microprocesador Intel 8080 (Cortes[a de [mel Corporation) Nombre de patilla Propósito Entrada o salida GND, +5 V, -5 V, +12 V 01,02 Do-DI Ao-A 1S SYNC DBIN WAIT WR HLDA lNTE READY HOLD lNT REINICIALlZACION (RESET) Conexiones de la fuente de alimentación Señales de reloj Líneas de datos Líneas de dirección Sincronizador «Strobe» de dato de entrada MPU en estado de espera .,.-" «Strobe» de escritura Conocimiento de mantenimiento Conocimiento de interrupción Entrada estable de datos Petición de mantenimiento Petición de interrupción Entradas Entradas Bidireccional Salidas Salida Salida Salida Salida Salida Salida Entrada Entrada Entrada (b) _o, Reinicialización de la MPU Entrada Funciones de patilla para el microprocesador Intel 8080 Figura 5.2. Las hojas de datos contienen diagramas de temporización elaborados que muestran las rela­ ciones entre las entradas de reloj y otras señales externas (sync, escritura. salidas de dirección, entradas/salidas de datos, etc.) así como operaciones internas. El fabricante también incluye esquemas que ilustran cómo se utiliza el procesador en un sistema mínimo. Un sistema mínimo basado en el 8080 puede incluir el microprocesador, reloj, controlador del sistema, RAM, ROM e , interfaces de los puertos de entrada/salida. .. http://librosysolucionarios.net , 111, Ii ¡ '!I¡: j!I" l 106 FUNDAMENTOS DE LOS MICROPROCESADORES n, Do IUS m OA1(8 BJ..OHtHTlONI\L IIlRnlo!ióo ACI AIlC AOC ADD ADD """" IVS INTERNO ~ DATOS ADI . ow o ", REti '" <: REG 011 oro, REO '" ANA ANA ANI L IlflJ. PUNTERODf. t'tt..A CON'fADOll DE PROORANt. ," '" ........ o"",""", mil U6l 01 CMA ~I --.. . .....-. ~_ +) '1/ ~'v GND REO M DATO I I • ( , I I ( , I ) cr REO M EllQ, EllQ. ElIQ, ETIQ. DATO EllQ, ElIQ, llM 00l RP OCR REG OCR M [)(J( RP CNC ePI CPO Al.IMENTAOON I ] Ole CMP OIP (fE ,....--... +tl v lo! M DATO EllQ ElIQ, ETIQ, CNZ CP PUfN'T'ES Dl e REO cm ce '" DATO REO I •• G I • I I ti JI •• I • I DI (a) Diagrama funcional de bloques del microprocesador lntel 8080 (Corles{a de ¡me! Corporation) dores A B C D E H L Acumulador • J!I( N 11 I'E JIO Il I.I:M Puntero de pila . ~ Contador de programa PORT • REO lo! .: Registros generales; usados como registros de 8 bits o como registros pares de 16 bits ~ II.T 11 111 111 IIIX 8 bits :'}eftalJza­ El RP ETIQ, ETIQ, EllQ, EllQ. EllQ, ETIQ, ETIQ, EllQ. EllQ. !OC( IlIRfL Ir :''IUl rmr t, l' >, ~ 1-'1 • :1 ............. - ... ,xoclo ........ 16 bits (b) Registros de programación de la CPU dellnte18080 ~*"""*." :..."<IlInI • ......",. :=n.EJS Figura 5.3. Las hojas de datos del fabricante también contienen información detallada sobre el repertorio de instrucciones de'! microprocesador. El resumen del repertorio de instrucciones para los micro­ procesadores Intel 8080/8085 se muestra en la Figura 5.4. El Intel 8085 es una versión actualiza­ da del microprocesador 8080 y utiliza casi el mismo repertorio de instrucciones. El procesador 8085 se estudiará con más detalle en los Capítulos 10 Y 11. http://librosysolucionarios.net ,,1 -,"".' I • :..:m..CIO_ ~lurt,xEJS )o,~ ..... 0 ....... 107 EL MICROPROCESADOR IIISlrIa:ÍIÍI 1('1 ~ ~ WD WD WI / \.I;A m:; T'f\4P m;¡ ~A '" \.1;1 C>J.l. '" ('( !t, CM """ (j) ~ ., '" (1,(A AftftAY DE fttrotsnOS l)I( (16) [\,Ip m; (16) CMP C'IC C1' C1'E M ETlQ. ETlQ. ETlQ. ETIQ. C1'I DATO CI'O ETIQ ElIQ. ... e DATO REG M REG M DATO REG M DATO ETlQ. ETlQ. ETlQ. c:sz 116' cr ""1 1lAA L ~ Corporation) DUl OCR OCR OCX DI El IIl.T RP l)i PORT REG M RP ETlQ. ETlQ. ETIQ. ETIQ. ETlQ. ElIQ. EllO· EllO· EllO· DIREC. RP DIREC. lS.. I"íR l"X r ;'1 :'IP .X :'V. ;p :PE .'/O ::z ~ ! ..DU _"lO REG M RP Cidil" CE dato IIXIJ ISSS lE IIXIJIlSSS 86 C6dalO IOIOIlSSS A6 E6 dalO COd.... OCd.... Fe di",. lF 3F 1011lSSS BE IJ4dí",. C4dí",. F4dí",. EC dí",. FE dalO E4d,,,,. CCdí", )1 ooRP 1001 OOSS SIOI 35 ooRP 1011 FJ FB '6 00"'110 SIrO J4 OORPOOII DAd,,,,, FA dím:, C3dím:. 01 dím: C2 d,m:. Fl d,m:. EA dí,."" E1di,."" CAd,m: lA di",. IXIJX 1010 2.... dírec, m BJIIS 1 1 1 1 1 1 1 1 1 J J J 1 1 1 1 3 J 3 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 J 3 3 3 3 3 J 1 1 1 : ... ......... T MeSA 8()!(lA 1 7 4 1 4 1 4 1 4 4 J J J J 18 9118 9/18 17 11/11 11/11 4 4 4 4 4 7 11117 11/11 11/11 4 J 9/18 9/18 9/18 9/18 7 9/18 9/18 4 10 , llfll 10 6 4 4 4 4 l 10 7 10 í 10 5 10 10 10 10 10 10 10 10 10 4 10 6 l/lO 1/10 10 7!1O 7¡10 '/10 '/10 1¡1O 1¡10 Il 1) 16 7 16 , FR SRRWW' SRa¡SRRWW' SRa¡SR RWW' F F F FR SRtSUWW' S RaS RRWW' S RaS RRWW' SRas RRWW' FR SRas RRWW' SRaSRRWW' F FOO F' FRW S' F F FB FRl F' FRW S' FRjFU' FRíFRR' FRR FR;FR R' FR!FRR' FRJF RR' FRJFRR' FRIFRR' FR/FRR' FRRR FR FRRRR CooíSU Byle5 EmdosT Cirio! maquina MeSA 8Oi0A FR 11117 11117 4 10 5 10 5 4 Il1!InI<tión Fl F FR F FR FR F 1 1 4 J CiClos RP, DATOl6 LXI MOV REG,REG MOV M.REG MOV REG.M MVI ROO.DATO MVI M.DATO NOP ORA REO ORA M DATO ORI OUT PORT I'CHL POP RP PUSH RP RAL lAR Re RET RIM (.SA sóIol RLC RM RN( RNZ Rr RPE RPO RRe N RSi RZ SBB REG SBO M DATO S81 SHlO DIREC SlM (8Oií~ sólo) SPHL DlREC SH snx RP SIC SUB REG SUB M DATO SUI XCHG XRA REG XRA M XRI DATO XTHl OORPIXIJI darol6 0100 DSSS J 10 10 FRR 1 4 j F' Olll~ I 1 , 1 01000110 0000 DIlO dalO 36 dala 00 10111lSSS B6 F6 dalO Dldal!> E9 11 RP IXIJI 11 RP 0101 FW FR FR FR W F F FR FR FRO S' FU SWW' F F s¡s RR' FRR F F S.IS Rl' SiS RR' SiS RR' SiS RR' s¡s RR' S¡S RR' F SWW' S!S RR' F FR FR FRRWW F S' FRR W FW F F FR FR F F FR FR FRRWW 17 IF 08 C9 10 01 R DO ro FlI E8 EO OF 11 XX XIII C8 1001lSSS 9E DEdal!> 21 din<;. JO F9 12_ IXIJXOOIO 31 1001 !lSSS % D6dalo EB 1010 I$SS AE EEdalO El 1 7 1 1 ) 2 10 10 I 4 4 I I 1 1 1 1 J 4 4 1 1 10 I I I 10 6 10 12 4 1 4 4 I 6/11 10 íill 1 1 4 4 I I I I I I 6112 6/11 I 6f1l 6112 6112 6/12 j 10 11 4 10 4 5111 5:!1 5ill 5/11 1/11 5{11 4 11 I 4 I 12 6il2 5111 4 4 1 1 16 7 1 16 1 1 I 2 1 1 1 J 1 1 1 1 1 I 1 1 1 1 4 6 Il 1 4 4 , 1 4 4 J 1 16 1 Il J 4 4 J 1 4 4 1 1 18 -_do Ciclo máquina .. \ sobre el repenone' lllisqueda de instr. de cuatro periodos di! reloj &!Queda de instr. de ~i! periodo! di! reloj ltcrura de memoria ltc1ura de E./S Escritura en memoria Esentura de E/S Bu! desocupado Variable o digl10 binario opcional DIJítos binarios que idl!ntifican un "'Sistro destino B-rol. C-OOI. 0-010 Mmori.·11O E-OII. H-IOO.l-IOI A-III Dí¡iIO! binariO! que idenlifican un re¡¡SlrO fuente Be-OO. HL-IO RP Resi sao par DE _01. SP _ 11 • Blísqueda de ,n!lruceión de cinco periodos di! reloj en 808OA. t La lttuenCJa más larga del ciclo máquina se aplica de la evaluación de condición en el 808OA. es. presenlaf1Í un ciclo extra de leclUra (READI-R- para esla condición en el 8080A, 000 SSS es para los micro­ versión actualiza. El procesador Repertorio de ínstrucciones para los microprocesadores Intel 8080{8085 (Cortesía de lmel Corporalion) les. Figura 5.4. I te http://librosysolucionarios.net SI iW - 108 I · . • .• ,.1,:.• ti , • <-; FUNDAMENTOS DE LOS MICROPROCESADORES Considerar las primeras instrucciones del 8080;8085 de la Figura 5.4. La instrucción «suma con arrastre inmediato» se simboliza con el nemotécnico especial de Intel: ACI. El código de op para la instrucción es CEH, como muestra la segunda columna (<<Código)). La tercera columna (<<Bytes))) indica el número de bytes de memoria del programa que necesita la instrucción. La ~ tabla muestra que la instrucción ACI requiere 2 b)1eS del espacio de memoria de programa; la primera posición contendrá el código de op CEH, mientras que la segunda posición de la memo­ ria del programa contendrá el número que se va a sumar: el dato o el operando. La columna de «Estados T)) muestra la duración relativa del tiempo que tarda en ejecutarse la instrucción. La columna derecha de la tabla se refiere a las operaciones externas básicas que la CPU está realizan­ do. En este caso la F significa búsqueda normal de la instrucción desde la memoria de programa, mientras que la R significa lectura de memoria. Resúmenes del repertorio de instrucciones como el de la Figura 5.4 son extremadamente valiosos para la persona que deba programar un sistema microcomputador basado en el 8080. También se incluyen en el manual de datos detalles adicio­ nales de cada instrucción. PROBLEMAS RESUELTOS 5.8. Citar al menos cinco cosas que contenga la hoja de datos de un microprocesador típico. Solución: La hoja de datos de un microprocesador típico puede contener información sobre empaqueta­ miento del CI, diagrama de patillas, nombre y función de cada patilla del CI, organización o arquitectura del microprocesador, diagramas de tiempo, repertorio de instrucciones y sistemas típi­ cos que utilizan el procesador. 5.9. Cuando se mira desde arriba, la patilla I está inmediatamente a continuación ___ (en el sentido de las agujas del reloj, en sentido contrario de las agujas del reloj) de la marca índice en un CI DIP. Solución: Acudir a las Figuras S. te Yd. Cuando se miran desde la parte superior, la patilla I está inmedia­ tamente a continuación, en sentido contrario a las agujas del reloj. la marca índice. 5.12. Acudir microp: SoluciÓII Segú 5.13. Acudir CPU di Soluciól Segu B. C. D registro 5.14. Acudir Soluciól Segil derecha 5.15. Los ser de inst: SoluciGI Los 5.16. Acudir es ADl Soluciíl scp op del I 5.17. AcudiI ria del Soludt 5.10. Acudir a lí:l Figura 5.2. Las patillas Do a D7 del CI 8080 son líneas de datos _ _ (de entrada, de salida, bidireccionales) que están conectadas al bus de datos del sistema. Solución: De acuerdo con la Figura 5.2, las patillas Do y D7 en el CI 8080 son líneas de datos bidireccio­ nales. il.·.;,..' P' 5.11. Acudir a la Figura 5.2. ¿Qué salida del microprocesador 8080 estará activada por un nivel BAJO durante la operación de escritura? Solución: Según la Figura 5.2b. la salida WR será activada por un nivel BAJO para indicar a un dispositivo de memoria del sistema que el dato se va a escribir en memoria. '. I ;.1 5.18. Acudi través tura). Soluri Sei que la La Fe la R s j http://librosysolucionarios.net l"',,·, Seg suma i I I. I~ • • • • • • EL MICROPROCESADOR bstrucci6n «suma 1. El código de op 1 tercera columna la instrucción. La 1 de programa; la ción de lé;! memo­ ¡). La co1umna de la instrucción. La :pe está realizan­ :>rÍa de programa. strucciones como ramar un sistema I)S detalles adicio­ 109 5.12. Acudir a la Figura 5.2. ¿Qué tensión suministra la unidad de alimentación que utiliza el microprocesador 8080? Solución: Según la Figura 5.2, el 8080 requiere tensiones de alimentación de -5, +5 y + 12 V. 5.13. Acudir a la Figura 5.3b. Citar como mínimo seis registros de uso general localizados en la CPU del 8080. Solución: Según la Figura 5.3b, los registros de propósito general de 8 bits de la CPU 8080 son los registros B, C, D. E. H Y L. Aunque no esté etiquetado como tal, el acumulador también se considera un registro de propósito generaL 5.14. Acudir a la Figura 5.30. El registro contador de programa contiene _ _ bits. Solución: Según la Figura 5.3a, el contador de programa contiene 16 bits (observar el pequeño 16 a la derecha del bloque contador de programa). IOCeSador típico. 5.15. Los señalizadores (registro de status) están asociados con ___ (la ALU, el decodificador de instrucciones). sobre empaqueta­ Solución: Los señalizadores están más asociados con la ALU. ::1. organización o !leS y sistemas típi­ ación _ _ (en ~oj) de la marca l,"'" ¡nmedia. te. 5.16. Acudir a la Figura 5.4. El nemotécnico de Intet para la instrucción de «suma inmediata)} es ADI. El código de op del 8080 para la instrucción ADl es _ _ (hex). Solución: Según la Figura 5.4. el nemotécnico para la instrucción «suma inmediata» es ADI y el código de op del 8080 es C6 16 • 5.17. Acudir a la Figura 5.4. La instrucción ADI necesitará _ _ (un número) bytes de memo­ ria del programa. Solución: Según la infonnación de la columna «Bytes» de la Figura 5.4, la instrucción ADI (instrucción de suma inmediata) necesitará 2 bytes de memoria de programa. datos _ _ (de del sistema. ~ datos bidireccio­ L por un nivel r a un dispositivo • I ~I ,I 5.18. Acudir a la Figura 5.4. Durante la ejecución de la instrucción ADI, la CPU del 8080 va a través de un ciclo máquina de búsqueda de instrucción y un ciclo de ___ (lectura, escri­ tura). Solución: Según la información de la columna «Ciclos máquina» de la Figura 5.4, la instrucción ADI hace que la CPU vaya a través de un ciclo máquina de búsqueda de instrucción y de un ciclo de lectura. La F en la columna «Ciclos máquina» significa un ciclo de búsqueda de la instrucción. mientras que la R significa un ciclo de lectura de memoria. http://librosysolucionarios.net 110 FUNDAMENTOS DE LOS MICROPROCESADORES 5.3. FUNCIONES Y DIAGRAMA DE LAS PATILLAS En las siguientes secciones se examinará un microprocesador genérico algo más complejo. Este microprocesador tendrá muchas de las características de las unidades reales. Por simplicidad se han omitido muchas señales específicas de la MPU. El diagrama de patillas del microprocesador genérico se muestra en la Figura 5.5a. La MPU está ubicada en un DIP de 40 patillas. Este CI utiliza una fuente de alimentación de 5 V conecta­ da a las patillas 1 y 2. La utilización de fuentes de alimentación de +5 V parece lo más común en los diseños más modernos de microprocesadores. Las patillas XI y X 2 en la parte superior derecha de la Figura 5.5a son para conectarlas a un cristal que regule la frecuencia de reloj de la MPU. Como es habitual en las unidades más modernas, la circuitería de reloj se construye dentro de la pastilla microprocesadora, mientras que los diseños más antiguos necesitaban un circuito generador de reloj separado. La salida CLK (patilla 38) es una señal de reloj que se utiliza como reloj del sistema. La frecuencia de la salida de CLK es probablemente menor que la del reloj interno. El bus de direcciones del sistema se conectará a las patillas del CI etiquetadas AQ a A IS en la Figura 5.5a. Estas 16 salidas de dirección pueden acceder hasta 65.536 (2 16 ) posiciones de memo­ ria y/o entradas/salidas. El flujo de instrucciones y datos dentro y fuera del microprocesador pasa a través de las patillas etiquetadas Do a D7 en el CI de la Figura 5.5a. Estas patillas (21-28) son bidireccionales, ya que unas veces sirven como entradas y otras como salidas. En general, estas patillas de datos también pueden ser colocadas en la condición de tres estados (estado de alta impedancia). La patilla 30 del CI de la Figura 5.5a es la salida de control de escritura. Un nivel BAJO en la patilla WR indica que el dato del bus de datos se va a grabar en la posición de memoria o E/S, seleccionada. La salida de control de lectura está etiquetada RD (patilla 31) en el CI de la Figu­ ra 5.5a Un nivel BAJO en la patilla RD indica que se va a leer la memoria o el dispositivo de E/S, seleccionado y que el bus de datos está disponible para transferir el dato leído. La lectura se realiza cuando la señal RD está en el nivel BAJO. La habilitación de la entrada de reinicialización en la Figura 5.5a hace que la MPU suspenda su trabajo en el programa actual y bifurque a una rutina de inicialización. Un nivel BAJO en la entrada Rl!JNttIALIZACION de la MPU pondrá en reiniciaHzación el contador de programa con algún número predeterminado, como por ejemplo 000° 16 , Los demás registros internos de la CPU también se pueden poner a cero o cambiar sus contenidos durante la operación de reiniciali­ zación. Cuando la entrada de REINICIALlZACION alcanza de nuevo el nivel ALTO (inhabilita­ do), la CPU comenzará a ejecutar instrucciones en la nueva posición de memoria 0000 16 (u olra posición predeterminada de memoria). En esta posición de memoria comienza una rutina de inicialización habitualmente almacenada en la ROM. La mayoría de las acciones del microproce­ sador se realizan en conjunción con el reloj, y por tanto se dice que son síncronas. La entrada de RE/NICIALIZACION a la MPU es asíncrona y puede interrumpir y detener una instrucción a medio ejecutar. La entrada de petición de interrupción al microprocesador es la patilla 35 en la Figura 5.5a La entrada INTR responde a un nivel ALTO de algún dispositivo externo. La Figura 5.6 ayudará a demostrar lo que ocurre cuando la MPU responde a la señal de petición de interrupción. Suponer que el circuito de interfaz de entrada de la Figura 5.6 tiene 8 bits en paralelo listos para transferir­ los a la MPU. El procedimiento puede seguirse a través de los números inscritos en los círculos de la Figura 5.6 como se indica: http://librosysolucionarios.net alimen' 1 Nombre ( GND. l' XI,X: CLK AQ-AI~ DQ-D RD WR lNTR RE/SIC fRESE. {~. , ·I····'····? EL MICROPROCESADOR más complejo. Este . Por simplicidad se Fuente de { alimentación de + 5-V GND XI v"c x2 111 CLK lota 5.5a. La MPU ión.de 5 V conecta­ :e Id más común en Ao Al lalasconectarJas a un unidades más Al I Kiora. mientras que do. La salida CLK :uencia de la sa1ida Bus de direcciones A3 A4 As A6 INTR REINIC1A­ Reinicialización LlZACION RD WR )Siciones de memo- As Do La a través de las A9 D, AtO D2 Al! D3 A¡2 D4 Ds D6 D7 bidireccionales, ya patillas de datos impedancia). 11 nivel BAJO en la le memoria o E/S, D el el de la Figu­ dispositivo de E/S. :ido. La lectura se IS la Figura 5.5a La Ira 5.6 ayudará a llpción. Suponer IS para transferir­ en los círculos de Lectura Escritura A7 actas Ao a A IS en la la MPU suspenda nivel BAJO en la actor de programa Iros internos de la lCión de reiniciali­ !\LTO (inhabilita­ lria 0000'6 (u otra tza una rutina de :s del mícroproce­ as. La entrada de ma instrucción a Petición de interrupción Al) AI4 AI5 (a) Bus de datos bidireccional Diagrama de patillas para un microprocesador genérico I Nombre de patilla Propósito Entrada o salida GND. Ve, • ¡ Xi' Xl CLK Ao-A I5 Do-DI RD WR INTR REINICIALIZACION (RESET) Conexiones de la fuente de alimentación Conexiones de cristal para el reloj interno Señal del reloj Bus de direcciones Bus de datos Control de salida Control de escritura Petición de interrupción Entrada Entradas Salida Salidas Bidireccional Salida Salida Entrada Reinicializa el contador de programa Entrada 1 (bJ Funciones de las patillas para un microprocesador genérico . ¡ Figura 5.5. http://librosysolucionarios.net ..• I 'I ', !I 1i¡i>i>II'III'I!~.i!III!Ill~~1 HIIIIUi• •_ _IIRIII_ . '.,:¡; i l·. 112 .1 FUNDAMENTOS DE LOS MICROPROCESADORES 4. LaMPU Interfaz de entrada contiene direccíól de senlc 20DE la vuelva a 5. Antes d( sacados 6. El conta prograrn INTR MPU I RAM Memoria del programa principal le~ 2005 .. · . ~~ La interruJX MPU para hace;' o más interrupc ción, reiniciado 5 2006 •• • . " 1 I Memoria de programa I 5.19. Acudir de _ _ das a UII 4 Solución:: Segun ría de rel. 5.20. Acudiri es _ _ Solucióll: LafH Memoria de lectura/escritura (patilla 5 Figura 5.6. Pasos en el tratamiento de una entrada de petición de interrupción al microprocesador genérico. 5.21. Acudir, parte de: Soluciéll: La PI 1. ·l. " , , La interfaz de entrada envía una sefial de petición de interrupción a la MPU. Ver el número 1 inscrito en el círculo de la Figura 5.6. 2. La MPU completa la instrucción que está ejecutando (instrucción de la posición de me­ moria 2006H). 3. Debido a que el control debe volver posteriormente a la instrucción 2007H, los conteni­ dos del contador de programa (ahora 2007H) y de la mayoría de los registros internos de la CPU son introducidos en un área especial de la RAM denominada pila. Estos serán devueltos posteriormente en el orden adecuado a los registros de la CPU y contador de programa. de una n S.22. Acudir 1 habílítaJ ga _ _ SoluciÓft SegW haciend< CIO\ Ir http://librosysolucionarios.net 1 1 1111 I '11.11111111111111111.,1 1 EL MICROPROCESADOR 113 La 'Mpu ahora bifurca a una dirección predeterminada, de la memoria de programa, que contiene un programa especial denominado rutina de servicio de interrupción (en la dirección 20DO de este ejemplo). La MPU ejecuta entonces las instrucciones de la rutina de servicio de interrupción, que en este caso es una operación de entrada. En la dirección 20DE la MPU encuentra el fin de la rutina de servicio de interrupción y se le indica que vuelva al programa principal. 5. Antes de volver al programa principal, los datos del contador de programa y registro son sacados de la pila y devueltos a la CPU. 6. El contador de programa ahora devuelve la CPU a la posición de memoria 2007H del programa principal, donde continúa. 4. , La interrupción es un método muy útil de permitir que un dispositivo periférico obtenga la MPU para hacer algo de manera casi inmediata. La mayoría de los microprocesadores tienen una o más interrupciones. Las entradas de interrupción también pueden denominarse de reinicializa­ ción, reiniciadoras, interrupciones enmascarables o trampas. ~. PROBLEMAS RESUELTOS 5.19. Acudir a la Figura 5.5. Este microprocesador utiliza una fuente de alimentación de _ _ V Y circuitería de reloj _ _ (externa, interna) con las patillas 39 y 40 conecta­ das a un(a) _ _ (tensión ac, cristal). Solución: Según la Figura 5.5, este microprocesador utiliza una fuente de alimentación de +5 V y circuite­ ría de reloj interna con las patillas 39 y 40 conectadas a un cristal. 5.20. Acudir a la Figura 5.5a La flecha apunta hacia fuera desde la patilla 5 porque este terminal es _ _ (bidireccional, de entrada, de salida). Solución: La flecha apuntando hada' afuera'enla Figura 5.5a simboliza que este terminal de dirección (patilla 5) es una salida. 5.21. I Solución: La patilla 30 de la Figura 5.5a es la salida de escritura, que se considera parte del bus de control de una microcomputadora. a MPU. Ver el JOSición de me­ 'H. los conteni­ :ros internos de fta. Estos serán y contador de I Acudir a la Figura 5.5a La línea que deja la patilla 30 del microprocesador se considera parte del bus de _ _ (direcciones, control, datos) de una microcomputadora. 5.22. Acudir a la Figura 5.5a Una señal BAJA en la patilla 33 del microprocesador _ _ (in­ habilitará, habilitará) la entrada de reinicialización, haciendo que la MPU pon­ ga ___ (el contador, la memoria) de programa a 0000 16, Solución: Según la Figura 5.5, una señal BAJA en la patilla 33 habilitará la entrada de reinicialización, haciendo que la MPU ponga el contador de programa a 000° 16 , La barra sobre REINICIALIZA­ CION indica que se necesita un nivel BAJO para habilitar esta entrada . http://librosysolucionarios.net • ~ . ", al I 114 FUNDAMENTOS DE LOS MICROPROCESADORES 5.23. Acudir a la Figura 5.5. La patilla" de reinicialización es una entrada ___ (asíncrona, síncrona), ya que no actúa en conjunción con el reloj. Solución: La patilla de reinicialización en la MPU de la Figura 5.5 es una entrada asíncrona ya que no actúa en conjunción con el reloj. 5.24. Acudir a la Figura 5.5. Las transferencias de datos son realizadas con palabras en paralelo de ___ bits en este microprocesador. I Solución: De acuerdo con la Figura 5.5a. el bus de datos debe ser de 8 bits, y por tanto las transferencias de datos son realizadas con palabras en paralelo de 8 bits. tf 5.25. Acudir a la Figura 5.5. Una señal de petición de interrupción es una ___ (entrada, salida) del microprocesador. ~ Circuite Lógica ( 8. Lógica ( 6. 7. En la última dor genérico. L interna del mie Comenzand bus de datos bíí tiene 16 salidas de control se ID Dos señales de e son las líneas de de reloj que sol Solución: Según la dirección de las flechas de la Figura 5.5, una señal de petición de interrupción es una entrada al microprocesador. 5.26. U na petición de interrupción hace que la MPU bifurque y ejecute una ______ en la memoria de programa y despuéS vuelva al programa principal. 't Solución: Según la Figura 5.6. una petición de interrupción hace que la MPU bifurque y ejecute una rutina de servicio de interrupción en la memoria de programa y despuéS vuelva donde dejó el programa principaL :~. .. Bus de J----, jlrecciones '-1 ,/~ , I 5.4. ARQUITECTURA DEL MICROPROCESADOR (16) Casi todos los microprocesadores contienen como mínimo lo siguiente: .­ 1. 2. 3. 4. 5. 6. 7. 8. Buffer! cerrojos '" Ao-A 1S Unidad aritmética y lógica. Varios registros. Contador de programa. Circuitería de decodificación de instrucciones. Sección de control y temporización. Cerrojos y buffers de datos. Líneas de control y buses internos. Varias entradas y salidas de control. Escritura 1---'­ __ WR RD Además de estos elementos, una pastilla microprocesadora puede contener también algunas de las unidades funcionales siguientes: 1. Memoria ROM. 2. _ Memoria RAM. 3. Puertos de entrada/salida serie. 4. Circuitería de reloj interna. 5. Temporizadores programables. CLK Reloj 1 Figu http://librosysolucionarios.net 11111 I1 1 11 1 EL MICROPROCESADOR L (asíncrona, asíncrona ya que no Ilabras l t paralelo transferencias de t l _ _ (entrada, 115 6. Circuitería de arbitración de prioridad de interrupciones. 7. Lógica de interfaz de comunicación de E/S serie a paralelo. 8. Lógica de control de acceso directo a memoria. En la última sección se estudió el diagrama y las funciones de las patillas de un microprocesa­ dor genérico. La arquitectura de esa misma MPU se examinará en esta sección. La organización interna del microprocesador, o arquitectura, se ilustra en la Figura 5.7. Comenzando con las conexiones externas, la MPU de la Figura 5.7 tiene ocho conexiones del bus de datos bidireccional que conducen al bus de datos interno. En la parte izquierda, la MPU tiene 16 salidas del bus de direcciones que memorizan las direcciones del bus interno. Las salidas de control se muestran en la parte inferior izquierda; y son las líneas de escritura, lectura y reloj. Dos señales de entrada son aceptadas por esta MPU en la parte inferior derecha de la Figura 5.7; son las líneas de petición de interrupción y de reinicialización. Esta MPU tiene circuitería interna de reloj que solamente necesita para que opere un cristal externo (o un capacitador en algunos MPU lterruPCión es una ~ Bus interno - - ___ enla I , ejecute una rutina ~ dejó el programa Bus interno Complementador y .---_--1 Bus de ~~4-I Do-D, Buffer/ cerrojos ~sp::or _ _ datos (8) Registro de datos/direcciones Bus de t - - - - , brecciones (16) ~~ ~::~¿s Contador de programa A o-A'5 Contador de fila Escritura I-:===-__ __.JL----I~_ _ _.l...-_ _ _ _.L...._ ___.J~_ _.....J.._ _ _ _'___ __'____I WR REINIClAL/ZACION Temporización y control I-R_D_ _ _ _ _- y_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _--,r-______-t Petición de INTR interrupción CLK bién algunas de +5V Reloj r • ISU'.:: GND ~ ~ Cristal Fuente de alimentación Figura 5.7. t Diagrama de bloques funcionales del microprocesador genérico. http://librosysolucionarios.net i EtW Reinicialización I 116 FUNDAMENTOS DE LOS MICROPROCESADORES casos). El microprocesador de la Figura 5.7 está alimentado por una sola fuente de alimentación de 5 V. Las funciones de la mayoría de las unidades de la MPU de la Figura 5.7 han sido examinadas en explicaciones anteriores. Estas funciones se definen a continuación de forma breve: l. 2. 3. 4. 5. 6. 7. Registro de instrucción: Esta unidad es un registro de 8 bits que contiene el primer byte de una instrucción (el código de op). Decodificador de instrucciones: Esta unidad interpreta el contenido del registro de ins­ trucción, determina el microprograma exacto que se debe seguir para ejecutar la instruc­ ción completa y dirige adecuadamente la sección de control. Unidad aritmética y lógica: Esta unidad realiza las operaciones aritméticas, lógicas y de desplazamiento circular que afectan al registro de status (señalizadores). Los resultados de la sección de la ALU se colocan de nuevo en el acumulador vía el bus interno. El registro temporal y acumulador muchas veces se consideran parte de la ALU. Las condiciones de los señalizadores son realimentadas a la unidad de control y temporización. Acumulador: Esta unidad es un registro de propósito general de 8 bits que es el foco de la mayor parte de las instrucciones aritméticas, lógicas, de carga, almacenamiento y E/S. Contador de programa: Esta unidad es un área de almacenamiento de 16 bits que siempre apunta a la siguiente instrucción que se va a ejecutar. Siempre contiene una dirección de 16 bits. Puede ser incrementada o puesta a cero por la sección de controlo modificada por instrucciones de transferencia. Unidad de control y temporización: Esta sección recibe señales del decodificador de ins­ trucciones para determinar la naturaleza de la instrucción que se va a ejecutar. La infor­ mación del registro de status también está disponible para las bifurcaciones condicionales. Las señales de temporización y control son enviadas a todo el microprocesador para coordinar la ejecución de las instrucciones. También se generan las señales externas de control. Registro de status: La MPU genérica, muy sencilla, de la Figura 5.7 contiene solamente los señalizadores de cero y arrastre en su registro de status. Las unidades recientes añadidas a este microprocesador incluyen el reloj interno, control de interrupción, puntero de pila y registro multipropósito de direcciones/datos. La circuitería de reloj interna, junto con el cristal externo, genera señales similares a las de la Figura 5.8. El circuito de reloj genera una señal de reloj de dos fases sin solapamiento para utilizarla en el interior la MPU. La salida CLK del MPU es similar a la señal de reloj 02 y sirve para sincronizar acciones en el sistema completo. En la Figura 5.8, las señales de reloj se dividen en estados T (TI' T 2, etc.) y una división de tiempo mayor denominada ciclo máquina. Los estados T son siempre de una duración determinada, mientras que la longitud de un ciclo máqui­ na puede variar. La Figura 5.8 muestra un ciclo máquina que consta de cuatro estados T. La relación entre los estados T (TI' T2, etc.) y los ciclos máquina (MI' M 2, etc.) se muestra en la Figura 5.9a. Los ciclos máquina se asocian a acciones de la MPU, como lectura, escritura, búsqueda o ejecución. En este microprocesador los tipos de ciclo máquina son: 1. Lectura (busca un código de op). 2. Lectura de memoria o E/S. 3. Escritura en memoria o E/S. 4. Ejecución de una operación interna. http://librosysolucionarios.net '!i: ' La instrucción 4 ra 5.9a. Estos se memoria de pn de escritura en escritura) se del los ciclos máqll tiene cuatro est; uno. El ciclo e dos T. Un ejemplo la Figura 5.9a. (lectura). Durar ciclos máquina byte de la mem la ALU del mic misma longitud La unidad t externo a tra'-é control a tra..-é bifurca a una I cuando se com El puntero. dirección, decrt El puntero de dirección. El tr El registro I 8 bits que pUe( registros de d.ir rior y el de ord menos que se 11 registros de pn , EL MICROPROCESAOOR ~ de alimentación I sido examinadas 13 breve: rases mternas r:' ~ el primer byte de ~ reiistro de ins­ jecutar la instruc­ ticas. lógicas y de Los resultados de Iterno. El registro lIS condiciones de :ión. lit' es el foco de la ll1liento y E/S. bits que siempre una dirección de o modificada por I Idificador de ins­ lecutar. La infor­ es condicionales. procesador para iales externas de !tiene solamente terno, control de úlares a las de la lapa miento para : reloj 02 y sirve ~ reloj se dividen fI máquina. Los un ciclo máqui­ estados T. ~) se muestra en ctura, escritura, 1 117 de reloj {0 1 02-+---­ CLK salida ......--' ~-----------------v------------------J Ciclo máquina Figura 5.8. Formas de onda del reloj. La instrucción de almacenamiento está dividida en cuatro ciclos máquina (MI - M 4 ) en la Figu­ ra 5.9a. Estos son: primero, la búsqueda del código de operación (lectura); segundo, la lectura de memoria de programa; tercero, otra lectura de la memoria del programa, y cuarto, la operación de escritura en memoria. La combinación completa de cuatro acciones (lectura, lectura, lectura y escritura) se denomina ciclo de instrucción, como muestra la Figura 5.9a. Observar que no todos los ciclos máquina tienen la misma duración. En la Figura 5.9a, el primer ciclo máquina (M,) tiene cuatro estados T mientras que los otros ciclos máquina tienen solamente tres estados T cada uno. El ciclo completo de instrucción para la instrucción de almacenamiento tiene 13 esta­ dos T. Un ejemplo de la temporización de una instrucción de suma inmediata (ADD) se muestra en la Figura 5.9a. El primer ciclo máquina (M,) es la operación de búsqueda del código de op (lectura). Durante T4 de MI' la MPU decodifica la instrucción ADD y decide que necesita dos ciclos máquina más para completar la instrucción. El segundo ciclo máquina (M,) lee el siguiente byte de la memoria del programa como operando, mientras M3 ejecuta la operación de suma en la ALU del microprocesador. Observar en la Figura 5.9 que los ciclos máquina no tienen todos la misma longitud ni son ciclos de instrucción. La unidad de control de la Figura 5.7 aceptará una señal de interrupción de un dispositivo externo a través de la entrada INTR. Entonces, guía las acciones de la MPU vía la unidad de control a través de los pasos 2 a 6 esbozados anteriormente en la Figura 5.6. De forma breve, bifurca a una rutina de servicio de interrupción que responde a la petición de interrupción y cuando se completa vuelve al programa principal. El puntero de pila de la Figura 5.7 es como un contador de programa, ya que contiene una dirección, decrementa o incrementa su contenido y puede ser cargado con una nueva dirección. El puntero de pila es de 16 bits en este microprocesador, así que puede acceder a 16 líneas de dirección. El uso del puntero de pila se detallará más tarde en la Sección 5.6. El registro de direcciones/dalos de la Figura 5.7 realmente está formado por dos registros de 8 bits que pueden ser utilizados separadamente o como un par de registros combinados. Los dos registros de direcciones/datos de 8 bits están etiquetados con H y L (para el byte de orden supe­ rior y el de orden inferior). Habitualmente son referenciados como el registro H y el registro L a menos que se utilicen juntos, y entonces se denomina el par de registros HL. Los registros HL son registros de propósito general como el acumulador, ya que pueden ser incrementados, decremen- j, J http://librosysolucionarios.net • , ,O,' ,'1 '1: I,'I',! k' !~ 118 FUNDAMENTOS DE LOS MICROPROCESADORES Instrucción STORE (ALMACENAR) Almacena el contenido del acumulador en la posición de memoria dada por los dos siguientes bytes de la memoria de programa Solucióll Unt de la MI Ciclo de instrucción . M2 MI T, / T2 T) T4 Búsqueda del código de operación (a) T1 TI . M) A M4 A T) TI Lectura de la memoria de programa T1 T) TI Lectura de la memoria de programa T2 T} Escritura en la memoria Temporización y ciclos máquina para una instrucción de almacenamiento inmediato Instrucción ADD (SUMAR) Suma el contenido del acumulador a los del siguiente byte en la memoria del programa y deja la suma en el acumu­ lador Ciclo de instrucción . MI ., T, T2 M2 T3 Búsqueda del código de operación (b) T4 ' 1 TI T2 T3 Lectura de la memoria de programa l' 5.28. Acudir interno 5.29. Acudir accione­ Solución En ]¡¡ acciones control. 5.30. Elconu ciones. i Solución: El COI apunta a 5.31. Acudir a sección ( Suma Temporización y ciclos máquina para una instrucción de suma inmediata Figura 5.9. tados y cargados con datos y pueden ser la fuente de los datos almacenados. El registro HL también sirve como registro de direcciones ya que puede contener la dirección de destino de almacenamiento o la dirección fuente cuando se cargan datos. En resumen, los registros HL pueden ser utilizados para señalar direcciones. La Sección 5.5 tratará del uso del registro de direcciones/datos. Algunos microprocesadores tienen un registro especial denominado contador de datos que apunta a posiciones de memoria (utilizado como el registro par HL de esta unidad). PROBLEMAS RESUELTOS 5.27. Citar como mínimo seis unidades funcionales contenidas en la mayoría de las pastillas mi­ croprocesadoras. Solución; La mayoría de las pastillas MPU contienen como mínimo una ALU, varios registros, un conta­ dor de programa, circuitería de decodificación de direcciones, una sección de control y temporiza­ ción, bus con butTers y cerrojos, butTers internos y líneas de control y varias entradas y salidas de control. http://librosysolucionarios.net Solución: Las se ción de el instruccio 5.32. Citar cw está e-stuc SoluciÓll: El mle código de ción de UI 5.33. En la FII namient( Solucióll: Los es mente 9 e la instrua 5.34. Si cada e instruccit Solucióll: Lains Figura 5.S • EL MICROPROCESADOR bytes de la memoria de ¡ 119 5.28. Acudir a la Figura 5.7. ¿Qué unidad funcional se encuentra entre el bus de datos y ~I bus interno de datos de este microprocesador? Solución: Un buffer y los cerrojos del bus están localizados entre el bus de datos yel bus interno de datos de la MPU genérica de la Figura 5.7. 5.29. Acudir a la Figura 5.7. ¿Qué tres líneas de control de salida ayudan a sincronizar las acciones de otras partes de un sistema basado en microprocesador? Solución: En la MPU de la Figura 5.7, las salidas de lectura, escritura y reloj ayudan a sincronizar las acciones de las demás partes del sistema. La mayoría de los microprocesadores tienen más señales de control. en la memoria mediato 'la suma en el acumu­ 5.30. El contador de programa es un área de memoria de 16 bits reservada para _ _ (direc­ ciones, instrucciones). Solución: El contador de programa es un área de memoria de 16 bIts reserVada para direcciones. Siempre apunta a la dirección de la siguiente instrucción que se va a ejecutar. 5.31. Acudir a la Figura 5.7. Las señales de control de lectura y escritura son generadas por la sección de _ _ y _ _ de la MPU. Solución: Las señales de control de lectura y escritura son generadas por la sección de control y temporiza­ ción de esta MPU. La sección de control y temporización sigue las direcciones del decodificador de instrucciones o a veces la unidad de control de interrupciones. 5.32. Citar cuatro tipos de ciclos máquina utilizados por el microprocesador genérico que se está estudiando en esta sección. JiS. El registro H L ión de destino de , los registros H L 50 del registro de [)mínado contador ~ par HL de esta t Solución: El microprocesador genérico utiliza los siguientes tipos de ciclos máquina: lectura o búsqueda del código de op, lectura de memoria o entrada/salida. escritura en memoria o entrada/salida y ejecu­ ción de una operación interna. 5.33. En la Figura 5.9 ¿qué instrucción se ejecuta en menor tiempo la de suma o la de almace­ namiento? "".' Solución: Los estados T son siempre de la misma longitud. La instrucción de la Figura 5.9 necesita sola­ mente 9 estados T, mientras que la instrucción de almacenamiento requiere 13 estados T. Por tanto, la instrucción de suma necesita menos tiempo para ejecutarse. de las pastillas mi- . registros, un conta­ cntrol y temporiza­ ntradas y salidas de 5.34. Si cada estado Tes igual a 500 nanosegundos (ns), ¿cuánto tiempo tardará en ejecutarse la instrucción de suma de la Figura 5.91 ',;' 'j; Solución: La instrucción de suma tarda nueve estados T en ejecutarse de acuerdo con el diagrama de la Figura 5.9. Por tanto, 9 x 500 ns 4,5 )lS. La instrucción de suma necesita 4,5 )ls para ejecutarse. http://librosysolucionarios.net '..... 120 FUNDAMENTOS DE LOS MICROPROCESADORES 5.35. Acudir a la Figura 5.7. Activar la entrada INTR hace que la unidad _ _ _ _ indique a la sección de control y temporización que bifurque temporalmente a una rutina de servicio de interrupción en la memoria del programa. Memoria de Dirección! (hex) Solución: Al activar la entrada INTR de la MPU de la Figura 5.7 se logra que la unidad de control de interrupciones indique a la sección de control y temporización que bifurque temporalmente a una rutina de servicio de interrupción en memoria del programa. 2000 2001 5.36. El puntero de pila es como el contador de programa ya que contiene una _ _ (direc­ ción, instrucción) de ___ bits. 2002 Solución: El puntero de pila es como el contador de programa, ya que contiene una dirección de 16 bits. 2003 2004 5.37. Acudir a la Figura 5.7. Las dos unidades de almacenamiento etiquetadas con H y L se denominan registro de ___/___ . 2005 ~ 1 Solución: Las dos unidades de almacenamiento de la Figura 5.7 etiquetadas con H y L se denominan registro de datos/direcciones o registro de propósito general. ~ 5.38. Acudir a la Figura 5.7. Cuando los dos registros de datos/direcciones se conectan entre sí y se utilizan como un área de almacenamiento de 16 bits, se denominan el registro par ___ . I; Solución: Cuando los dos registros de direcciones/datos de la Figura 5.7 se conectan entre sí y se usan como un área de almacenamiento de 16 bits, se denominan el registro par HL. t .~ 5.39. Acudir a la Figura 5.7. Los registros de datos/direcciones pueden ser utilizados para alma­ cenamiento y manipulación de datos, o combinados como un par pueden ser usados para ______ (señalar direcciones, seleccionar datos). Solución: Los registros de datos/direcciones de la Figura 5.7 pueden ser utilizados para almacenar y mani­ pular datos, o combinados como un par pueden ser utilizados para señalar direcciones. 2006 2007 2008 , ¡ 2009 200A 2008 ....... - Memoria· ..... 2100 1 2101 5.5. lITILIZAOON DEL REGISTRO DE DIRECCIONES/DATOS U na característica interesante del microprocesador genérico de la Figura 5.7 es el uso del registro par HL para direccionar posiciones de memoria. Se dice que el registro par HL se utiliza como un puntero o puntero de dirección cuando temporalmente se encarga de la tarea del contador del programa principal apuntando a las direcciones de memoria o E/S. Algunos microprocesadores muy comunes, como el 8080/8085 y Z80, tienen registros de este tipo para apuntar a las direccio­ nes. El registro par HL también se denomina registro de direcciones, contador de datos, puntero, o registro de propósito general en otros microprocesadores. Considerar la sencilla tarea de sumar los contenidos de tres posiciones consecutivas de memo­ ria y almacenar la suma en la posición de memoria siguiente. Los contenidos de memoria de este http://librosysolucionarios.net J 2102 2103 2104 2105 Figura 5.'1 I J . L ___ indique , EL MICRbpROCESAOOR 121 Memoria del programa le a una rutina de Dirección Contenido (hex) (hex) - ._' ~ midad de control de rmporalmente a una 2000 3A 2001 00 2002 21 2003 21 2004 01 2005 21 r ~ L se denominan 2006 86 } Instrucción 3-ADD (SUMAR) bectan entre sí y mman el registro 2007 23 } Instrucción 4-INCREMENT (INCREMENTAR) registro par HL 2008 86 } Instrucción 5-ADD (SUMAR) 2009 23 200A 77 una _ _ (direc­ lllim:ción de 16 bits. Idas con H y L se ~ • entre , SI y Instrucción l-LOAD acumulador Instrucción 2-LOAD (CARGAR) registro par HL } Instrucción 6-INCREMENT (INCREMENTAR) registro par HL se usan lizados para alma­ lUeden ser usados 200B ...... } Instrucción 7-STORE (ALMACENAR) acumulador - ...... , Memoria de datos : 31 macenar y mani­ 'nes. d uso del registro r utiliza como un del contador del úcroprocesadores llar a las direccio­ le datos, puntero, !Utivas de memo­ memoria de este I .-, ..1 I r""'" ....... 2100 OC 2101 OA 2102 07 .--- Suma 2103 2104 i I ~j 2105 ",.... Figura 5.10. i i Contenidos e instrucciones de memoria para un problema ejemplo de suma. ',' I http://librosysolucionarios.net "~ 1M ~ 122 FUNDAMENTOS DE LOS MICROPROCESAOORES problema se detallan en la Figura 5.10. El programa se carga en las posiciones de memoria 2000H a 200AH, mientras que los tres números que se van a sumar (OCH + OAH + 07H) se cargan en las posiciones de la memoria de datos 2100H a 2102H. El programa contiene siete instrucciones, como se lista a la derecha de la Figura 5.10. Recordar que en este programa el contenido del acumulador siempre será la suma actual y el del registro par HL una dirección. La primera instrucción (código de op 3A) de la Figura 5.10 indica a la CPU que cargue el acumulador el contenido de la posición de memoria 2100H. La ejecución de esta instrucción de carga directa del acumulador se detalla en la Figura 5.11 a, donde el contenido de la posición 2100H de la memoria de datos se carga en el acumulador de la CPU. El acumulador contiene ahora el primer número que se va a sumar. La instrucción 2 de la Figura 5.10 indica a la CPU que cargue 210 1H en el registro par de 16 bits HL. Esta posición (210 1H) es una dirección en la memoria de datos. Esta es la instrucción de «cargar inmediato el registro par HL». La acción de carga exacta realizada por la instrucción 2 se detalla en la Figura 5.11 b. Observar que el contenido de la primera posición de la memoria del programa (2004H) es cargado en el byte de orden inferior (L) del registro HL. El contenido de la siguiente posición de la memoria del programa es cargado en el byte de orden superior H del registro par H L. La instrucción 3 de la Figura 5.10 indica a la CPU que sume el contenido del acumulador con el contenido de la posición de memoria señalada por el registro par H L. La Figura 5.11 e detalla el procedimiento de suma. El registro HL apunta a la posición 2101H de la memoria de datos. y la ALU suma su contenido (000010 102) al contenido del acumulador (00001100 2), dando una suma de 00010110" que se vuelve a transferir al acumulador. La instrucción 4 de la Figura 5.10 indica a la CPU que incremente (sume + 1 a) el contenido del registro par HL. La acción de incrementar de la CPU se muestra gráficamente en la Figu­ ra 5.IId. Observar que solamente ha cambiado el byte de orden inferior en el registro par HL. ¡ ( Registro de datOS/dil . . i l. Acumulador Acumulador Antes de la operaciÓII (a) Después de la operación Antes • Instrucción 1-cargar acumulador H L J. Registro de datosl direcciones Antes de la operación Después de la operación Memoria de programa (2004) (2005) (b) Instrucción 2-cargar registro par HL Figura 5.11 . http://librosysolucionarios.net -~ Registro de datos/dín= t EL MICROPROCESADOR lile memoria 2000H 7H) se cargan en las siete instrucciones, la el contenido del 123 " ¡ Acumulador Antes de la operación Después de la operación r>n. CPU que cargue el de esta instrucción nido de la posición umulador contiene 1 Memoria de datos (2101) Puntero de dirección L el registro par de (e) sta es la instrucción por la instrucción 2 la memoria del El contenido de la :len superior H del 1 de Registro de datos/direcciones Instrucción 3-sumar L..;.;;...;..;;....;;.;;...;..;J...;..;.....;...;..;.;;.¡ Registro de datos/direcciones L..-._ _---Í-_----.,,----l Después de la operación Antes de la operación Incrementa le. acumulador con :ura 5. 11 e detalla el noria de datos, y la !). dando una suma + 1 a) el contenido amente en la Figu­ I registro par HL. (d) Instrucción 4-incrementar registro par HL Acumulador Después de la operación Antes de la operación Memoria de datos (2102) 0000 0111 '1 unterOde ~ dirección H L I dor 2102H operación ~ Instrucción S-sumar L H Registro de datos/direcciones (e) H L @iO@IIO<2i' 00111 Registr~ de datos/direcciones r-----.-OO-oo....:;;oo-I-'-,Ó ' .. , ~ Antes de la operación Después de la operación Incrementa (f) Instrucción 6-incrementar registro par HL Registro de datos/ dí!'e\.'Ciones ~. 10001 11011 Acumulador Acumulador Después de la operación Antes de la operación la operación Memoria de datos (2103) ~ H L puntero de dirección 2103H (g) Instrucción 7-almacenar acumulador Figura 5.11. ) ai 2 ¡¡Sna: 2 • ! ¡ (continuación), http://librosysolucionarios.net I '11jI" "III'i!l lml il liMi liIIIU:m¡¡¡¡bl,,",IiIII1iI¡11 IlIIilJliI 1 1 1 I l1li IIIII ¡I II ,.....' j IlillIIIJI¡¡llli.,;;IIIIIII.IIII*II!mll~""I1lI", I 124 FUNDAMENTOS DE LOS MICROPROCESADORES La instrucción 5 de la Figura 5.10 indica a la CPU que sume, de nuevo, el contenido <1el acumulador con el de la posición de memoria señalada por el registro par HL. La Figura 5.lle muestra el registro H L señalando a la posición 21 02H de la memoria de datos. Los contenidos de ambas posiciones de memoria 21 02H Ydel acumulador se suman, dando la suma de 000 lII 01" que se coloca en el acumulador. ­ La instrucción 6 de la Figura 5.10 indica, de nuevo, a la CPU que incremente el registro par HL. La Figura 5.11! detalla gráficamente esta acción. La instrucción 7 de la Figura 5.10 indica a la CPU que almacene el contenido del acumulador (la suma 0001110 1,) en la posición de memoria señalada por el registro par HL. La Figura 5.llg muestra la suma dél acumulador almacenada en la posición 2103H de la memoria de datos. Las instrucciones que usaron el registro par HL corno puntero (instrucciones 3, 5 Y 7) utilizan un modo de direccionamiento llamado direccionamiento indirecto de registro. Los modos de direccionamiento se tratarán con más detalle en el capítulo siguiente. Memoria de Dirección (hex) 2010 2011 2012 PROBLEMAS RESUELTOS 2013 5.40. Otro nombre utilizado para el registro de direcciones es contador de _ _ (datos, progra­ 2014 \. \ , ( ma). Solución: Otro nombre utilizado para el registro de direcciones es contador de datos. 5.41. Acudir a la Figurá. 5.10. ¿Qué suma hexadecimal se transferirá a la posición 2103H de la memoria de datos una vez que se haya ejecutado el programa? Memoria ( ...... Solución: Sumar OC + OA + 07 = ID I6 (12 + 10 + 7 = 29 10), La suma de ID I6 se transferirá a la posición 2103H de la memoria de datos despuéS de que se ejecute el programa de la Figura 5.10. 5.42. fc'udir a las Figuras 5.10 y 5:11. El acumulador siempre ~ 2100 2101 co~tiene la _ _ (instrucción, suma), mientras que el registro par HL contiene una _ _ (dirección, cuenta del progra­ ma). 2102 2103 Solución: El acumulador de la Figura 5.10 siempre contiene la suma actual, mientras que el registro par HL contiene una dirección. La dirección del registro par HL se utiliza entonces para señalar a las ... posiciones de memoria. 5.43. Acudir a la Figura 5.10. Cuando se utiliza el registro HL corno puntero de dirección igual .. ....... 2104 2105 ..... ~ que en la Figura 5.1 lc, ¿qué modo de direccionamiento se está utilizando? Solución: En la instrucción 3 se está utilizando el modo de direccionamiento de registro indirecto (instruc­ ción de suma) de la Figura 5.10. 5.44. Acudir a la Figura 5.12. ¿Cuáles son los contenidos hexadecimales del acumulador y del registro par HL al principio de este programa? http://librosysolucionarios.net Sol_ Se: es 00 0010. EL MICROPROCESAOOR 10000 I 1I 11 AcuiñUlador Contenidos principio del H L programa { 1001 O 000 11 0000 00 \O 1 Par de registros H L • el contenido del [. La Figura 5JI e Los contenidos de 125 Memoria de programa ma de 00011101" tte el registro p~r Dirección (hex) Contenidos (hex) 2010 86 2011 23 2012 86 2013 23 2014 77 lo del acumulador [. La Figura 5.11g 20ria de datos. :s 3. 5 Y 7) utilizan ·0. Los modos de } } } } Instrucción l-ADD (SUMAR) el contenido de la memoria señalada por el registro HL al acumulador Instrucción 2-INCREMENT (INCREMENTAR) el registro par HL Instrucción 3-ADD (SUMAR) el contenido de la memoria señalada por el registro HL al acumulador Instrucción 4-INCREMENT (INCREMENTAR) el registro par HL ., (ALM).CENAR) el contenido del acumulador en } Instrucción 5-STORE la posición de memoria señalada por el registro HL 1......... Memoria de datos ción 2103H de la lerirá a la posición flra 5.10. t__ ('instruccIón, . uenta del progra­ que el registro par señalar a las 5 para le dirección igual .­ ~ ...... 2100 OA 2101 08 2102 OC 2103 OD 2104 OE 2105 OF ",.­ lo? Figura 5.12. Contenidos de memoria e instrucciones para un problema de suma. indirecto (instruc­ lmUlador y del , Solución: Según la información de la Figura 5.12, el contenido del acumulador al comienzo del programa es 00001111 2, Ó OF I6 • El contenido del registro par HL al comienzo del programa es 0010 00010000 00102 ó 2102 16, http://librosysolucionarios.net - . . ------------------------=>=--126 FUNDAMENTOS DE LOS MICROPROCESADORES Acumulador Acumulador 5.49. Acudil acuml Después de la operación Solucicí La señala 1 5.6. UTILl Figura 5.13. 5.45. ¿Cuál es el contenido del acumulador después de la ejecución de la instrucción 1 (instruc­ ción de suma) de la Figura 5.12? Solución: Ver Figura 5.13. 5.46. ¿Cuál es el contenido del registro par HL después de la ejecución de la instrucción :; (instrucción de incrementar) de la Figura 5.12? Solución: El registro par HL contiene 2102 + 1 = 2103H. Después de la instrucción 2 de la Figura 5.12, el registro par HL contendrá 2103H. 5.47. ¿Cuál es el contenido del acumulador después de la ejecución de la instrucción 3 (instruc­ ción de suma) de laf'igura 5.12. / Solución: Ver Figura 5.14. 5.48. ¿Cuál es el contenido del registro par HL después de la ejecución de la instrucción.! (instrucción de incrementar) en la Figura 5.12? Solución: El registro par HL contiene 2103 + 1 = 2104H. Después de la instrucción 4 de la Figura 5.12. e' registro par HL contiene 2104H. Acumulador ~ Antes de la operación M<mon, '" (2103) ~ da,,,, ~ Acumulador Después de la operación El microp~ registro canta, puntero de pi] datos conocid miento locaJ.i.¡ rutina de senl la CPU debíar la pila. De igl programa deb memoria de p que se utiliza ejemplo, mult La pila de lectura/escritu como pila. El del tope de la una dirección :209H. Los datosJ de CALL (LL SACAR) o R mientras que 1 lcceso secuene -:1emoria úlm ::'71mero en en La instrue :;Jntenido del :ebe ser introc ':Jvés de los r I. El pUIl 2. El PUJ sistem 3. El pUl! 4. El pUl Figura 5.14. http://librosysolucionarios.net sistem cenade ~ '.' ÉL MICROPROCESADOR 127 5.49. Acudir a la instrucción 5 de la Figura 5..12. ¿Dónde estará almacenada la suma en el acumulador después de ejecutar esta instrucción de almacenamiento? Solución: La suma (00101000 2) estará almacenada en la posición de memoria de datos 2104H, como señala el registro par H L. 5.6. UTILIZACION DEL PUNTERO DE PILA I Il'Ucción 1 (instruc­ , le la instrucción 2 ~ .­ de la Figura 5.12, el ~ '. 3 ('mstruc­ rucclOn 1: / la instrucción 4 La ",ura 5.)2. ,) El microprocesador genérico de la Figura 5.7 contiene 'un puntero de piJa. El puntero de pila es un registro contador especializado, de 16 bits, que siempre contiene una dirección. La dirección del puntero de pila es la posición de un grupo especial de posiciones de memoria de la memoria de datos conocida como pila. En algunas MPU la pila puede ser un grupo de áreas de almacena­ miento localizadas en la pastílla micro procesadora. En la Sección 5.3 se vio que cuando una rutina de servicio de interrupción era ejecutada por la CPU, los datos actuales de los registros de la CPU debían ser almacenados temporalmente. El contenido de estos registros es almacenado en la pila. De igual forma, cuando se utiliza una subrutina regular, el contenido del contador de programa debe ser almacenado, para que la CPU pueda volver a la posición adecuada de la memoria de programa una vez que secomplete la rutina. El área de almacenamiento temporal que se utiliza es la pila. Una subrutina es un programa especializado, más corto (como, por ejemplo, multiplicar), que se utiliza muchas veces en el programa principal. La pila del microprocesador genérico estará localizada en una sección de la memoria de lectura/escritura. El programador selecciona un grupo de posiciones de la RAM para que sirvan como pila. El puntero de pila es cargado con una dirección una unidad mayor que la dirección del tope de la pila, como se indica en la Figura 5.15. El puntero de pila se pone a 220AH, que es una dirección una unidad mayor que la de la primera posición de memoria de la pila que es 2209H. Los datos pueden escribirse en la pila utilizando una instrucción de PUSH (INTRODUCIR) o de CALL (LLAMAR). Los datos pueden ser leídos de la pila utilizando una instrucción de POP (SACAR) o RETURN (VOLVER). Escribir en la pila a veces se denomina introducir en la pila, mientras que leer de la pila se denomina sacar de la pila. La pila funciona como una memoria de acceso secuencial, ya que el último dato en entrar es el primer dato en salir. Esto se denomina una memoria último en entrar primero en salir, o UFO. También puede denominarse memoria de primero en entrar último en salir, O memoria FILO. La instrucción PUSH puede producir resultados como muestra la Figura 5.16a, donde el contenido del registro par HL se introduce en la pila. Observar que el registro par HL de 2 bytes debe ser introducido en dos posiciones de memoria. La secuencia de acciones puede ser seguida a través de los números inscritos en los círculos. ! l. El puntero de pila de la CPU se decrementa de 220AH a 2209H. 2. El puntero de pila señala al área de memoria 2209H sobre el bus de direcciones del" sistema y el byte de orden superior (00000000,) es introducido en la pila. 3. El puntero de pila es decrementado, de nuevo, de 2209H a 2208H. 4. El puntero de pila señala al área de memoria 2208H sobre el bus de direcciones del sistema, yel byte de orden inferior (00001111 2) del registro de datos/direcciones es alma­ cenado en la pila. http://librosysolucionarios.net , 1 I 11 128 FUNDAMENTOS DE LOS MICROPROCESADORES Memoria de datos' Registro dr ... Dirección Contenido '..,.....- ---- 2200 Puntero ' I '::CIJ t I I 2201 I ~; I I I 2202 I 2203 ti - , lfl -~ 2204 -'--- Pullllell ---~-- @ 2205 \ Pila 2206 r.---- .. - 2207 i , ..11 2208 ( 2209 ,.... 220A Pun terode~ I 220AH Figura 5.15. ~ Puntero." I220<>H ~ ---- Inicializaci6n de la pila de la RAM. En la Figurn 5.16b se ilustra otra operación de INTRODUCIR (PUSH). Sin embargo, esta vez los contenidos del acumulador y del registro de status se introducen en la pila. De nuevo, seguir la acción con los números inscritos en los círculos de la Figura 5.16b. 5. Antes de esta operación, el puntero de pila está señalando a la última entrada de la pila. Es decir, que está apuntando a la parte superior de la pila. El puntero de pila ahora se decrementa a 2207H. 6. El puntero de pila direcciona la posición 2207H de la pila, y el contenido del acumulador (O 10 10 10 12) es introducido en la pila. http://librosysolucionarios.net Registro de di • 1 Punln1l ~ EL MICROPROCESAOOR H Oesp~ de la operación Antes de la operación Pila Puntero de pila ~ 2208 2209 220A Puntero de pila 220AH (a) -.fi!- ,­ n08H I Introducción del contenido del registro de datos/direcciones en la pila Acumulador Después de la operación (h) Puntero de pila Pila Pila 1II1 1111 2206 2207 2208 0000 1111 2209 0000 0000 220A 2206 2207 0101 0101 0000 111 1 2208 0000 0000 2209 220A ; Introducción del contenido del acumulador y del registro de status en la pila Acumulador Registro de status Acumulador Registro de status IrIO~~:jJIIIIIIIII CI Antes de la operación POP Pila 2206 1 111 1111 2207 OIOIOlOl 2208 0000 I 11 1 2209 0000 0000 220A (e) Después de la operación Pila 1111 1111 01010101 0000 1111 0000 0000 Q> 2206 2207 2208 . Puntero de pila ~~V 2208H I ~ 2209 Restauración del contenido del acumulador y del registro de status al sacarlos de la pila H Registro de datos/direcciones 1.._ _ _-' L Registro de datos/direcciones Antes de la operación lbargO, esta vez Después de la operación Pila Pila nuevo, seguir la "" -J '''A'' Puntero de pila t----1-2~2::::0::;7:-f ,'~ - ' t----t-::c22:-:0:-::8~ la de la pila. Es ~ pila ahora se lel acumulador 129 - - -- I J ~____-+~2~2~09~.t QD 220A ;,./ fd) Restauración del contenido del registro de datos/direcciones al sacarlo de la pila Figura 5.16. http://librosysolucionarios.net - 130 7. 8. FUNDAMENTOS DE LOS MICROPROCESADORES El puntero de pila es decrementado de 2207H a 2206H. La posición de dirección del puntero de pila es 2206H. El contenido del registro de status (l11111112) es introducido en la parte superior de la pila. La pila puede continuar creciendo a medida que se introduzcan más datos en la pila, lo cual se simboliza en la Figura 5.15 con la línea sombreada situada en la parte superior de la pila. La pila no tiene límites definidos excepto los impuestos por la posición de otros programas y el tamaño de la RAM. Generalmente, por cada instrucción PUSH (INTRODUCCION) habrá más tarde una instruc­ ción POP (SACAR) para quitar el dato de la parte superior de la pila. Como la pila es una memoria UFO (last-in-first-out [último en entrar primero en salir]), los datos deben llegar en orden inverso. La descarga de la pila se detalla en las Figuras 5 .16c y d. Considerar la instrucción POP (SACAR) de la Figura 5.16c. El registro de status y el acumula­ dor son recargados con los datos que almacenaban antes. La secuencia de acciones para sacar de la pila puede ser seguida por los números inscritos en Círculos de la Figura 5.16c. 1. 2. 3. 4. El puntero de pila direcciona la parte superior de la pila, o posición de memoria 2206H. El contenido del registro de status ( 11111111 2) es sacado del tope de la pila y devuelto a la ALU. El puntero de pila es incrementado de 2206H a 2207H. El puntero de pila direcciona la posición 2207H de la pila. Se saca el tope de la pila y el contenido es devuelto al acumulador en la CPU. El puntero de la pila es incrementado a 2208H y ahora apunta a la siguiente posición que se va a sacar. Los contenidos del registro de status y acumulador se han restaurado para que fuesen igual al que tenían antes de la operación PUSH (INTRODUCIR) de la Figura S.16b. A continuación se saca de la pila, de la Figura S.16d, el contenido del registro de datos/ direcciones. De nuevo, seguir la secuencia de acciones a través de los números inscritos en los círculos de la Figura S.16d. . . S. 6. 7. 8. 5.50. Elpw siemp SolueN fJl 5.51. La pi!. namie Soluck La miento 5.52. En el ción d SoIIK'Ñí El I microp 5.53. AcudiJ ción d Solució Lal ra 5.15 5.54. «1ntm UFO. "­ El puntero de pila direcciona el tope de la pila (posición 2208H). Es sacado el contenido Solució de esta posición y devuelto al byte de orden inferior del registro par H L. El puntero de la pila es incrementado a 2209H. El puntero de la pila direcciona el tope de la pila, que ahora es la posición 2209H. El contenido (00000000,) es devuelto al byte de orden superior del registro par HL. Finalmente, el puntero de la pila es incrementado de 2209H a 220AH en preparación para la siguiente operación de introducción o de llamada (PUSH o CALL). 5.55. AcudiJ . Sacar datos de la pila y restaurarlos en el registro de datos/direcciones invierte la acción de la instrucción PUSH (INTRODUCIR) ejecutada en la Figura S.16a. Las instrucciones PUSH y POP son utilizadas en parejas; sin embargo, habitualmente hay otras muchas instrucciones entre estas dos que cambian los datos de los registros de la CPU. El microprocesador genérico introducía y sacaba pares de registros. En algunas MPU, el puntero de pila puede apuntar a la posición de memoria vacía, inmediatamente encima del tope de la pila, en lugar de al tope de la pila como en el microprocesador genérico. Debe recordarse, en este ejemplo, que el programador, originalmente, pone el puntero de pila en 220AH para definir la posición de la pila de la RAM. http://librosysolucionarios.net .dnl a 0008 SoImí El, 5.56. Acudil datos, l SoiIdi ElI direccic ~.57. Acudir datos I SeIIdII ElI direccic: ~ EL MICROPROCESADOR 131 PROBLEMAS RESUELTOS • registro de status tia pila, lo cual se , de la pila. La pila amas y el tamaño tarde una instruc­ no la pila es una ~ deben llegar en ~s y el acumula­ mes para sacar de 6c. .hemoria 2206H. ila y devuelto a la t )pe de la pila y el ente posición que ben igual al que egistro de datos/ inscritos ,en los 5 ~o el con~enido J icíón 2209H. El IparHL. , en preparación L). ~ la acción de la riones PUSH y ilrucciones entre bnas MPU, el encima del tope le recordarse, en AH para definir 5.50. El puntero de pila de la Figura 5.7 es un registro contador especializado, de 16 bits, que siempre contiene ___ (una dirección, un código de op de instrucción). Solución: El puntero de pila siempre contiene una dirección. 5.51. La pila es una memoria especial de acceso secuencial organizada como un área de almace­ namiento tipo ___ (cuatro letras). Solución: La pila es una memoria de acceso secuencial especial organizada como un área de almacena­ miento tipo UFO. 5.52. En el microprocesador genérico, el ___ (diseñador, programador) determina la posi­ ción de la pila en la RAM . Solución: El programador de la MPU determina la posición de la pila en la RAM cuando utiliza el microprocesador genérico. 5.53. Acudir a la Figura 5.15. La posición de memoria _ _ (número hex) es la primera posi­ ción de la pila que será utilizada durante una operación de llamada o de introducción. Solución: La posición de memoria 2209H es la primera posición de la pila que será utilizada en la Figu­ ra 5.15 durante una operación de llamada o de introducción. 5.54. «Introducir en la pila» se refiere a una operación de ___ (leer, escribir) en una memoria UFO. Solución: «Introducir en la pila» se refiere a una operación de escribir en una memoria UFO. 5.55. Acudir a la Figura 5.17a. El paso 1 muestra que el _ _ _ _ se decrementa de 0009H a 0008H. Solución: El paso l de la Figura 5.17a muestra que se decrementa el puntero de pila. 5.56. Acudir a la Figura 5.17a. El paso 2 muestra que el byte de orden superior del registro de datos/direcciones se está ___ (sacando, introduciendo) en el ___ (registro L, pila). Solución: El paso 2 de la Figura 5.17a muestra que el byte de orden superior del registro de datosl direcciones se está introduciendo en la pila. 5.S7. Acudir a la Figura 5.17a. El paso 4 muestra Que el byte de orden inferior del registro de datos/direcciones se está introduciendo en la posición de la pila ___ (número hex). Solución: El paso 4 de la Figura 5.17 a muestra que el byte de orden inferior del registro de direcciones se está introduciendo en la posición 0007H. http://librosysolucionarios.net datosl ~-, .~ ':L..~'.' 132 FUNDAMENTOS DE LOS MICROPROCESADORES •.. ' H Registro de datosl direcciones 5.61. Acudí L r=~='='T'".~~--' pila. Soluó La pila. Después de la operación Pila Punt~ro de pila 1 :~I IOOOO~9EH}I---....t; 0009 5.62. Acudí do) al despu I .Soluci (a) Regist~ de ~atos/l direcciones H L ~ mient] L H ~~---~~----, Registro de datosl '-'!"--"""""'....--~ direcciones 1-._ _ _' - -_ _- ' Antes de la operación Después de la operación Pila Puntero de pila ~--~~~--~~~ ? 5.63. Un_ compul Res, I 5.64. (b) Figura 5.17. 5.65. Las 16 directa I Res. t: 5.58. Acudir a la Figura 5.17 b. Antes de la operación, el puntero de pila señala el _ _ (extre­ \ mo inferior, tope) de la pila que actualmente es 0OO7H. Solución: Antes de la operación de la Figura 5.17b, el puntero de pila apunta al tope de la pila, que actualmente es 0007H. 5.59. Acudir a la Figura 5.17b. El paso 5 muestra que el byte de orden _ _ (superior, infe­ rior) del registro de datos/direcciones se está restaurando con el contenido del to­ pe _ _ (de la pila, del puntero de pila). Solución: El paso 5 de la Figura 5.17 b muestra el byte de orden inferior del registro de datos/direcciones que se está restaurando con los contenidos del tope de la pila. 5.66. I 5.67. Espoc progra¡ Res, 5.68. AcudiJ de __ Res, 5.69. Acudí inst1114 Res, 5.70. AcudJ MPl" Res o mentando, incrementando) 0007H a _ _ (número hex). Solución: El paso 6 de la Figura 5.17h muestra que el puntero de la pila se está incrementando de 0007H a 0008H. Elregis Res. 5.60. Acudir a la Figura 5.17 b. El paso 6 muestra que el puntero de la pila se está _ _ (decre­ http://librosysolucionarios.net E180~ Res, I .­ :~ J EL MICROPROCESADOR I 133 5.61. Acudir a la Figura S.17b. El paso 7 muestra que el dato sc _ _ (saca, introduce) en la pila. Solución: La acción de lectura durante el paso 7 de la Figura 5.17 b muestra que el dato se saca de la pila. .. operación 5.62. Acudir a las Figuras 5.16 y 5.17. El puntero de pila es (decrementado, incrementa­ do) antes de una operación PUSH, mientras que es ___ (decrementado, incrementado) después de una instrucción POP. .Solución: Según las Figuras 5.16 y 5.17, el puntero de pila es decrementado antes de una operación PUSH, mientras que es incrementado después de una operación POP. 1 Itegistro de datos/ lireccíones lile la operación ~" PROBLEMAS SUPLEMENTARIOS ~untero de pila ~? 5.63. Un _ _ puede ser definido como una pastilla VLSI que realiza las tareas de la CPU de una micro­ computadora. Res. microprocesador. 5.64. El 8086, 8088, 68000, 65816 Y Z8000 son todos ejemplos de microprocesadores de _ _ bits. Res. I 5.65. . el ~ (extre­ \ re de la pila, que _ (superior, infe­ IIltenido del to­ 16. Las 16 líneas de dirección de los microprocesadores 8080/8085, 6800 ó 6502 pueden direccionar directamente _ _ K de memoria . Res. 64. S.66. El registro _ _ _ _ sigue la pista del tope de la pila en la RAM. Res. puntero de pila. 5.67. Es poco probable que la hoja de datos del fabricante contenga una _ _ (lista de técnicas de programación, un diagrama de patillas) para el microprocesador. Res. una lista de técnicas de programación. ltos/direcciones 5.68. Acudir a la Figura 5.2. La petición de interrupción en el microprocesador 8080 es un terminal de _ _ (entrada, salida). Res. entrada. t_· (decre: 5.69. Acudir a la Figura 5.4. La instrucción CALL del 8080 tiene el código de op _ _ (número hex), y la instrucción requiere _ _ bytes de memoria de programa. Res. CDH. 3. tando de 0007H a S.70. Acudir a la Figura 5.5. Cuando la patilla WR está en BAJA, está _ _ (habilitada, inhabilitada) y la MPU está _ _ (leyendo de, escribiendo en) memoria o entrada/salida. Res. habilitada, escribiendo en. http://librosysolucionarios.net '­ ..... .­ 134 ~.I· "V,. .. .. " .. ¡,~ : " FUNDAMENTOS DE LOS MICROP,{OCESADORES 5.71. Acudir a la Figura 5.5. ¿Qué entrada a la unidad cambia el contador de programa a OOOOH y hace que el microprocesador comience una rutina de inicialización? Res. reinicialización. 5.83. Acudir, cimal) a Res. d 5.72. El microprocesador típico es más probable que contenti'á _~,,_ _ (una ALU, un área de memoria 5.84. Acudir RAM). registre Res. d Res. ALU. 5.73. Durante la primera lectura de memoria de programa de un ciclo de instrucción, el dato proveniente del bus de datos es transferido al ___ (acumulador, registro de instrucción). Res. registro de instrucción (es el ciclo de máquina de búsqueda de código de op). 5.74. El microprocesador genérico tiene cuatro tipos de ciclos máquina: la búsqueda del código de op o ciclo de lectura, un ciclo de ___ de memoria, un ciclo de escritura en memoria y un ciclo de ejecución de una operación interna. Res. lectura. 5.75. Los ciclos máquina y de instrucción varían en duración. Sin embargo, los períodos de tiempo deno­ minados ______ son de una duración dada. Res. estados T. ,, ... . ¡ 5.76. En el microprocesador genérico, ¿qué período de tiempo es más corto: un ciclo de instrucción o un ciclo máquina? Res. ciclo máquina. :t \ .' 5.77. EI----'o _ de la Figura 5.7 interpreta el contenido del registro de instrucción, decide qué mi· croprograma interno seguir e indica a la unidad de control y temporización el procedimiento a seguir. Res. decodificador de instrucciones. 5.78. La ___ (tres letras) del microprocesador de la Figura 5.7 realiza las operaciones de suma, resta, ANO, OR Y desplazamiento. Res. ALU. 5.85. Acudir recto.d Res. d 5.86. Acudir grama. Res. i 5.87. El con' decima Res. ( 5.88• Lapilll duranll Res. j ~ :;1 I ,:4 5.79. El microprocesador genérico contiene un seilalizador de cero y '\lno de arrastre, Que se encuentran en el ___ (control de interrupción. registro de status). Res. registro de status. 5.80. El contador de programa y el registro de datos/direcciones del microprocesador genérico pueden - __ (apuntar a posiciones de memoria. almacenar instrucciones temporalmente). Res. apuntar a posiciones de memoria. 5.81. ¿Qué tres unidades de la Figura 5.7 pueden apuntar a posiciones de memoria? Res. contador de programa, puntero de pila y registro de datos/direcciones. 5.82. Acudir a la Figura 5.10, instrucción 2. El registro par HL es cargado con _ _ (una dirección, un dato) en este programa. Res. una dirección. http://librosysolucionarios.net ,A.l I r 'EL MICROPROCESADOR 135 fa OOOOH y hace 5.83. Acudir a las Figuras 5.10 Y 5.lld. El registro _ _ es incrementado desde _ _ (número hexade­ cimal) a _ _ (número hexadecimal) después de la operación. Res. datos/direcciones (o HL), 2101H, 2102H. irea de memoria 5.84. Acudir a las Figuras 5.10 y 5.lle. La instrucción 5 es una instruéción de suma _ _ (inmediata, registro indirecto). Res. de registro indirecto. lato proveniente 5.85. Acudir a las Figuras 5.10 Y 5.llg. La instrucción 1 es una instrucción de almacenamiento _ _ (di­ recto, de registro indirecto). Res. de registro indirecto. Lcódigo de op o ia y un ciclo de 5.86. Acudir a la Figura 5.11a. El microprocesador está _ _ (sacando, introduciendo) la pila en este dia­ I/ t le tiempo deno­ 5.81. El contenido del puntero de pila de la Figura 5.110 después de la operación es _ _ (número hexa­ decimal). Res. 0007H. DStrucción o un 5.88. La pila es una memoria temporal especializada de acceso _ _ (aleatorio, secuencial) utilizada durante las instrucciones de _ _ (introducir, almacenar) y _ _ (cargar, sacar). Res. secuencial, introducir. sacar. ~ e~: grama. Res. introduciendo. decide qué mi­ rocedimiento a t : ,:r l·le suma, resta. encuentran en llérico pueden dirección, UD http://librosysolucionarios.net Capítulo 6 Memoria de pro Dirección Co (hex) (b 2000 00 2001 10 6.1. LENGUAJES MAQUINA Y ENSAMBLADOR 2002 00 En el nivel más básico, el microprocesador responde a un listado de operaciones que se denomina 2003 00 2004 OCI 2005 OCI 2006 01 PROGRAMACION DEL MICROPROCESADOR programa máquina. El contenido de la memoria de programa de la Figura 6.1 a representa un programa en código máquina, que comienza en la dirección 2000H con el código de operación 00 1111102 Yfinaliza en la dirección 2006H con 01110 1102, Los programas en esta forma son casi imposibles de comprender para los seres humanos. El programa máquina de la Figura 6.1 a puede hacerse algo más fácil de manejar si los núme­ ros binarios se representan en notación hexadecimal. En la Figura 6.1 b se repite el mismo progra­ ma en hexadecimal. El segmento del programa de la Figura 6.lb se considera todavía en código máquina, aún cuando el binario esté representado en notación hexadecimal. Los programas de esta forma también son muy dificiles de comprender. En un nivel más humano, el programa anteriormente descrito en código máquina puede describirse como sigue: 2007 l. Cargar el número binario (lOt 10100) en el acumulador del microprocesador. 2. Complementar cada bit del número binario del acumulador para formar el complemento a l. 3. Almacenar el resultado, del complemento a 1, en la posición 2100 16 de la memoria de datos. El segmento de programa descrito cambia un número binario de 8 bits a su forma equivalente de complemento a l. Surge la siguiente pregunta: ¿Cómo transformar la descripción del lenguaje humano del pro­ grama al código máquina? La respuesta se encuentra en un sencillo lenguaje de programación próximo al programa máquina observado en la Figura 6.1. Un lenguaje ensamblador utiliza palabras y frases para representar los códigos máquina del microprocesador. Generalmente, una frase o sentencia en lenguaje ensamblador constará de la 3 bytes de código máquina. La idea fundamental de este proceso de ensamblamiento se muestra en la Figura 6.2a. Aquí, a título de ejemplo, la segunda instrucción del programa es representada por un único nemotécnico de tres letras CMA (complementar el acumulador). Las letras del nemotécnico son traducidas primero a su representación ASCII equivalente (American Standard Code for Information Interchange). Los tres códigos ASCII son evaluados entonces, en orden, por un programa ensamblador especial, y el código máquina para «complementar al acumulador» resulta ser 00101111 2, ó 2FH. El nemotécnico ha generado un simple byte de código de lenguaje máquina. 136 http://librosysolucionarios.net la) Programa e '~ unsegmj Figura 6.2a. Se ¡ (l) etiqueta, (2) : siempre y apam ne el nemotécni blador esencialr ción sobre regís. los campos de : rrecto en lengu. memoria de pn programa enSéll para comprend t PROGRAMACION DEL MICROPROCESADOR íturo 6 ¡-', Memoria de programa Dirección (hex) Contenido (binario) 2000 00111110 2001 t se denomina representa un de operación orma son casi r si los núme­ !1ismo progra­ ~ia en código programas de Contenido (hex) 2000 3E 10110100 2001 84 2002 OOlOllll 2002 2F 2003 00110010 2003 2004 00000000 2004 00 2005 00100001 2005 21 2006 76 2007 íquína puede Memoria de programa Dirección (hex) 2006 O 137 _Comienzo del programa ~ Fin del programa I - Comienzo del programa 32 2007 ~ Fin del programa :omplemento , l...emoria de ~ la) Programa en código máquina binario (b) Programa en código máquina hexadecimal luivalente de del pro­ rogramación lador utiliza Ilmente, una ina. La idea L a título de Figura 6.1. WlO mIco de tres as primero a nterchange). rior especial, . ó 2FH. El Un segmento de programa en lenguaje ensamblador escrito a mano, puede parecerse al de la Figura 6.2a. Se acostumt.ra a dividir las sentencias del lenguaje ensamblador en cuatro campos: (1) etiqueta, (2) nemotécnico, (3) operando y (4) comentarios. El campo de etiqueta no se utiliza siempre y aparece vacío en este sencillo segmento de programa. El campo de nemotécnico contie­ ne el nemotécnico exacto que proporciona el fabricante. Este campo indica al programa ensam­ blador esencialmente la operación que se va a realizar. El campo de operando contiene informa­ ción sobre registros. datos o direcciones asociados con la operación. Utilizando la información de los campos de nemotécnico y operando, el programa ensamblador puede generar el código co­ rrecto en lenguaje máquina. El programa ensamblador puede también asignar posiciones de la memoria de programa a los listados en código máquina. El campo de comentario no lo evalúa el programa ensamblador, solamente lo imprime. El campo de comentario es una ayuda valiosa para comprender qué ocurre en el programa. I http://librosysolucionarios.net f* • .. 138 FUNDAMENTOS DE LOS MICROPROCESADORES Código nemotécnico de Representación complementar el acumulador ASCII C • 01000011 - - - _ • 01001101---__ • 01000001 - - -__ M A (a) Traducción del lenguaje Código máquina de ensamblador al lenguaje de máquina complementar el acumulador Programa ensamblador - _ _...._ 001011110 2FH Traducción del nemotécnico del lenguaje ensamblador al código máquina por un programa ensamblador Etiqueta Nemotécnico MVI Operando Comentarios A. B4H ; Carga el acumulador con el dato que sigue inmediatamente, que es B4H CMA ; Complementa el contenido del acumulador STA 2100H HLT ; Almacena el contenido del acumulador en la posición de memoria 21 OOH Una vez qi listado análog, máquina (lista ser la de (1 ) t~ posiciones con versión del len hacerse manw Un progral lenguaje ensar programa fuel máquina, a és1 método de «h (BASIC, FOR una sentencia máquina. El tí to a microcorr instrucciones ( ayuda a comp ; Se detiene la MPU 6.1. (b) Dirección (hex) Programa en lenguaje ensamblador Comentarios 6.2. MVI 3E 2001 2002 B4 2F CMA 2003 32 STA 2004 2005 2006 00 21 76 A.B4H 2100H HLT (e) - 50 Sohri U. máqui Contenido (hex) Etiqueta Nemotécnico Operando 2000 Los ; Carga acumulador con el dato que sigue inmediatamente, que es B4H ; Complementa el contenido del acumulador ; Almacena el contenido del acumulador en la posición de memoria 21 OOH Soluó ces!! 6.3. Uu_ cir el Soluci \JI dor al ; Se detiene la MPU Programa en lenguaje ensamblador y máquina combinados Un le instro 6.4. ListaJ Soluci Figura 6.2. http://librosysolucionarios.net Ve lengw f PROGRAMACION DEL MICROPROCESADOR Í@o máquina de enlar el acumulador 11 o 2FH ~ l ensamblador nmediatamente, 1 posición de 139 Una vez que el programa ensamblador de la Figura 6.2 ha sido ensamblado, se obtiene un listado análogo al programa de la Figura 6.2c. Aquí se han añadido las direcciones y códigos máquina (listados bajo la columna «contenido»). En resumen, la tarea del ensamblador parece ser la de (1) traducir los nemotécnicos y operandos al código máquina equivalente y (2) asignar posiciones consecutivas de memoria a cada código de op y operando. La tarea de conseguir de la versión del lenguaje ensamblador de la Figura 6.2b la versión ensamblada de la Figura 6.2c puede hacerse manualmente o con un programa ensamblador especial. Un programa compuesto por sentencias simbólicas, tal como el segmento de programa en lenguaje ensamblador de la Figura 6.2b, a veces se denomina programa fuente. Una vez que el programa fuente ha sido traducido (por el ensamblador o compilador) a su forma en código máquina, a ésta se denomina programa objeto. La programación en lenguaje ensamblador es un método de «hllmanizar» las operaciones de un microprocesador. Los lenguajes de alto nivel (BASIC, FORTRAN, Pascal, etc.) hacen la tarea de programar aún más sencilla. Por ejemplo, una sentencia en BASIC, FORTRAN o Pascal puede ser equivalente a unos 20 a 30 códigos máquina. El título del capítulo hace referencia a la programación de un microprocesador (opues­ to a microcomputadora) puesto que el capítulo tratará de utilizar directamente el repertorio de instrucciones del microprocesador. Se utilizará la programación en lenguaje ensamblador porque ayuda a comprender las operaciones y el repertorio de instrucciones del microprocesador. lo 1/ OJO(J O I O ~ I O I :roo O I } () O PROBLEMAS RESUELTOS --------------~--~~~~~=======---q 6.1. Los segmentos de programación mostrados en la Figura 6.1 se consideran programas C. ___ (ensambladores, máquina). Solución: Los segmentos de los programas mostrados en la Figura 6.1 se consideran programas máquina. ios 6.2. • el dato que ,que es B4H Solución: Un lenguaje ensamblador utiliza palabras y frases para representar instrucciones del micropro­ cesador. :llIdo del • del oonde Un lenguaje ___ (ensamblador, máquina) utiliza palabras y frases para representar instrucciones de microprocesador. 6.3. Un ___ (ensamblador, monitor) es un programa especial de computadora para tradu­ cir el lenguaje ensamblador al lenguaje máquina. Solución: Un ensamblador es un programa especial de computadora para traducir el lenguaje ensambla­ dor al lenguaje máquina. 6.4. Listar los cuatro campos típicos de una sentencia de lenguaje ensamblador. Solución: Ver las etiquetas en la parte superior de la Figura 6.2b. Los cuatro campos de una sentencia en lenguaje ensamblador son etiqueta, nemotécnico, operando y comentarios. / http://librosysolucionarios.net .' ~ r " , , 1 " \ " ~ ¡ 140 FUNDAMENTOS DE LOS MICROPROCESADORES 6.5. Una vez que se ha ensamblado el programa ensamblador, éste contendrá las direcciones de memoria y el código _ _ (BASIC, máquina) de cada sentencia del lenguaje ensam­ blador. , Solución: Observar un segmento de programa ensamblado en la Figura 6.2c. Una vez que el programa ensamblador se ensambla, contendrá las direcciones de memoria y el código máquina de cada instrucción del lenguaje ensamblador. 6.2. REPERTORIO SIMPLIFICADO DE INSTRUCaONES Se presentará un repertorio de instrucciones para el microprocesador genérico ilustrado en la Figura 5.7. Los nemotécnicos y códigos de operación utilizados son un subconjunto del reperto­ rio de instrucciones del microprocesador 8080/8085. Los derechos de copia de los nemotécnicos y de los códigos de op se utilizan con el permiso de lntel Corporation. Se pensó en utilizar nemotécnicos arbitrarios para el microprocesador genérico. Sin embargo~ se decidió que utilizar un subconjunto del repertorio de instrucciones del 8080/8085 dará al estudiante un punto de partida sobre la MPU cuando se estudien los Capítulos 8 y 9. Debe mencionarse que los progra­ mas del 8080/8085 son compatibles con los sistemas 8086 y 8088. Un resumen de los registros disponibles al programador, en el microprocesador genérico, se ilustra en la Figura 6.3. En la parte superior derecha está el acumulador (A) de propósito general de 8 bits. En la parte superior izquierda está el registro de status de 8 bits que contiene los señalizadores. En la visión expandida del registro de status, el señalizador de arrastre (eY) se muestra en la posición B7 , mientras que el señalizador de cero (2) se localiza en la posición Bo' Las posiciones 1 a 6 no se utilizan en el registro de status del microprocesador genérico simplifica­ do. Es costumbre que los microprocesadores reales tengan algunos señalizadores más. En la segun datos/direccion propósito genel utilizados para En la parte. de programa (} pila (SP) conti, RAM. El repertori. categorías espeí 1. Instrucc 2. lnstrucc 3. Instrucc 4. lnstrucc 5. Instrucc 6. lnstrucc 7. Instruc, La MPU genér del repertorio e considerará ca<! '. 6.6. Las 6" qué re¡ So__ Las de inSU' bies COI 6.7. Señalizadores (8) A (8) H (8) L (8) pe (16) SP (16) , ,~ Solucici El .. geDel1lll 6.8. Acudil proces Soluc:WI De señaliz: Figura 8.3. Modelo de programación para el microprocesador genérico. http://librosysolucionarios.net AcudiJ sador I • .~ . PROGRAMACION DEL MICROPROCESADOR lrá las direcciones del lenguaje ensam- vez que el programa igo máquina de cada I rico ilustrado en la anjunto del reperto­ le los nemotécnicos ~ pensó en utilizar lecidió que utilizar liante un punto de lI'Se que los progra­ esador genérico, se e propósito general s que contiene los le arrastre (eY) se , en la posición Bo' DeDérico simplifica­ res más. 141 En la segunda línea de la Figura 6.3 se encuentran los registros H y L. Estos son registros de datos/direcciones multipropósito. Pueden ser usados separadamente como registros de datos de propósito general o como un registro par (llamado el registro par HL). Como registro par son utilizados para apuntar o señalar direcciones. En la parte inferior de la Figura 6.3 se localizan dos registros dedicados de 16 bits. El contador de programa (PC) señala la siguiente instrucción que se va a ejecutar en la CPU. El puntero de pila (SP) contiene la dirección del tope de la pila. En este sistema la pila está localizada en la RAM. El repertorio de instrucciones del microprocesador genérico está dividido en las mismas siete categorías especificadas en el Capítulo 4. Estas categorías son: l. 2. 3. 4. 5. 6. 7. Instrucciones aritméticas. Instrucciones lógicas. Instrucciones de transferencia de datos. Instrucciones de bifurcación. Instrucciones de llamada a subrutina. Instrucciones de vuelta o de retorno. Instrucciones misceláneas. La MPU genérica puede ejecutar solamente 67 instrucciones diferentes comparadas con las 239 del repertorio completo de instrucciones del Intel 8085. Para ayudar a su estudio, solamente se considerará cada vez una categoría de instrucciones. PROBLEMAS RESUELTOS 6.6. Las 67 operaciones ejecutadas por el microprocesador genérico son un subconjunto ¿de qué repertorio de instrucciones de una MPU real? Solución: Las operaciones ejecutadas por el microprocesador genérico son un subconjunto del repertorio de instrucciones de la MPU del Intel 8080/8085. Además, los programas 8080/8085 son compati­ bles con los sistemas de 16 bits 8086/8088. 6.7. Acudir a la Figura 6.3. Listar tres registros de 8 bits de propósito general del microproce­ sador genérico. Solución: El acumulador (A) y los registros de direcciones y datos H y L de la Figura 6.3 son considerados generalmente dispositivos de almacenamiento en el microprocesador genérico. 6.8. rico. t :.1 , ! Acudir a la Figura 6.3. ¿Qué dos seftalizadores contiene el registro de status en el micro­ procesador genérico? Solución: De acuerdo con la Figura 6.3, el registro de status del microprocesador genérico contiene los señalizadores de arrastre y cero. http://librosysolucionarios.net 1I 142 FUNDAMENTOS DE LOS MICROPROCESADORES 6.9. Acudir a la Figura 6.3. Citar dos registros de 16 bits dedicados utilizados indirectamente por el programador en el microprocesador genérico. Instrucciones arfI Descripción d la operación Solución: De acuerdo con la Figura 6.3, el microprocesador genérico contiene un contador de programa de 16 bits (PC) y un puntero de pila de 16 bits (SP). Suma A al dato Suma L aA Suma HaA 6.3. REPERTORIO DE INSTRUCCIONES: OPERACIONES ARITMETICAS Las instrucciones aritméticas son las primeras operaciones del microprocesador genérico que se van a considerar. Estas se resumen en la Figura 6.4. Incluyen las operaciones de sumar, restar, incrementar, decrementar y comparar. Observar en la Figura 6.4 que hay cuatro instrucciones de sumar. El acumulador, identificado como el registro A en la Figura 6.4, contiene uno de los números que se va a sumar. Cada instrucción de suma especifica una fuente diferente para el otro número que va a ser sumado. Considerar la primera instrucción listada en la tabla de la Figura 6.4. La instrucción «sumar A inmediato» es una instrucción de 2 bytes cuyo formato se muestra cerca de la parte derecha de la tabla. Como siempre, el código de op (C6H en este caso) aparece en el primer byte de la memoria de programa, y el dato a ser sumado al acumulador en el segundo byte. La instrucción ADI se muestra en forma de diagrama en la Figura 6.5a. El dato inmediato de la memoria de programa toQOlOoo0 2) se suma al contenido del acumulador (00001111 2), La suma (00011111 2) es devuelta al acumulador después de la operación. La segunda instrucción de la Figura 6.4 es «sumar el registro L a An (nemotécnico ADD L). En la Figura 6.5b se muestra un problema ejemplo utilizando esta instrucción registro a registro. El contenido del acumulador (0000 10002) se suma al contenido del registro L (00000001 2), La suma (00001001 2 ) de la instrucción ADD L es devuelta al acumulador después de la operación. La tercera línea de la Figura 6.4 muestra la instrucción de un solo byte «sumar H a A» (nemotécnico ADD H). Esta es otra instrucción de suma registro a registro. Un problema ejemplo que utiliza la instrucción ADD H se detalla en la Figura 6.5c. El contenido del registro A (00 10 11 002) se suma al contenido del registro H (00010011 2 ), dando una suma de 00111111 2 , La suma se deposita en el acumulador una vez que se completa la operación. La cuarta línea de la Figura 6.4 muestra la instrucción de un solo byte «sumar registro indirec­ to» (nemotécnico ADD M). La posición del dato que se va a sumar es algo más complicada utilizando este modo de direccionamiento indirecto de registro. Un problema ejemplo que utiliza la instrucción ADD M se muestra en la Figura 6.5d. El registro par HL contiene una dirección de 16 bits, que señala a la posición adecuada de la memoria de datos (LOC). El contenido de esta posición (000000 11) se suma al contenido del acumulador (O 11000001), La suma (O 11000 11 2 ) es devuelta al acumulador después de la operación de suma. Las instrucciones de registro indirecto utilizan un registro de 16 bits (habitualmente el registro par HL) como puntero de dirección. Observar de nuevo la instrucción «sumar registro indirecto» (ADD M) de la Figura 6.4. La descripción dice «Sumar LOC (H&L) a A» que se leerá como «sumar el contenido de la posición de memoria apuntada por el registro par HL al contenido del registro A». Al leer esta instrucción a través de la Figura 6.4, se ve que el modo de direccionamiento es indirecto de registro. El único Suma LOC(H aA Resta el dato di Resta L de A Resta H de A Resta LOC (H de A Incrementa A Incrementa H L Decrementa A Decrementa H, Compara A 001 el dato • Compara A COI A Compara .4 ro Compara :4 LOC(H t C'O ~ l ( ) contenido ~ (( » = direcCIonan http://librosysolucionarios.net ~ . 1,: .. 11 . .· . · . ···' r l indirectamente ~ ador de programa t I. genenco que se e sumar, restar, instrucciones de ene uno de los mte para el otro trión «sumar A te derecha de la ~ de la memoria rucción ADI se 'Ía de programa 11:) es devuelta !coico ADD L). pstro a registro. L (00000001 2), después de la Lmar H a A» '¡'lema ejemplo , del registro A 0011 I1ll r La "e'gistro indirec­ .. ' complicada lplo que utiliza la dirección de ":,nido de esta : 1000110) es ~stro indirecto le dirección. Figura 6.4. La , de la posición :sta instrucción Psiro. El único 143 PROGRAMACION DEL MICROPROCESADOR Instrucciones aritméticas Descripción de la operación Suma A al dato Cód. Modo de Bytes direcciona- Nemotécnico de opero miento Inmediato ADI C6 2 Formato de la instrucción Simbólico 11 Código de op. 1 11 datos I (A) +- (A) + (byte 2) Suma L aA Registro AOOL 85 I Suma HaA Registro AODH 84 I ICódigo de op. I (A) +- (A) + (L) ICódigo de op. I (A) +- (A) + (H) ADDM 86 1 I Código de op. I (A) +- (A) + «H)(L» SUI D6 2 Suma LOC (H y L) Indirecto de registro aA Resta el dato de A Inmediato 11 Código de op. 1 11 datos 1 (A) +- (A) ­ (byte 2) Incrementa A Re INCA 3C I I Código de op. (A) +- (A) ­ (L) I Código de op. (A) +-(A) ­ (H) ICódigo de op. (A) +- (A) ­ «H)(L» I Código de op. I (A)+-(A) + 1 Incrementa HL Registro INXH 23 I ICódigo de op. I (HL) +- (HL) + I Decrementa A Registro OCRA 3D I I Código de op.• (A)+-(A)-I Decrementa HL Registro OCXH 2B I ICódigo de op. (HL)+-(HL)- I Resta L de A Registro SUBL 95 I Resta H deA Registro SUBH 94 I SUB M 96 1 Resta LOC (H y L) Indirecto deA de registro Señalizadores afectados Z. cy Z.CY Z. Cy Z. CY Z. Cy Z. CY Z.CY Z. CY Z Z Z-I sí Compara A con el dato CPI Inmediato FE 2 .1 Código de op. • 1 datos (A) (A) ­ (byte 2) 1 = (byte 2) Cy= I sí (A) < (byte 2) Z= I sí Compara A con L Registro CMPL BO 1 ICódigo de op. (A) = (L) (A) (L) CY= I sí (A) < (L) Z- I si Compara A con H Registro CMPH BC 1 I Código de op. I (A) -(H) (A) = (H) CY= I si (A) < (H) Z= I sí Compara A con Indirecto LOC (Hy L) de registro CMPM ( ) contenido de « )) = direccionamiento indirecto de registro Figura 6.4. BE 1 I Código de op. • (A) ­ (A) = «H)(L» «H)(L» CY= I sí (A) < «H)(L» + - suma - - resta Instrucciones aritméticas para el microprocesador genérico (subconjunto de instruccíones Intel 8080;8085). http://librosysolucionarios.net \ 144 RJNDAMENTOS DE LOS MICROPROCESADORES Acumulador Acumulador Resultad (A) Después de la operaciÓD Contenido registro Memoria de programa Figura 6 Dato (a) La instrucción de suma A inmediata Acumulador Acumulador Después de la operación Antes de la operaciÓD ADDL Registro L 10000 0001 I (b) La instrucción de suma L y A Acumulador Acumulador Antes de la operación Registro H Después de la operación I000 1 00 11 I (e) La instrucción de suma H y A Acumulador nemotécnicc 86 16 , De acu to» es una ir código de 01 forma simbé ción ADD.\ cambiando ¡ parte derech Los paréntes se va a reafu de registro i memoria de de memoria resultado es La colur durante la e afectados pi muestra la 1 Acumulador Antes de la operaciÓll Después de la operación ADDM Memoria de datos (LOC) 100000011 I I '-t--' Arrastre Puntero de dirección L Registro par HL (a) (d) La instrucción de suma registro indirecto Figura 6.5. http://librosysolucionarios.net Suma. con PROORAMACION DEL MICROPROCESADOR Primer Resultado (A) If Transferido a Contenido del registro A Figura 6.6. operando Operación Segundo operando (A) + «H)(L) Contenido del registro A Suma Contenido del registro HL que apunta a la posición del operando de memoria 145 Interpretaciones de ADD; las operaciones utilizan el código simbólico de la tabla del repertorio de instrucciones. nemotécnico del lenguaje ensamblador para esta instrucción es ADD M, cuyo código de op es 86 16 , De acuerdo con la columna «Bytes» de la Figura 6.4, la instrucción «sumar registro indirec­ to» es una instrucción de 1 byte. El formato de instrucción muestra un solo byte que contiene el código de op de la instrucción. La segunda columna de la derecha en la Figura 6.4, detalla, en forma simbólica, la operación que está realizando la CPU. La sentencia simbólica para la instruc­ ción ADD M se reescribe en la Figura 6.6. Siguiendo el patrón utilizado por lntel Corporation y cambiando algo la notación habitual, la sentencia simbólica se lee de derecha a izquierda. En la parte derecha de la flecha, el primer operando se identifica como el contenido de A (acumulador). Los paréntesis Osignifican «contenidos de» en esta notación. El signo + significa la operación que se va a realizar, que es una suma en este caso. Los dobles paréntesis «()) denotan una instrucción de registro indirecto. «H)(L» significa «el contenido del registro HL señala a la posición de memoria del segundo operando». En otras palabras, el segundo operando reside en una posición de ,memoria a la que apunta el contenido del registro par HL. Después de la operación, el resultado es transferido al registro A, o acumulador. La columna de más a la derecha de la Figura 6.4 lista los señalizadores que son afectados durante la ejecución de una instrucción. Para dar un ejemplo de cómo los señalizadores son afectados por una operación, considerar la suma binaria de 11111111 con 0000000 1, como muestra la Figura 6.7. El método de lápiz y papel para sumar estos dos números de 8 bits se Acumulador '1111 l 111 1111111 11111111 + 0000000 I 1 "--y--J Arrastre Antes de la operación 00000000 '---v-" Contenido del acumulador de 8 bits I I 0000 0000 ~ ~~ I t-- , 0000 000 1 '1 Cy -11 I Acumulador Después de la operación I Registro de status Z L fa) Suma de números binarios con arrastre (bJ El efecto de la instrucción ADD M sobre los señalizadores yel acumulador Figura 6.7. http://librosysolucionarios.net 4!W 146 1 ,... 1.: ,! FUNDAMENTOS DE LOS MICROPROCESADORES muestra en la Figura 6.7a. El mismo problema se muestra como es resuelto por el microprocesa­ dor genérico utilizando la instrucción ADD M en la Figura 6.7b. El acumulador contiene 11111111 2 , mientras que la posición en la memoria de datos señalada por el registro par HL ~on\\~n~ ~\ OlIO n\\mtIO \.l\1t ~t 'tí.\. í\ ~\1ma\ (QQQOOQ l}), Después de que se completa la suma, el acumulador contiene los 8 bits menos significativos de la suma, que son 000000001' El señaliza­ dor de arrastre del registro de status se pone a 1, indicando que hubo un arrastre del bit más significativo del acumulador. El señalizador de cero examina el contenido del acumulador des­ puéS de la operación y encuentra 00000000 2 , Al encontrar cero, el señalizador cero se pone a 1, indicando que el acumulador es 00000000 después de la operación de suma. A continuación, considerar las cuatro operaciones de resta del repertorio de instrucciones del microprocesador genérico de la Figura 6.4. Cada instrucción resta el contenido de algunos regis­ tros o posiciones de memoria del contenido del acumulador. Internamente la ALU del micropro­ cesador no tiene hardware para restar, por tanto realiza la sustracción convirtiendo el sustraendo a su forma de complemento a 2 y sumando. Como ejemplo, considerar el problema de resta detallado en la Figura 6.8. El binario 0000000 l se resta de 0000100 l (09H - 01 H = 08H). El procedimiento de papel y lápiz se mues­ tra en la Figura 6.8a. Para revisar, la resta binaria puede realizarse sumando el minuendo binario a la forma en complemento a 2 del sustraendo despreciando el «overflow». El sustraendo en este problema es 0000000 12, que se convierte a su forma en complemento a 2: , complementa JI I J 1 I ! 00001001 + 1 I I 1 11 I 1 IIIYÍetIe CY «No préstamo» (a) Forma de complemento a 2 00000oo I ,,_. , 1~ '_J 00001000 Over­ Ilow Contenido del acumulador de 8 bits Resta binaria convirtiendo el sustraendo a su forma de complemento a 2 y sumando Acumulador 10000 1001 I Acumulador Antes de la operaclOO Registro de status Memoria de programa (b) ,.,' 11111110 complemento a I 11111111 complemento a 2 00000001 11111110 +1 .. «1'0 Instrucción de resta inmediata Figura 6.8. http://librosysolucionarios.net La forma en e una suma de I suma es un ~ el overflow pe vierte el oven gura 6.8a, el ( no se ha pfeSl La instruc Figura 6.8b. I restado del c( acumulador ( que no ha oc mayor que el despuéS de la tanto el señal Considm ma es restar € El método df se convierte ~ PROGRAMACION DEL MICROPROCESADOR ~I microprocesa­ ,Jor contiene registro par HL pleta la suma, el 00,. El señaliza­ ~ del bit más !Cumulador des­ ero se pone a 1, DStrucciones del le algunos regis­ U del micropro­ do el sustraendo 6.8. El binario )' lápiz se m ues­ ¡ouendo binario straendo en este r l Il001 L [D 1 Invien. 00000101 + 11111010 ". '. o\ \ .... ,.,,1 11111111 Overflow Contenido del acumulador de 8 bits .....------t' Cy «No préstamo» (a) 147 Forma en complemento a 2 00000110 Resta binaria mostrando el efecto del overflow sobre el señalizador de arrastre Acumulador ~ Antes de la operación Acumulador ~ _ Después de la operación /SUBL Registro L OOOO--OL. I 1-0""1 Registro de status '1 Cy (b) z La instrucción de restar L de A Figura 6.9. La forma en complemento a 2 (11111111) del sustraendo se suma entonces al minuendo, dando una suma de I 0000 1000, como se ve en la Figura 6.8a. El I de la posición más significativa de la suma es un «overflow» y no es parte de la diferencia ()()()() 1OOOr El microprocesador utiliza el overflow para afectar el señalizador de arrastre (o «préstamo» (borrow)). Al restar, la CPU in­ vierte el overflow, y éste se convierte en el contenido del señalizador de arrastre (eY). En la Fi­ gura 6.8a, el overflow de I se invierte y pone a cero el señalizador de arrastre, lo cual significa que no se ha presentado ningún préstamo o que el minuendo es mayor que el sustraendo. La instrucción de «resta inmediata» (nemotécnico SUI) se utiliza en el ejemplo de resta de la Figura 6.8b. El dato inmediato del segundo byte de la memoria del programa (00000001 2 ) es restado del contenido del acumulador (00001001 2 ), La diferencia de 00001000 2 es transferida al acum ulador después de la resta. El señalizador de arrastre (<<préstamo») se pone a O, indicando que no ha ocurrido ningún préstamo o que el número del acumulador antes de la operación era mayor que el número de memoria. El señalizador de cero examina el contenido del acumulador después de la operación de resta. El acumulador contiene 0000 1000, que es distinto de cero, por tanto el señalizador de cero se pone a O. Considerar otro problema de resta donde el minuendo es menor que el sustraendo. El proble­ ma es restar el binario 00000 110 del número más pequeño 00000 101 (05H - 06H = FFH o -1 10 ), El método de lápiz y papel para calcular este problema se ilustra en la Figura 6.9a. El sustraendo se convierte a complemento a 2 de una forma parecida a ésta: 00000110 _c_o_m_p_le_m_e_nt_a... 11111001 complemento a 1 111110 10 complemento a 2 11111001 + l http://librosysolucionarios.net • 148 FUNDAMENTOS DE LOS MICROPROCESADORES 100010000 Acumulador Antes de la I 100010000 opersció-;--....€~y--......... ~ CMP L Acumulador Después de la operación f.. -11 1 Registro de status Z Cy I000 10000 I 000 1 0000 Registro L IO I Registro L La instrucción compara A con L (a) 11' O Cy (n viene ,-', O .....- - - - 1, I (b) I _ ... I Overflow 00010000 + 1 1110000 00000000 Forma en complemento a 2 de 00010000 Contenido temporal de un registro de la CPU El minuendo dando lOOOC Son igual a ~ ALU,yelse reinicializacié contenido de En resum. típicas de lo 4 procesadores sefializadores de salto inCOI 6.10. Efecto sobre el señalizador de arrastre cuando se realiza la resta binaria durante la operación de comparación Sohx Se SUIl Figura 6.10. El minuendo (00000101 2) se suma entonces a la forma en complemento a 2 del sustraendo 6.11. (I 1111010), dando una diferencia de 111111 l I. La diferencia 11111111 es la representación en complemento a 2 de -1 10 como muestra la Figura 2.12. La Figura 6.9a también muestra que la suma no provoca overflow, o un O en el registro de overflow. Este se invierte (debido a la operación de resta), dando un 1 en la posición de sefializador CYo «arrastre». Cuando el señali­ zador CY se pone a 1 después de una operación de resta, significa que el número del acumulador es menor que el número del registro o posición de memoria. El sefializador de arrastre a I implica que el número del acumulador después de la sustracción es una representación en complemento a 2 de un número negativo. El III1IlI1 del acumulador de la Figura 6.9 representa -1'0' El repertorio de instrucciones del microprocesador genérico tiene cuatro instrucciones de comparación que se muestran en las cuatro últimas líneas de la Figura 6.4. Las instrucciones de comparación restan el contenido del registro o memoria del contenido del acumulador pero no cambian sus contenidos. Los señalizadores son afectados por las instrucciones de comparación. La instrucción «comparar el registro ü> se utiliza como ejemplo en la Figura 6.10. Números iguales (000100002) en el acumulador y registro L son comparados por el microprocesador. Ob­ servar en la Figura 6. lOa que ni el acumulador ni el registro L cambian los contenidos después de la operación de comparación. Sin embargo, son afectados los sefializadores del registro de status. De acuerdo con la información de la columna simbólica 'de la Figura 6.4, el contenido del registro L es restado del contenido del registro A cuando se utiliza la instrucción «CMP L». La Figura 6.lOb muestra este proceso utilizando el método de lápiz y papel. El sustraendo (contenido del registro L) es cambiado a su forma de complemento a 2 por el procedimiento: 000 10000 complementa .. 1110111 l + 1 1110 1 l 11 Acucl códi¡ complemento a 1 11110000 complemento a 2 http://librosysolucionarios.net Acu<i de UI . Sol. 6.12. AcuC SoIw: Se afectl .~ 6.13. El ce es_ SoN! L 0000 oper. 6.14. AaI SoII I eua poli PROORAMACION DEL MICROPROCESADOR u0000 ~ 149 El minuendo (00010000 2) y sustraendo en complemento a 2 (11110000) se suman entonces, dando l 0000 0000. Las ocho posiciones menos significativas son evaluadas para ver si son cero. Son igual a cero, por tanto el sefializador de cero se pone a l. El overflow de 1 es invertido por la ALU, y el sefializador de arrastre es igual a O en este ejemplo. Un señalizador de arrastre en reinicialización (CY = O) significa que el contenido del acumulador es mayor o igual que el contenido del registro L. En resumen, las operaciones aritméticas que pueden ser realizadas por la MPU genérica son típicas de lo que la mayoría de los repertorios de instrucciones pueden realizar. Muchos micro­ procesadores tienen más instrucciones aritméticas y sefializadores en sus registros de status. Los sefializadores se utilizarán más tarde para afectar el resultado de las instrucciones de bifurcación o de salto incondicional. PROBLEMAS RESUELTOS 6.10. comparación l lel sustraendo esentación en iluestra que la (debido a la mdo el sefiali­ ~l acumulador tre a l implica complemento na -1 10• Solución: Según la quinta línea de la Figura 6.4, la instrucción de «resta inmediata» tiene el nemotécnico SUI y el código de op de D6H y es una instrucción de 2 bytes. 6.11. contenido del IIC\1P L». La do (contenido Acudir a la Figura 6.4. Incrementar significa _ de un registro del microprocesador. Incrementar significa sumar l al contenido de un registro del microprocesador. 6.12. Acudir a la Figura 6.4. ¿Qué instrucción de incrementar no afecta al sefializador cero? Solución: Según la información de la Figura 6.4, la instrucción ~ H (incrementar registro par HL) no . afecta al sei\alizador cero. 6.13. El contenido del acumulador de la Figura 6.11 después de la operación de decrementar es _ _ (8 bits). Solución: La instrucción DCR A significa restar uno del valor del acum~lador, y por tanto ()()()()()()() l - 1 = ()()()()()()oo. El acumulador de la Figura 6.11 contendrá 00000000 después de la operación de decrementar. 6.14. Acudir a la Figura 6.4. El sefializador de cero de la Figura 6.11 está a _ _ (O, l) des­ pués de la operación de decrementar. Solución: El contenido del acumulador eS comprobado después de la operación de decrementar y se encuentra que vale cero; por tanto el sei\alizador de cero del registro de status de la Figura 6.11 se pone a 1. http://librosysolucionarios.net I ~ (sumar 1 al, restar 1 del) contenido Solución: rtrucciones de Rrucciones de tlador pero no :'C'mparación. " Números ocesador. Ob­ los después de el registro de Acudir a la Figura 6.4. La instrucción «resta inmediata» tiene el nemotécnico ___ y el código de op D6H y es una instrucción de ___ bytes. :11& 150 FUNDAMENTOS DE LOS MICROPROCESADORES Acumulador ? Acumulador Antes de la operación 6.18. Acudí despw SolacM Después de la operación Eh inmedi dor es: seña/iz.¡ Registro de status z Cy . 6.] 9. Figura 6.11. 6.15. '""" Acudir a la Figura 6.4. ¿Cuál es la condición del señalizador de arrastre de la Figura 6.11 después de la operación de decrementar? Solocié loa = 1000 Solución: registro 0000 OC De acuerdo con la Figura 6.4, el señalizador de arrastre (en no es afectado por la operación de decrementar A, y por tanto la condición del señalizador de arrastre del registro de status es impre­ decible. 6.16. AcudiJ operne Acudir a la Figura 6.4. Listar el contenido del acumulador y de dos posiciones de la memoria de programa después de la operación de «comparar inmediato» de la Figu­ ra 6.12. Registro par , Solución: Las instrucciones de comparación no cambian el contenido de los registros o posiciones de memoria que se compara. Por tanto. el acumulador contendrá todavía 000011 II después de la operación de comparación en la Figura 6.12. El código de op para la instrucción ePI es FE 16 (ver la Figura 6.4), mientras que el dato inmediato de la memoria de programa es todavía 00010000. 6.17. Acudir a la Figura 6.4. El señalizador de cero de la Figura 6.12 estará a _ _ (O, 1) después de la operación de «comparación inmediata». Solución: El señalizador cero de la Figura 6.12 estará en reinicialización después de la operación de comparación inmediata. La columna simbólica de"'la Figura 6.4 muestra que la instrucción de comparación es básicamente una operación de resta donde se evalúa la diferencia. En este caso la diferencia no es cero, por tanto el señalizador de cero no alcanzará la reinicialización. Acumulador , 6.20. Soluciál De. Acumulador ? ción de i cible. O señaliza Después de la operación 6.21. Código de .. ' d? Dato Dato Figura 6.12. http://librosysolucionarios.net Los señ utilizad cación. Código de operación Memoria de programa A~ pués de Memoria de programa SoJuciáI Los! micropn PROORAMACJON DEL MICROPROCESADOR 6.18. ~ Acudir a la Figura 6.4. El señalizador de arrastre de la Figura 6.12 estará a _ _ (0, 1) después de la operación de comparación inmediata. Solución: El señalizador de arrastre de la Figura 6.12 estará a l después de la operación de comparación inmediata porque el resultado de la resta interna de la CPU detecta que el contenido del acumula­ dor es menor que el contenido de la sección del dato de la memoria del programa. Recordar que el señalizador de arrastre cuando se resta es realmente un señalizador de «préstamo». ~, ~ 151 6.19. • Figura 6.11 Acudir a la Figura 6.4. El contenido del registro par HL de la Figura 6.13 despuéS de la operación de incrementar es _'_ _ (hex) . Solución: Incrementar el contenido del registro par HL significa llll 1111 llll 1111 + l .. .. l 0000 0000 0000 0000. El bit más significativo de la suma es llevado al extremo izquierdo del registro H. Por tanto. el contenido en el registro par HL despuéS de la operación será 0000 0000 0000 0000, ó 0000 16 , toperación de I tatus es impre­ bones de la • de la Figu­ Registro par HL 1"11 1111 1"11 1111 ! . Registro par RL Antes de la operaciÓD Después de la operación •posiciones de después de la es FEI6 (ver la 00010000. Registro de status Cy t z _ _ (0,1) Figura 6.13. t \:,oeración de <rucción de tu este caso la 6.20. Do. • Acudir a la Figura 6.4. ¿Cuál es la condición de los señalizadores de la Figura 6.13 des­ pués de la instrucción de incrementar el registro par HL? Solución: De acuerdo con la Figura 6.4, los señalizadores no son afectados por los resultados de la instruc­ ción de incrementar el registro par HL. y por tanto el contenido del registro de status será imprede­ cible. Observar que las operaciones aritméticas sobre el contenido del acumulador afectan a los señalizadores, mientras que esta operación se realizaba sobre el contenido del registro par HL. 6.21. Los sefialízadores son afectados por la mayoría de las operaciones aritméticas pero son utilizados por el microprocesador durante la ejecución de instrucciones ___ (de bifur­ cación, lógicas). Solución: Los señalizadores son afectados por la mayoría de las operaciones aritméticas, pero lo utiliza el microprocesador durante las instrucciones de bifurcación (condicional). http://librosysolucionarios.net ! ,1 152 FUNDAMENTOS DE LOS MICROPROCESADORES v 6.4. REPERTORIO DE INSTRUCaONES: OPERAaONES LOGICAS Las instrucciones lógicas son las segundas operaciones del microprocesador genérico que se van a considerar. Estas están resumidas en la Figura 6.14. Incluyen las instrucciones ANO, OR, OR exclusiva, complementacÍón (NOT) e instrucciones de desplazamiento circular. La organización de la tabla de la Figura 6.14 es la misma que la utilizada para las operaciones aritméticas anterio­ res. Oe nuevo, el foco de la mayor parte de las operaciones está en el contenido del acumulador. Como con las instrucciones aritméticas, el modo de direccionamiento indica cómo y dónde se encuentra el otro dato en el sistema basado en microprocesador. Considerar. el uso de la instrucción «ANO inmediato» del microprocesador genérico, como muestra la Figura 6.15a. El contenido del acumulador (000 l 00 11) realiza la operación ANO con el segundo byte de datos de la memoria del programa (0000000 1). La operación ANO se realiza bit a bit. Según la tabla de verdad de la Figura 3.1, sólo el bit menos significativo de cada número es un 1; por tanto la salida será 0000000 l. El resultado de la operación ANO se coloca en el acumulador. Oe acuerdo con la última columna de la Figura 6.14, todas las operaciones ANO hacen que el señalizador de arrastre se ponga a cero, lo cual también se pone de manifiesto en la Figura 6.15a. Se comprueba si es cero el resultado de la operación ANO y como no lo es, el señalizador de cero está a O. Observar que el punto ( . ) de la Figura 6.14 debajo de la columna «Simbólico» denota la operación ANO. En la Figura 6.15b se ilustra un segundo ejemplo que utiliza una instrucción ANO. Aquí se usa la instrucción «ANO registro indirecto» (nemotécnico ANA M). El contenido del acumula­ dor realiza la operación ANO (bit a bit) con el contenido de la posición de la memoria de datos señalada por el registro par HL. Al realizar la operación ANO entre 00111100 y 00000001, se encuentra que el resultado de salida es 00000000, que se almacena en el acumulador. El señaliza­ dor de arrastre se pone a cero según la información de la Figura 6.14. Se comprueba el contenido del acumulador (00000000) y al ser cero se pone a l el señalizador de cero. Observar cuidadosamente las Figuras 6.15a y b. En ambos ejemplos el segundo operando es 0000000 l. Este operando se utiliza como una máscara. En las Figuras 6.15a y b la máscara 00000001 puede utilizarse para poner a cero los siete bits más significativos. O posiblemente, se utilice el único l de la máscara 00000oo 1 junto con el señalizador de cero, para comprobar la presencia de un O ó un l en la posición LSB del contenido del acumulador. Cuidado: Observar que el contenido del acumulador cambia cuando se utilizan instrucciones ANO. Algunos micro­ procesadores tienen «instrucciones especiales de 'test' de bits», que realizan la operación ANO del acumulador con un byte de máscara sin cambiar el contenido del acumulador mientras cambian los señalizadores. Las cuatro instrucciones OR listadas en la Figura 6.14 realizan la operación OR del contenido del acumulador con el de otros registros o posiciones de memoria. Un ejemplo de una operación OR se muestra en la Figura 6.16. Aquí el contenido del acumulador es 1100 1100, mientras que el registro L contiene 0000 1111; el resultado de la operación OR es I 1001111. La operación OR se realiza bit a bit según la tabla de verdad de la Figura 3.1. El 00001111 del registro L puede considerarse una máscara que siempre pone a 1 los 4 bits menos significativos. Observar el uso del símbolo lógico OR (+) en la columna simbólica de la Figura 6.14. Las dos últimas operaciones lógicas listadas en la tabla de la Figura 6.14 son las de desplaza­ miento circular a través del arrastre. Los diagramas de la columna simbólica de la tabla muestran la acción de desplazamiento provocada por estas instrucciones. Considerar el ejemplo de la Figura 6.17 donde se utiliza la instrucción de desplazamiento http://librosysolucionarios.net Instrucciones ~ Descripción la operacK ANO de A ro ANO de A al ANO deA al ANO de A co LQC(H el OR deA con OR de A con OR de A con OR de A con. (H & L) OR exclusivo, con dato OR exclusivo 4 conA OR exclusi\o con L í OR e1!c1usi\o con H 4 OR exclusívo 4 con LOC(H Complemen'­ (complemem Desplazamienl circular a La derecha a U"l delarrastn: Desplazamimll circular a La izquierda a 1 del arrastre ( ) contenido « }) - direccionam FigUl 153 PROGRAMACION DEL MICROPROCESADOR Instrucciones lógicas ico que se van a ANO,OR,OR La organización méticas anterio­ tlel acumulador. ~mo y dónde se genérico, como ación ANO con ANO se realiza :le cada número se coloca en el etaciones ANO nanifiesto en la !IlO no lo es, el , de la columna ANO. Aquí se o del acumula­ maria de datos Descripción de la operación ANO de A con dato Inmediato I r dato 1 (A) +- (A) • (byte 2) Z 1 CYse borra Z A5 l I Código de op. I (A)+-(A)· (L) CYse borra ANO deA con H Registro ANAH A4 I I Código de op. I (A) ..... (A) . (H) Z CYse borra ANO deA con LOC (H&L) Indirecto de registro ANAM A6 1 I Código de op. I (A) ..... (A) . «H)(L» CY se borra OR de A con dato Inmediato ORI F6 2 rCódigo de op. 1 11 dato 1 (A) ..... (A) + (byte 2) Z Z 1 CYse borra OR deA con L Registro ORAL B5 1 I Código de op. I (A) ..... (A) + (L) Z CY se borra ORdeA con H Registro ORAH B4 I I Código de op. I (A) ..... (A) + (H) CYse borra Indirecto de registro ORA M B6 1 I Código de op. I (A) ..... (A) + «H)(L» CYse borra Inmediato XRI EE 2 OR de A con LOC (H &L) ICódig~~ I1 dato (A) ..... (A) (f) (byte 2) Z Z Z CYse borra Z-I Registro XRAA AF l el acumulador I Código de op, I (A)Bom! +- (A) (f) (A) CY se borra OR exclusivo de A con L Registro XRAL AO l I Código de op. I (A) ..... (A) (f) (L) CY se borra OR exclusivo de A con H Registro XRAH AC l I Código de op·1 (A) ..... (A) (f) (H) CYse borra OR exclusivo de A Indirecto con LOC(H&L de registro XRAM AE I I Código de op. I (A) ..... (A) (f¡ «H)(L» Complementar A (complemento a I Inherente CMA 2F l Desplazamiento circular a la derecha a través del arrastre RAR IF I conA Inherente Desplazamiento circular a la vés izquierda a trav Inherente del arrastre 11 Código de op. 1 Z Z Z CYse borra (A) ..... (A) I Código de op, I ~[i]J CY A RAL 1 17 I Código de op, I ~a A . -AND +-OR $-XOR ( ) contenido « )) - direccionamiento indirecto de registro abla muestran :splazamiento rCódigo de op, ANAL OR exclusivo de A l de, desplaza­ I Registro Ior. El señaliza­ ba el contenido ldel contenido una operación aientras que el ("--ación OR se , :ro L puede :' rvar el uso 2 E6 Señalizadores afectados Simbólico ANOdeA con L OR exclusivo de A con dato )Siblemente, se l comprobar la lado: Observar Ugunos micro­ lC'ión ANO del mtras cambian ANI Formato de la instrucción 1 y 00000001, se lo operando es , b la máscara Modo de Cód. direcciona- Nemotécnico de Bytes opero miento . Figura 6.14. Instrucciones lógicas para el microprocesador genérico (Stlbconjunto de las instrucciones del Intel 8080/8085) . http://librosysolucionarios.net CY 154 FUNDAMENTOS DE LOS MICROPROCESADORES Acumulador Acumulador Después de la operación Registro de status . Memoria de programa Datos (a) La instrucción AND inmediato Figura 8.1 Acumulador Acumulador Después de la operación Registro de status Z CY Registro par H L .,1 , (b) La instrucción ANA M i I Figura 6.15. .. ¡t¡ Con una o cualquier bit y do por una in miento circula número par de Observar q\ y no necesitan modo de direo namiento para instrucciones el genérica. En resUJDel booleana en la:! para comprob< tan obvias COII Acumulador Acumulador Después de la operación J, 6.22. AcudÍ! operac Registro L SoIUCKl La Figura 6.16. f, La instrucción DR de A con L. circular a la derecha del acumulador a través del arrastre. El contenido del acumulador (00 11000 1) se desplaza una posición a la derecha transfiriéndose el bit menos significativo (un I en este ejemplo) a la posición del bit del señalizador de arrastre. El arrastre actual entrará en la posición del bit MSB del acumulador. El acumulador contiene 00011000 después de la opera­ ción, mientras que el señalizador de arrastre se pone a 1 como muestra la Figura 6.17. El señaliza­ dor de cero no es afectado. http://librosysolucionarios.net .¡; acumu! 6.23. 1 AcudÍI de la e Soló Sq Despu cero S( '1 del acumulador . ' lficativo (un l entrará en la l)Ués de la opera­ 6.17. El señaliza- tua. PROGRAMACION DEL MICROPROCESADOR Acumulador Acumulador Registro de status Registro de status Cy Figura 6.17. 155 z z La instrucción desplazamiento circular a la derecha de A a través del arrastre. Con una o más instrucciones de desplazamiento circular, puede comprobarse la posición de cualquier bit y el señalízador de arrastre puede ponerse a l ó a O, pudiendo entonces ser examina­ do por una instrucción de bifurcación condicional. Otro uso de las instrucciones de desplaza­ miento circular es para comprobar la paridad. La paridad par seria un número binario con un número par de unos en la palabra. Observar que las instrucciones de desplazamiento circular operan solamente en el acumulador y no necesitan ningún operando de ningún registro o posición de memoria. Por esta razón, el modo de direccionamiento se denomina inherente, o a veces no se cita ningún modo de direccio­ namiento para estas instrucciones. La mayoria de los microprocesadores tienen varios tipos de instrucciones de desplazamiento y desplazamiento circular además de las utilizadas por la MPU genérica. En resumen, las instrucciones lógicas se utilizan para realizar manipulaciones del álgebra booleana en las variables. También se utilizan para poner a l ó O bits específicos de una palabra y para comprobar y comparar bits. Las aplicaciones de estas instrucciones habitualmente no son tan obvias corno las aplicaciones de las instrucciones de suma y de resta. PROBLEMAS RESUELTOS 6.22. J. Acudir a la Figura 6.14. El contenido del acumulador en la Figura 6.18 después de la operación ANO es _ _ (8 bits). Solución: La operación AND de 111 10011 con 10000000, bit a bit, da 10000000. El contenido del acumulador en la Figura 6.18 después de la operación AND es 10000000. 6.23. Acudir a la Figura 6.14. Listar la condición de los señalizadores de la Figura 6.18 después de la operación ANO . Solución: Según la información de la línea 3 de la Figura 6.14, el señalizador de arrastre se pondrá a O. Después de la operación AND el contenido del acumulador no es cero; por tanto el señalizador de cero se pone en reinicialización (a O). .............. http://librosysolucionarios.net IMIII!I"'I.;¡¡¡;¡iliIIlttJI¡¡¡,,,4IiMIUliJl:U;G¡;;;;II'U¡¡¡¡; ai i Ld 2! 12 las . -" .. ~ 156 FUNDAMENTOS DE LOS MICROPROCESADORES 6.24. Si el propósito del byte del registro H de la Figura 6.18 es comprobar si el MSB del acumulador es O ó 1, la palabra 10000000 en el registro H se denomina _ _ (máscara, palabra de test). Solución: La palabra 10000000 en el registro H de la Figura 6.18 se denomina máscara si su propósito es comprobar el MSB del acumulador para determinar si es O ó l. Al utilizar esta máscara en la instrucción ANA H. si el señalizador de cero es 1, entonces el MSB del byte del acumulador es O; si el señalizador de cero es O, entonces el MSB es l. Acumulador Acumulador Registro H Registro de status Cy z SoIá1 Figura 6.18. 6.2~. Acudir a la Figura 6.14. Cuando se utiliza la instrucción «üR A inmediato» (nemotécni­ co de ORI), el operando que realizará la operación OR con el contenido del acumulador proviene de la memoria de _ _ (datos, programa). ; , \ --j 5eg1 conteru 6.30. AcudiJ operac Solución: La instrucción «OR A inmediato» busca su operando a partir del segundo byte de la memoria del programa. 6.26. I ',. J, " -1 Acudir a la Figura 6.14. La fuente de la dirección (LOC) del operando en la memoria de datos de la Figura 6.19 es el _ _ (registro par HL, puntero de pila). s....J Solución: Según la información sobre la instrucción ORA M de la Figura 6.14, la fuente de la dirección (LOC) del operando en la memoria de datos de la Figura 6.19 es el registro par HL. ; -1 í •.. ., ORo 6.27. ~ - Solución: El símbolo + utilizado en la tabla de instrucciones lógicas de la Figura 6: 14 denota la operación tJ ...J ..~ El símbolo + utilizado en la tabla de instrucciones lógicas de la Figura 6.14 denota la operación _ _ (suma, OR). La colUDlJ operac , ¡j 6.28. • Ji, f: :i¡ ;I 11 Acudir a la Figura 6.14. El contenido del acumulador después de la operación OR en la Figura 6.19 es _ _ (8 bits). l .• Acudi la Fig Solución: El contenido del acumulador después de la operación OR, bit a bit, en la Figura 6.19 es 10000111. SoW Acudir a la Figura 6.14. Listar la condición de los señalizadores del registro de status de la Figura 6.19 después de la operación ORo ¡:l()SÍCÍj i 6.29. 6.31. 'fl! . '¡ http://librosysolucionarios.net De ción d señafu r PROGRAMACION DEL MICROPROCESADOR si el MSB del _ _ (máscara, Ir 157 Acumulador Acumulador , ~ I ~' Antes de la opel'Bclón si su propósito es Memoria de datos máscara en la ICUmulador es O; si tsta Registro de status (LOC) Cy z ? Figura 6.19. t Solución: Según la información de la tabla de la Figura 6.14, el seí\alizador de arrastre se pone a O. El contenido del acumulador no es cero; por tanto el seí\alizador de cero está a O. ' Ito» (nemotécni­ del acumulador 6.30. l Acudir a la Figura 6.14. El contenido del acumulador de la Figura 6.20 después de la operación de desplazar circularmente a la izquierda es ___ (8 bits). .. Acumulador yte de la memoria t Antesdela~ 16.14 denota la L Registro de status la mc~moria de Después de la opemcl6n lit --j O I Cy la Ope!lICión t Acumulador Registro de status z Cy Z Figura 6.20. Solución: La acción de la instrucción de desplazamiento circular a la izquierda está contemplada en la ~ columna simbólica de la Figura 6.14. El contenido del acumulador, en la Figura 6.20, después de la operación de desplazamiento circular a la izquierda es JIl 00 111. de la dirección L.ción OR en la ~ Acudir a la Figura 6.14. Listar la condición de los señalizadores del registro de status de la Figura 6.20 después de la operación de desplazamiento circular a la izquierda. Solución: la Figura 6.19 es IIO 6.31. de status de De acuerdo con la Figura 6.14, solamente es afectado el seftalizador de arrastre por la instruc­ ción de desplazamiento circular a la izquierda; por tanto, el señalizador de cero permanece a O. El seftalizador de arrastre se pone a O porque el MSB del acumulador es desplazado a la izquierda a la posición del arrastre. http://librosysolucionarios.net 158 FUNDAMENTOS DE LOS MICROPROCESADORES 6.5. REPERTORIO DE INSTRUCCIONES: OPERACIONES DE TRANSFERENCIA DE DATOS Instrucciones de l!1II Las instrucciones de transferencia de datos son la tercera categoría de operaciones, del micropro~ cesador genérico, que se van a considerar. Estas están resumidas en la Figura 6.21. Entre ellas se incluyen las instrucciones de transferencia de registro a registro, de carga de memoria, de almace­ namiento en memoria, de entrada y salida y de poner a 1 el señalizador de arrastre. La mayoría de los programas contienen más instrucciones de transferencia de datos que otros tipos de opera~ ciones. Casi ninguna instrucción de transferencia de datos afecta a los señalizadores de la MPU. En este grupo hay muchas instrucciones, ya que los datos pueden Ser transferidos de cualquier posición de memoria a cualquier registro o desde cualquier registro a cualquier posición de memoria u otro registro. Los microprocesadores con más registros de CPU tienen más instruccio­ nes de transferencia de datos. Tener en cuenta que cada instrucción de transferencia tendrá una fuente y un destino para el dato. El modo de direccionamiento determina cómo y dónde se encuentra el dato fuente. Considerar la primera operación de transferencia listada en la tabla de la Figura 6.21. El dato se va a transferir del registro L registro A, o acumulador. El nemotécnico del lenguaje ensambla- Descripclon .) la operacl,'~ Carga SP con d.;;, Carga JlL de lO(" Carga A de LOC ... Almacena.i en LO Instrucciones de transferencia de datos Modo de diretciona· miento Nemotécnico Transfiere L a A Registro MOVA.L 7D 1 Transfiere H a A Registro MOVA.H 1C I Transliere A a L Registro MOVLA 6F 1 Transfiere A a H Registro MOVHA 61 l Transfiere HL a Pe Registro PCHL E9 1 Código de op. 1 Registro SPHL F9 1 I Carga A con dato Inmediato MVIA 3E 2 Código de op. datos (A).- (byte 2) Carga L COI! dato Inmediato MVIL 2E 2 Código de op. datos (L).- (b}te 2) Carga H con dato Inmediato MVIH 26 2 Código de op. datos (H) .- (byte 2) Carga LOC (H y L) aA Indirecto de registro MOVA.M 7E I I Código de op. I (A).- ((HXL)) Carga JIL con dato Inmediato LXIH 21 3 ¡wo ~ orden inhioI Descripción de la operación . :, I I~ Transfiere HL a SP Cód. de Fonnato de la instrucción Bytes opero I I I I Simbólico Señalízadores aFectados Almacena /lL en li Código de op. I (A).-(L) Almacena A en LOI Código de op. (A).-(H) Almacena H en LQ Código de op. I (L).-(A) Almacena JI en U:' ~ Código de op. dato ~ orden ~ (/1 YL) (Hy L) (H).-(A) I I (SP).-(JlL) Código de op. (Hy L) [PC).-(HL) (L).-(byte 2) (H) .- (byte 3) Entrada de A del J."­ en LOC a Salida de A al en LOC a ~ Coloca selÍahzadc'­ de arrastre ( ) - contenido ~ dor(MOVA. técnico (A en I es la fuente del tion con las J destino de Cor ConsideraJ registro A (ac, Figura 6.21. Instrucciones de transferencia de datos para el microprocesador genérico (lll 10(00) es (subconjunto de instrucciones dellntel 8080/8085). ne este dato d http://librosysolucionarios.net PROGRAMACION DEL MICROPROCESADOR 159 Instrucciones de transferencia de datos de) micropro­ 1. Entre ellas se )lía. de almace­ treo La mayoría tipos de opera­ !reS de la MPU. os de cualquier ier posición de más instruccio­ tcia tendrá una no y dónde se , ra 6.21. El dato uaje ensambla- Oíd. Descripcion de la operación Modo de direcciona· miento Nemotécnico (arga SP con dato Inmediato LXISP 31 3 ~to de orden inkrioI (SP) i- (byte 2 + 3) flato de orden superioI Directo LHlO 2A 3 ~. de orden inkrioi de Formato de la instrucción Bytes opero Simbólico Señalizadores afectados (ódigo de op. Código de op. (arga HL de Loe 00 ifuoc. de onlen superiot (L) i- ((byte 2 +3)) , (11) i- ((byte 2 +3)+ 1) (ódigo de op. (arga A de Loe 00 Directo lOA 3A 3 ~. de onlen inferioI' (A) i- ((byte 2 +3)) ~deonlen~ Almacena A en LOC aa Directo STA 32 3 (ódigo de op. R. de onlen inferia (Dirección) i- (A) ~ de onlen superiOl Señalizadores afectados l l l i ~ ~érico Directo SHlO 22 3 Código de op. (Dirección) i- (L) R. de onlen inkrioi (Dirección + 1) i- (11) R. de onlen ~ Indirecto de registro Indirecto de registro Indirecto de registro MOV M.A 77 I I Código de op. MOV M.L 75 I I Código de op. MOVM.H 74 I I (ódigo de op. Entrada de A del puerto en LOC a Directo IN DS 2 . deop dírec. del puerto Salida de A al puerto en LOC a Directo OUT D3 2 Código de op. direc. del puerto Coloca senalizador de arrastre Inherente STC 37 I Almacena HL en LOC aa Almacena A en Loe (Hv Li Almacena H en Loe (Hy L) Almacena H en LOC (Hy L) ( ) - contenido de I « )) - direccionamiento indirecto de registro Figura 6.21. Código de op. I ((HXL»i-(A) I ((HXL)) +-(L) I ((HXL)) i- (11) I DirecciÓn) puerto I (A) +- ( del I ( Dirección Ji- (A) I del puerto (C}')i-I pe - contador de programa CY se pone a I SP - puntero de pila (continuación). dor (MOV A, L) sugiere primero la acción, que es transferir (MOV); la siguiente letra del nemo­ técnico (A en este ejemplo) es el destino del dato, mientras que la última letra (L en este ejemplo) es la fuente del dato. Esto parece un poco al revés, pero es el convenio utilizado por Intel Corpora­ tion con las instrucciones del 8080/8085. Algunos microprocesadores identifican la fuente y destino de forma diferente y en el orden opuesto. Considerar la operación de transferencia esbozada en la Figura 6.22. La fuente del dato es el registro A (acumulador), mientras que el destino es el registro L. El contenido del acumulador (11110000) es transferido al registro L sin ninguna modificación. El acumulador también contie­ ne este dato después de que se completa la operación de transferencia. http://librosysolucionarios.net -~-~-- 160 ""'"""'. . . .0..--" ~' FUNDAMENTOS DE LOS MICROPROCESADORES Acumulador Antes de la operación /1111 0000 / Acumulador Después de la operación Memoria de Il Registro L Figura 6.22. I La instrucción de transferir A a L. Una segunda operación de transferencia está en la Figura 6.23. Aquí la fuente del dato es el registro par HL de 16 bits, mientras que el destino es el puntero de pila de 16 bits. Si se observa cuidadosamente el nemotécnico de la instrucción <<transferir HL a SP», tiene sentido cuando se recuerda que se cita primero el registro destino (SP en este ejemplo) y después el registro fuente (HL en este ejemplo). El nemotécnico para la instrucción «transferir HL a SP» es entonces SPHL. ! ,1 1111 0000 0000 0000 ' Puntero de pila Después de la operación Antes de la opendón Memoria de cilla /1111 0000 / 0000 0000 Registro par HL Figura 6.23. J ¡ A ¡ I Registro Par HL \ Instrucción de transferir HL a SP. Hay cinco instrucciones de «carga inmediata» en la categoría de carga. Las instrucciones de «carga inmediata» son utilizadas muchas veces para colocar un valor inicial al registro micropro­ cesador antes que el programa. Un ejemplo de instrucción de carga se detalla en la Figura 6.24. El registro par de 16 bits HL se va a cargar con un dato inmediato de la memoria del programa. Observar en la Figura 6.21 que la instrucción «carga HL con datos» requiere una instrucción de 3 bytes. El primer byte es el código de op (21H en este ejemplo), mientras que los 2 siguientes bytes de la memoria de programa son bytes de datos. El segundo byte contiene el dato de orden inferior (00000011 en este ejemplo) que se carga en el registro L, según se muestra en la Figu­ ra 6.24; el tercer byte contiene el dato de orden superior (00111100 en este ejemplo) que se carga en el registro H del registro para HL. El siguiente ejemplo ilustra el uso de la instrucción (<Carga directa de HL» (nemotécnico LHLD). El problema ejemplo está esbozado en la Figura 6.25. La instrucción LHLD utiliza el modo de direccionamiento directo. de acuerdo con la tabla de la Figura 6.21. El segundo y tercer bytes de la memoria del programa son la dirección de 16 bits de la posición de la memoria de datos donde se encuentra el dato que se va a cargar. Seguir en la Figura 6.25 y comenzar con la instrucción de 3 bytes de la parte inferior izquierda de la memoria de programa. El código de op de la instrucción LHLD es 2AH. La CPU entonces ensambla los 2 bytes siguientes del programa http://librosysolucionarios.net en una direcci para encontnu entonces en el do LOC + 1 el El micropl'l la Figura 6.21. y otros datos , trucción «alm PROGRAMACION DEL MICROPROCESADOR 161 Código de operación 21H Memoria de programa DatoL 00000011 DatoH 0011 1100 Después de la operaci6n Antes de la operaciÓD ~ del dato es el s.. Si se observa Registro par HL ltido cuando se registro fuente p,. es entonces H Figura 6.24. L La instrucción de carga inmediata HL. r au de pila Antes de la operaci6n Después de la operaci6n Registro HL l Ilro Par HL Lroo~~ SIro micro pro­ F"JgUra 6.24. El del programa. instrucción de )S :; siguientes dato de orden tra en la Figu­ t) que se carga I nemotécnico D utiliza el PlDdo y tercer I memoria de Illenzar con la I código de op del programa I Byte de orden inferior de la dirección Memoria de programa Byte de orden superior de la dirección Figura 6.25. La instrucción de carga directa HL. en una dirección de 16 bits (lo indica el recuadro a trazos), que sirve como puntero de dirección para encontrar la posición (LOC) en la memoria de datos. Este byte de memoria de datos se carga entonces en el registro L. El contenido de la siguiente posición de la memoria de datos (etiqueta­ do LOC + 1 en este ejemplo) se carga entonces en el registro H. El microprocesador genérico tiene cinco instrucciones de almacenamiento, que se resumen en la Figura 6.21. Las operaciones de almacenamiento son muy utilizadas para depositar resultados y otros datos en memoria. Considerar el problema ejemplo de la Figura 6.26 que utiliza la ins­ trucción «almacena A directo». El contenido del acumulador (registro A) se almacena en la posi­ http://librosysolucionarios.net I --,.. 162 FUNDAMENTOS DE LOS MICROPROCESADORES Acumulador 111000000 1 111000000 1 Acumulador 6.32. Después de la operad6a Antes de la operación r---&--..., Solucio Se¡ Memoria de datos (LOC) .~"""' d, ru=;6n Código de operación 32H i Memoria de programa Byte de orden inferior de la dirección ..... - -- 6.33. I Acudí del da SolDÓ -----~ Se! progr-a; Byte de orden superior de la dirección Figura 6.26. destin4 r------·-----, Dirección de 16 bits I Acud 6.34. Acudí mayO! la mie Solurié La instrucción de almacenar A directo. Seg '1 ¡, , l I dos poi ción de memoria de datos (LOC), señalada por una dirección de 16 bits, y formada por el segun­ do y tercer bytes de la instrucción. Después de la operación, la posición de memoria de datos (LOC) y el acumulador contienen el mismo dato (11000000 en este ejemplo). La instrucción de entrada (input) listada en la tercera línea del extremo inferior de la Figu­ ra 6.21 es similar a la instrucción de cargar. La fuente de la transferencia de datos es un puerto de entrada identificado por un número binario de 8 bits (0-255 10), el destino es el acumulador de la CPU. Un ejemplo se muestra en la Figura 6.27 donde se utiliza la instrucción de entrada. El dato del puerto de entrada señalado por el segundo byte de la instrucción es transferido al acumulador del microprocesador. En este ejemplo, 00001111 es introducido y transferido al acumulador desde un puerto identificado por LOC. 6.35. AeudiJ carga I So. . Scat para" '] Acumulador 1­Ji ·1 Des,... de la operaclOO Antes de la operación :i IN i j­ I ! " i¡ JI Código de operación DBH Una dirección de 8 bits 6.36. Memoria de programa El COI es_ Sol~ El Figura 6.27. " La instrucción de entrada directa. llHx)(] 1 http://librosysolucionarios.net / 1 .] / ( PROORAMACION DEL MICROPROCESADOR 163 PROBLEMAS RESUELTOS 6.32. Acudir a la Figura 6.21. Durante el uso de la instrucción MOV H"A, el registro _ _ (A, H) es la fuente del dato mientras que el registro _ _ (A, H) es el destino. Solución: Según la información de la Figura 6.21, el registro A es la fuente mientras que el registro H es el destino del dato durante la ejecución de la instrucción MQV H,A. 633. Acudir a la Figura 6.21. En la instrucción PCHL, el registro _ _ (HL, Pe) es la fuente del dato mientras que el ______ de 16 bits es el destino. ~-, ~~~..: Solución: Según la información de la Figura 6.21, el registro HL es la fuente mientras que el contador de programa de 16 bits es el destino del dato durante la ejecución de la instrucción PCHL. 6.34. Acudir a la Figura 6.2 t. Los señalizadores _ _ (son afectados, no son afectados) por la mayoría de las operaciones de transferencia de datos en el repertorio de instrucciones de la microcomputadora genérica. Solución: Según la información de la columna derecha de la Figura 6.21, los señalizadores no son afecta­ dos por la mayoría de las operaciones de transferencia de datos. a por el segun­ ¡emoria de datos 6.35. Acudir a la Figura 6.21. El nemotécnico del lenguaje ensamblador para la instrucción de carga utilizada en la Figura 6.28 es ___ . Solución: Según la información de la tabla de la Figura 6.21, el nemotécnico del lenguaje ensamblador para la instrucción de carga utilizada en la Figura 6.28 es MVI A. erior de la Figu­ I es un puerto de !Cumulador de la , entrada. El dato lo al acumulador i) al acumulador Acumulador Después de l. operación Antes de la operación Memoria de programa ación Dato Figura 6.28. 6.36. , El contenido del acumulador de la Figura 6.28 después de la operación de carga es _ _ (8 bits). Solución: El contenido del acumulador de la Figura 6.28 despuéS de la operación de carga es II 10001 1. http://librosysolucionarios.net , 164 FUNDAMENTOS DE LOS MICROPROCESADORES 6.37. Acudir a la Figura 6.21. La operación de carga mostrada en la Figura 6.28 utiliza direc­ cionamiento _ _ (directo, inmediato). 6.42. Des con Solución: Según la información de la tabla de la Figura 6.21, la operación de carga mostrada en la Figura 6.28 utiliza direccionamiento inmediato. 6.38. 6.39. I l. r j:, ,, j 6.40. ¡ ¡ gran Solución: Según la información de la Figura 6.21, la instrucción MOV A,M tiene el código de op 7EH, utiliza direccionamiento indirecto de registro y la fuente de datos es una posición de memoria señalada por el registro par HL. 6.6. REPI Acudir a la Figura 6.21. La instrucción SHLD tiene el código de op 22H y utiliza direccionamiento ___ (directo, inmediato). Acudir a la Figura 6.21. La instrucción «almacena directo HL» (código de op == 22H) es una instrucción de _ _ (número) bytes. Los 2 últimos bytes de la instrucción del programa contienen información sobre ___ (datos, direcciones). Solución: Según la información de la Figura 6.21, la instrucción «(l!lmacena directo Hv> (código de op == 22H) es una instrucción de 3 bytes. Los 2 últimos bytes de la instrucción del programa contienen información sobre direcciones. t 6.41. OPEI Las instrucci genérico que nes se referer rarán sinónir bifurcación \ nes de transj; Instrucciones de bifur. Descripc:idll * la ope¡aciOO Salta a LOC Gil Acudir a la Figura 6.21. La fuente del dato cuando se utiliza la instrucción SACAR (OUT) en la Figura 6.29 es el registro _ _ (A, H, L). Solución: De acuerdo con la Figura 6.21, la fuente del dato cuando se utiliza la instrucción OUT en la Figura 6.29 es el registro A, que también se denomina acumulador. ~ OOT 1; , 1 dato Acudir a la Figura 6.21. La instrucción MOV A,M tiene el código de op 7EH, utiliza direccionamiento ___ (directo, indirecto de registro) y la fuente de datos es una posi­ ción de la memoria de _ _ (datos, programa) señalada por el registro par HL. SoluciÓD: Según la información de la Figura 6.21, la instrucción SHLD tiene el código de op 22H Yutiliza direccionamiento directo. i rl' \ Solll Salta a toe l1li si tr4 el señalilador de I Después de la operación Ir--"--?--' "" Salta a LOC Gil 51 • coloca e111i1f11i111 Puerto de salida (1) de aJTlIStre Código de operación Memoria de 1 programa 0000 000 1 ( )= contenido di: pe - contador de Figura 6.29. http://librosysolucionarios.net Salta a LOC tllui • .' ~ I $-. 8 utiliza direc­ ~ mostrada en la • p 7EH, utiliza es una posi­ ;mHL. PROGRAMAOON DEL MICROPROCESADOR 6.42. 165 Después de la operación sacar en la Figura 6.29, el puerto de salida número _ _ (hex) contendrá el dato _ _ (8 bits). Solución: Después de la operación sacar de la Figura 6.29, el puerto de salida número OlH contendrá el dato 11110011. La dirección del puerto de salida proviene del segundo byte de la memoria del pro­ grama. I)S Iiao de op 7EH, 6.6. REPERTORIO DE INSTRUCCIONES: OPERACIONES DE BIFURCACION ión de memoria J, r utiliza direc­ ~ DI> 22H y utiliza Las instrucciones de bifurcación son la cuarta categona de las operaciones del microprocesador genérico que se van a considerar y están resumidas en la Figura 6.30. Observar que las operacio­ nes se referencian como instrucciones de salto, aunque los términos salto y bifurcación se conside­ rarán sinónimos en este capítulo. Algunos fabricantes hacen distinciones entre instrucciones de bifurcación y de salto. Las operaciones de bifurcación o de salto a veces se denominan instruccio­ nes de transferencia de control. Como las operaciones de la Figura 6.30 son un subconjunto del ~ op = 22H) es !lStrucción del ~ ~. rl» (código de 11 del programa Instrucciones de bifun:ación Modo de direcciona· miento Nemotécnico Cód. de opero Bytes Salta a Loe aa Inmediato JMP C3 3 ~ Ol rotoiD&:ria (I'C) .... (Dirección) ~Olll'den~ SaIIlI a Loe aa si es O Inmediato lZ CA 3 p¡m:. de roto inICrioi Descripción de la operación Fonnato de la instrucción Simbólico Código de op. t Código de op. ::ción SACAR Si el seilalizador de O- 1. entonces (I'C) .... (dirección) ~. de roto superio¡ tión OUT en la Código de op. SaIIlI a Loe aa si no es O Inmediato lNZ C2 3 Si el seIlalizador de O• O, entonces (I'C) .... (dirección) p¡rec. de Il'den inICrioi ~OlrotoSU¡tOO Código de op. Salta a LOC da si se coloca el señalizador de arrastr ,. L , Salta a LOC aa si no se coloca el señalizador de arrastre JC Imnediato DA 3 Prec. de Il'den infeOO ~ Ol roto superio¡ Código de op. Inmediato lNC D2 3 Prec. de roto inferio ~. de onlen su¡x:rio Si el seilalizador de arrastre ­ 1, entonces (I'C) <- (dirección) Si el señalizador de amstre = O. entonces (I'C) .... (dirección) ( ) - contenido de pe - contador de programa Figura 6.30. .. Instrucciones de bifurcación para el microprocesador genérico (subconjunto de instrucciones del Intel 8080;8085). http://librosysolucionarios.net Senalizadon:s afectados e 166 RJNDAMENTOS DE LOS MICROPROCESADORES repertorio de instrucciones del 8080/8085, el convenio de Intel de llamar a estas instrucciones de salto se utilizará más tarde en este capítulo. La microcomputadora normalmente ejecuta instrucciones en orden secuencial. El contador de programa de 16 bits del microprocesador genérico siempre sigue la pista de la dirección de la siguiente instrucción que se va a buscar en memoria y ejecutar. El contador de programa normal­ mente sigue una secuencia ascendente aumentando de uno en uno. Las instrucciones de salto o bifurcación proporcionan un método para cambiar el valor del contador de programa, alterando así la secuencia normal de ejecución del programa. U.s instrucciones de salto o bifurcación se subdividen normalmente en operaciones de salto incondicional y de salto condicional. La primera instrucción listada en la Figura 6.30 es una instrucción de salto incondicional. La instrucción «saltar inmediato» es una instrucción de 3 bytes, utilizada para cargar una dirección específica en el contador del programa de la CPU. Un problema ejemplo que utiliza esta instrucción, de salto incondicional, se muestra en la Figu­ ra 6.31 donde la dirección 2000H se está cargando en el contador del programa. La información de la dirección sigue inmediatamente al código de op, y por tanto, se denomina direccionamiento inmediato. Observar en la Figura 6.31 que la parte de orden inferior de la dirección de 16 bits se localiza en el segundo byte de la memoria de programa, mientras que el tercer byte contiene la parte de orden superior de la dirección. Una instrucción de este tipo se utiliza en un principio para inicializar el contador de programa cuando empiece la ejecución de un nuevo programa. La instrucción de salto o bifurcación incondicional puede considerarse como un método de cargar una nueva dirección en el contador de programa. Código de operación Memoria de programa Antes de la operaciÓD Después de la operación Memoria de Anf~ Contador de Jl Registro programa con l. ma, por lo que instrucción que 2013H como PI memoria del po la memoria del l mente sea el má Las instrucci procesadores. Se salto o bifurcací dos técnicas de I Contador de programa Figura 6.31. Instrucción de bifurcación incondicional. Las ¡DI 6.43. 0_ Sol~ Las cuatro últimas operaciones de bifurcación, detalladas en la Figura 6.30, son instrucciones de salto condicional. Estas instrucciones harán que la dirección inmediata se coloque en el conta­ dor de programa sólo si se satisface la condición especificada. En cualquier otro caso el contador de programa, simplemente, contará en secuencia ascendente. Un problema ejemplo que utiliza la instrucción «salta si cero» aparece en la Figura 6.32. En este ejemplo, el contador de programa contiene 20 13H antes de la operación y continuará en secuencia ascendente hasta que el señaliza­ dar de cero se ponga a L La CPU evalúa la condición del señalizador de cero en el registro de status y encuentra que está a l. Esto significa que el resultado de la última operación lógica o aritmética fue cero; las condiciones son correctas para un salto, y la MPU carga el contador de Las ¡. da de C(J 6.44. Se dice toma de Soluciólr Las 6.45. (1 Acudir 1 salto. ~ ~i http://librosysolucionarios.net ~;] II'~ J I ..... . PROGRAMACION DEL MICROPROCESADOR Ilrucciones de 167 Código de operación 1. El contador Iirección de la ;rama normal­ Ines de salto o ma. alterando Después de la opeftclón ~nes de salto a 6.30 es una nstrucción de le la CPU. Un :a en la Figu­ il información ccionamiento [l de 16 bits se te contiene la I un principio programa. La odo de cargar Contador de programa Registro de status' Cy ­ Contador de programa 1 z La Instrucción de salta si cero. programa con la nueva dirección 2008H. La nueva dirección proviene de la memoria de progra­ ma, por lo que se dice que esta instrucción utiliza direccionamiento inmediato. La siguiente instrucción que se va a ejecutar será la instrucción de la posición de memoria 2008H y no la de la 2013H como podria esperarse. El microprocesador genérico salta a una nueva posición de la memoria del programa. Los saltos o bifurcaciones pueden hacerse hacia atrás o hacia adelante en la memoria del programa. El ejemplo de la Figura 6.32 ilustra un salto hacia atrás, que probable­ mente sea el más común. Las instrucciones de salto o bifurcación se encuentran en casi todos los programas de micro­ procesadores. Son valiosas debido a su caracteristica de toma de decisiones. Las instrucciones de salto o bifurcación se utilizan para formar ciclos y saltos en el programa. Los ciclos y saltos son dos técnicas de programación que se estudiarán más tarde en este capítulo. PROBLEMAS RESUELTOS 6.43. J L..­_ _--I-_ _ _..... t--1 I Figura 6.32. de programa rucciones r en el conta­ D el contador que utiliza la de programa le el sefUtliza­ el registro de ción lógica o ,contador de I 00 1O0000 I 000 100 11 I Las instrucciones de bifurcación también se denominan de ___ (brinco, salto) o ___ de control. Solución: Las instrucciones de bifurcación también se denominan instrucciones de salto o de transferen­ cia de control, 6.44. Se dice que las operaciones _ _ (lógicas, de salto condicional) son instrucciones de toma de decisión. Solución: Las operaciones de salto condicional son instrucciones de toma de decisión. 6.45. Acudir a la Figura 6.30. El nemotécnico del lenguaje ensamblador para la operación de salto, esbozada en la Figura 6.33, es ___ . http://librosysolucionarios.net } - 'j5*':> 168 • fUNDAMENTOS DE LOS MICROPROCESADORES Código de Dirección operación ¡ Memoria de programa 20lOH cm 201m 00000000 2012H 00100000 Solud El tabla ( 6.48. I { ¡_~~~ ___ Antes de la operación ( I 00 1O0000 000 I 00 11 I Registro de status 1 O t --j 1 I Contador de programa Cy El COII es_ r---J-_ _ _ Des_'_U_éS_d..,e ? Nemotecnico la operación Soludt E/s Contador de programa salto. 1. ción qu z 6.7. Figura 6.33. REPER OPERA, Solución: El código de operación para la operación «Salta si no cero» de la Figura 6.33 es C2H. A partir de la tabla de la Figura 6.30 se detennina que el nemotécnico del lenguaje ensamblador para esta operación de salto es JNZ. 6.46. Acudir a la Figura 6.30. El contenido del contador de programa de la Figura 6.33 después de la operación «salta si no cero» es ___ (hex). Solución: j ¡ El señalizador de cero del registro de status de la Figura 6.33 se pone al, lo cual significa que el resultado de la última operación aritmética o lógica fue cero. La condición para el salto no se satisface. La dirección del segundo y tercer bytes de la memoria de programa no son cargadas en el contador de programa, por lo que su contenido permanece a 20l3H, como estaba antes de la instrucción de salto condicional. La siguiente instrucción que se va a ejecutar se localiza en 2013H. 6.47. Acudir a la Figura 6.30. El nemotécnico de la instrucción «salta si arrastre» de la Figu­ ra 6.34 es Je, mientras que el código de operación es _ _ (hex). 2000H Instrucciones de lIamdt .. '1 Descripción de la operación Código de Dirección operación Memoria de programa Las instruccionl' microprocesadol servar que el m instrucciones de La instrucció microprocesador un pequeño grol encuentra la prir salto en los siguie se guarda en la pi subrutina en la p segundo se ejecul ? Llama ala subrutita 0000 0000 en lOC aa 2002H 00100001 Antes de la operación Contador de programa Registro de status Des,u& de la operación lii~ 0000 00 11 1-------_.....1 ? I 1 f-- j O I Cy Contador de programa Vuelta de subrutina ( ) - contenido de « » - direccionamiento Pe - contador de prognu I SP - puntero de pila z Figura 6.34. http://librosysolucionarios.net Figura 6.35. ( PROGRAMACION DEL MICROPROCESAOOR 169 Solución: El nemotécnico de la instrucción de <<Salta si arrastre» de la Figura 6.34 es JC, mientras que la tabla de la Figura 6.30 indica que el código de op de esta instrucción es DAH. 6.48. El contenido del contador de programa después de la operación de salto de la Figura 6.30 es (hex). Solución: El señalizador de arrastre se pone al, Ypor tanto se satisface la condición para la operación de salto. La MPU carga la nueva dirección 2100H en el contador de programa. La siguiente instruc­ ción que se va a ejecutar se carga en 2100H en la memoria del programa. • operación :::Ontador de programa 6.7. REPERTORIO DE INSTRUCCIONES: OPERAOONES DE LLAMADA Y VUELTA DE SUBRUTINA para el salto no se no son cargadas en el 10 estaba antes de la a:cutar se localiza en Las instrucciones de llamada y vuelta de subrutina son la quinta categona de operaciones del microprocesador genérico que se van a considerar. Estas están resumidas en la Figura 6.35. Ob­ servar que el microprocesador genérico tiene solamente dos instrucciones en este grupo. Las instrucciones de llamada y vuelta son utilizadas siempre en parejas. La instrucción de llamada de 3 bytes se utiliza en el programa principal para hacer que el microprocesador salte a una subrutina. En el ejemplo mostrado en la Figura 6.36, la subrutina es un pequeño grupo de instrucciones que consiguen un retardo de 1 segundo. Cuando la MPU encuentra la primera instrucción de llamada en la posición 200DH, encuentra la dirección de salto en los siguientes bytes de programa. La dirección de la instrucción que sigue a la de llamada se guarda en la pila (no mostrada en la Figura 6.36). La MPU entonces bifurca al comienzo de la subrutina en la posición 1000H. Las instrucciones de la subrutina que consigue un retardo de 1 segundo se ejecutan hasta que la CPU encuentra la instrucción de vuelta. La dirección guardada lnstre» de la Figu­ Instrucciones de llamada y vuelta de subrutina .,33 es C2H. A partir I1Samblador para esta ~. =ígura 6.33 después t cuo! signifi"" que el D Modo de direcciona­ miento Nemotécnico Coo. de oper. Bytes Formato de la instrucción Uama a la subrutina en LOC aa Inmediatol indirecto de registro CALL CO 3 ~I~~ ((SP) - 2) ~ (PCL) (SP) ~ (SP) - 2 (Pe) ~ (dirección) Vuelta de subrutina Indirecto de registro RE! C9 1 I (PCL)~((SP)) (PClf)~((SP)+ (SP)~(SP)+2 Descripción de la operación Contador de programa ( )= Código de op. Simbólico Señalízadores afectados ((SP)-I)~(PClf) 1) '1 contenido de « »- direccionamiento indirecto de registro , pe - contador de programa SP - puntero de pila Figura 6.35. Instrucciones de llamada y vuelta de subrutina para el microprocesador genérico (subconjunto de instrucciones del Intel 8080/8085). http://librosysolucionarios.net - -I~ 170 FUNDAMENTOS DE LOS MICROPROCESADORES Programa principal i Dirección Contenido 200DH CALL 200EH OOH 200FH IOH La instrucci Figura 6.37 det contador de pr nueva direcciól seguida a trav~ Puntero de pila Salta 1 210AH IOOOH Subrutina que produce un retardo de I seg 2010H ~ ~ Contador de progr.u Antes. Memoria de J)I'O@:l' 1. El pum El b~1e posición 3. El punte 4. El byted 2108H. S. La direc program 6. La dim:: program 2. Figura 6.36. Flujo de programa del programa principal a la subrutina y vuelta utilizando las instrucciones de retorno y llamada. \ en la pila (201 OH) es devuelta al contador de programa, y la MPU continúa el programa principal donde lo dejó cuando se llamó por primera vez a la subrutina. La MPU ejecuta las instrucciones en secuencia hasta que encuentra la segunda instrucción de llamada en la dirección 2020H. La MPU guarda en la pila la dirección de la siguiente instrucción (2023H) y salta a la subrutina en la dirección loooH. Hasta que se completa de nuevo la subrutina de retardo de tiempo, la instruc­ ción de vuelta saca de la pila la dirección de la siguiente instrucción del programa principal (2023H) y la transfiere al contador de programa. Se puede utilizar muchas veces una subrutina en la ejecución de un programa principal. La subrutina puede almacenarse en una RAM o ROM. http://librosysolucionarios.net La MPU irá ah< ejemplo). Esta e'! Considerar el tina. La instrucc programa. La SI círculos de la F~ 171 PROGRAMACION OEL MICROPROCESADOR La instrucción de llamada combina las funciones de las operaciones de introducir y saltar. La Figura 6.37 detalla el uso de la instrucción de llamada. Primero introduce el contenido actual del contador de programa en la pila. A continuación, el contador de programa se carga con una nueva dirección, para realizar el salto a la de la subrutina. La secuencia de acciones puede ser seguida a través de los números inscritos en círculos en la Figura 6.37. Pila Puntero de pila Pila 2107 2108 2108 3, - - - :12108H I 1 , , , 2109 , (!J n----+--{ ,210A .... ___ ~" , , 2109 ~ 210AH ' - -_ _......JI - - . . j....., 2 lOA , ~ uce Contador de programa do I Puntero de pila 2107 , L -_ _ _~--~~~ Después de la operación Antes de la operación 2000H COH Memoria de programa 200EH f----f----j 200FH 00010000 Figura 6.37. La instrucción de llamada a subrutina. 1. El puntero de pila se decrementa de 210AH a 2109H. 2. El byte de orden superior del contador de programa es introducido en la pila, en la posición 21 09H. 3. El puntero de pila se decrementa de 2109H a 2108H. 4. zando El byte de orden inferior del contador de programa es introducido en la pila en la posición 2108H. LprinciDID 5. La dirección de orden inferior es transferida desde el segundo byte de la memoria de programa al byte inferior del contador de programa. 6. La dirección de orden superior es transferida desde el tercer byte de la memoria de programa al byte superior del contador de programa. , instrucciones ión 2020H. La subrutina en la lpo. la instruc­ rama principal 13 subrutina en l-\M o ROM. La MPU irá ahora a la nueva dirección sefialada por el contador de programa (1 OOOH en este ejemplo). Esta es la dirección de la primera instrucción de la subrutina. Considerar el ejemplo mostrado en la Figura 6.38 utilizando la instrucción de vuelta de subru­ tina. La instrucción de retomo (o de vuelta) debe transferir el contenido de la pila al contador de programa. La secuencia de acciones puede ser seguida a través de los números inscritos en círculos de la Figura 6.38. http://librosysolucionarios.net " 172 RJNDAMENTOS DE LOS MICROPROCESADORES Puntero Pila Pila de pila 2107 2108H 2108 00010000 Puntero de pila 2109 00100000 210AH . ~ ,'21OA ' .,/ Después de la operación Antes de la operación ---_ Contador de progran ......- - - ' Contador de programa Figura 6.38. Antes • la instrucción de vuelta de subrutina. Memoria de programo 1. 2. 3. 4. .'1 El tope de la pila (posición 2108H) es sacado, y su contenido transferido al byte inferior del contador de programa. El puntero de pila es incrementado de 2108H a 2109. La parte superior de la pila (ahora posición 2109H) es sacada, y su contenido transferido al byte superior del contador de programa. El puntero de pila es incrementado de 2109H a 2IOAH. El contador de programa ahora contiene la dirección de 16 bits (20 l OH) de la siguiente instruc­ ción que se va a buscar en la memoria del programa. Solucidll.: El con te será 00 I()()( pila, de ac-u 6.53. Solucidll.: PROBLEMAS RESUELTOS 6.49. La instrucción de ___ (llamada, vuelta) es parte del programa principal, mientras que la instrucción de _ _ (llamada, vuelta) es el fin de una subrutina. El COntI: I1amada ser 6.54. Solución: Ver la Figura 6.36. la instrucción de llamada es parte del programa principal, mientras que la instrucción de vuelta está al final de una subrutina. 6.50. La llamada es una instrucción de _ _ (número) bytes. Los 2 últimos bytes contienen la dirección de la primera instrucción de _ _ (memoria principal, una subrutina). 655. Solución: La operación de llamada realiza las funciones de las instrucciones de introducir y saltar. 6.52. Acudir a la Figura 6.39. El contenido de la posición de la pila 2109H después de la operación de llamada será de _ _ (8 bits). http://librosysolucionarios.net Acudir a • de llamad,¡ Soludc'lc contienen la dirección de la primera instrucción de la subrutina. La operación de llamada realiza las funciones de _ _ (sacar, introducir) y de _ _ (sumar, saltar). Acudir a t ción de lIa Solucióa: Desp.á superior de Solución: La llamada es una instrucción de 3 bytes, según la tabla de la Figura 6.35. Los 2 últimos bytes 6.51. Acudir a • operación El conte será OOIOH 6.56. Las illStrul parejas. iD SolucWc Las instl 173 PROGRAMAClON DEL MICROPROCESADOR Pila Pila 2107 Puntero de pila 2107 210 Puntero de pila 2109 210AH ~L...:2-¡-OA-L.:_ _ _..J ~>----=-;12IOAH I g-­ '? 2108 '? 2109 : 2 lOA : Puntero de pila I '? I • operación dor de programa tI 2000H Contador de programa '--------'------' byte inferior Figura 6.39. nido transferido Solución: El contenido de la posición de pila 2109H de la Figura 6.39 después de la operación de llamada será 00 100000. El byte de orden superior del contador de programa será almacenado primero en la pila, de acuerdo con la tabla de la Figura 6.35 y el diagrama de la Figura 6.37. t iguiente instruc­ 6.53. 6.54. l mientras que la b~1es 6.55. ¡¡ 2 últimos bytes ~ r después de la Acudir a la Figura 6.39. El contenido del contador óe programa después de la operación de llamada será _ _ (bex). Solución: El contenido del contador de programa después de la operación de llamada de la Figura 6.39 será 00 1OH. Esta es la dirección de la primera instrucción de la subrutina. !:ir) y de _ _ cir y saltar. Acudir a la Figura 6.39. El puntero de pila contendrá _ _ (bex) después de la opera­ ción de llamada. Solución: Después de la operación de llamada en la Figura 6.39, el puntero de pila señalará a la parte superior de la pila, que estará en la posición 2108H. contienen a subrutina). Acudir a la Figura 6.39. El contenido de la posición de la pila 2108H después de la operación de llamada será _ _ (8 bits). Solución: El contenido de la posición de la pila 2108H en la Figura 6.39 después de la operación de llamada será 00000o 11. El byte de orden inferior del PC será almacenado en la segunda pila. al. mientras que t CDH Memoria de programa 200 1H 1----+----1./ 2oo2H 0000 0000 ~ I Después de la operación Antes de la operación Código de operación 6.56. Las instrucciones de llamada y vuelta de la subrutina se utilizan casi siempre ___ (en parejas, individualmente). Solución: Las instrucciones de llamada y vuelta de subrutina casi siempre se utilizan en parejas. http://librosysolucionarios.net • 174 FUNDAMENTOS DE LOS MICROPROCESADORES 6.8. REPERTORIO DE INSTRUCCIONES: OPERACIONES MISCELANEAS Las instrucciones misceláneas son la última categoría de las operaciones genéricas del micropro­ cesador que se van a considerar. Estas están resumidas en la Figura 6.40. Incluyen las instruccio­ nes de introducir, sacar, no operación y alto. Las instrucciones de introducir y sacar (push, pop) se utilizaron en la Sección 5.6 cuando se explicaron el puntero de pila y la pila; estas instrucciones colocan y toman datos de la pila de la microcomputadora y se utilizan por parejas porque lo que se hace en la pila con una instrucción de introducir tiene que deshacerse con una instrucción de sacar. Las instrucciones de introducir y sacar son muy utilizadas en las subrutinas. Una instrucción de «introducir A y sefíalizadores en pila» puede utilizarse como la primera instrucción de una subrutina como, por ejemplo, la esbozada en la Figura 6.36. De esta forma se guarda el contenido del acumulador y de los sefíali­ zadores para que no puedan ser alterados por la subrutina; justo antes de la operación de vuelta en la Figura 6.36, una instrucción de «sacar A y los sefíalizadores de la pila» deberá restaurar el contenido original del acumulador y los sefíalizadores. Considerar la primera instrucción listada en la tabla de la Figura 6.40. Es la instrucción de «introducir A y sefíalizadores en la pila» y tiene el nemotécnico PUSH PSU: La parte PSW del nemotécnico significa palabra de status del programa, que en este caso es el contenido del acumu- lador 'Y del regi! 1 byte, que prirr ción más detallil La instrucci( de 1 byte que so registros. Esta in o dos sentencia.! secciones del prc: u tilizarse para ce: La instrucció procesar más «ln entrada de petici do esté en el mOl . .,¡ 1 6.57. Acudir a un códigl SoJ~ Deaca Instrucciones misceláneas ción F5H Modo de I Cód. direcciona- ¡Nemotécnico de mi ento opero Descripción de la operación Bytes Formato de la instrucción Simbólico PUSHPSW FS I ICódigo de op.1 «SP) ­ 1) ...... (A) «SP) ­ 2) ...... (señali. (SP) ...... (SP) - 2 Indirecto de registro PUSHH ES I ICódigo de op.1 «SP) 1) ...... (H) «SP) 2) ...... (L) (SP) ...... (SP) ­ 2 Indirecto Saca A y señalizado de registro res de la pila POPPSW Indirecto Introduce A y seña­ de registro lizadores a la pila Introduce HL a la pila FI 1 ICódigO de op.1 I i Indi recto , Saca H L de la pila • de registro ; (señali.) ...... «SP» (A) ...... «SP) + 1) (SP) ...... (SP) + 2 POPH El I ICódigo de oP.¡ (L) ...... «SP» (H) ...... «SP) +-1) (SP) ...... (SP) + 2 (PC) ...... (PC) + I No operación Inherente NOP 00 I ICódigo de op.1 Alto Inherente HLT 76 I ICódigo de op.1 Señalizadores afectados ( ) - contenido de « )) - direccionamiento indirecto de registro A acumulador SP - puntero de pila 6.58. Acudir. 1 la Figura contenido la _ _ 1 SoJuci611: Usar la instrucción el conteflld· 6.59. Acudir a 1 pila 220H Puntero de pila [ 220AH Figura 6.40. ~ Instrucciones misceláneas para el microprocesador genérico (subconjunto de las instrucciones Intel 8080/8085). http://librosysolucionarios.net ,1 J PROORAMACION DEL MICROPROCESAOOR l:Iel micropro­ las instruccio­ 5.6 cuando se le la pila de la Da instrucción le introducir y ~alizadores en lIIf ejemplo, la r de los señali. ción de vuelta rá restaurar el 175 lador y del registro de status (señalizadores). La instrucción PUSH PSWes una instrucción de l byte, que primero coloca el acumulador en la pila y despuéS los senalizadores. Para una explica­ ción más detallada de las instrucciones de introducir y sacar revisar la Sección 5.6. La instrucción «no operación» no hace nada, excepto consumir l ó 2 ).lS. Es una instrucción de l byte que so' mente hace que se incremente el contador de programa. No afecta a los demás registros. Esta instrucción se utiliza como relleno cuando durante la depuración se eliminan una o dos sentencias del programa. Las instrucciones de no operación sirven de puente entre dos secciones del programa para que la MPU pueda avanzar de un segmento a otro; también puede utilizarse para consumir tiempo en un ciclo. La instrucción de alto se utiliza al final del programa para que el microprocesador deje de procesar más «instrucciones» en la memoria de programa. Solamente una reinicialización o una entrada de petic;ión de interrupción a la MPU puede arrancar al microprocesador genérico cuan­ do esté en el modo de alto. PROBLEMAS RESUELTOS lnstrucción de Klrte PSW del ~o del acumu- 6.57. Acudir a la Figura 6.40. La operación PUSH PSW que se utiliza en la Figura 6.41 tiene un código de op de _ _ (hex). Solución: De acuerdo con la tabla de la Figura 6.40, la operación PUSH PSW tiene el código de opera­ ción F5H. Señalizadores afectados :onjunto - 6.58. Acudir a la Figura 6.40. Durante la ejecución de la instrucción PUSH PSW utilizada en la Figura 6.41, el puntero de pila es _ _ (decrementado, incrementado) primero y el contenido del ___ (acumulador, registro de status) es transferido a la posición de la pi· la _ _ (hex). Solución: Usar la tabla de la Figura 6.40 y el procedimiento de la Figura 5.16b. Durante la ejecución de la instrucción PUSH PSW utilizada en la Figura 6.41, el puntero de pila es decrementado primero y el contenido del acumulador es transferido a la posición de la pila 2209H. 6.59. Acudir a la Figura 6.40. Citar el contenido del puntero de pila y de las posiciones de la pila 2208H y 2209H después de la operación de introducir (push) de la Figura 6.41. Acumulador Antes de la operación Pila Pila Puntero de pila I 220AH I Puntero de pila ~ ,'220A', ,'220A' Figura 6.41. http://librosysolucionarios.net I ? --------_...,,­ 176 FUNDAMENTOS DE LOS MICROPROCEsADORES .: " Solución: Usar como referencia la tabla de la Figura 6.40 yel procedimiento de la Figura 5.l6b. Después de la operación de introducir (push), mostrada en la Figura 6.41, el puntero de pila señalará a la posición 2208H y su contenido será el del registro de status que es 10000000. El contenido de la posición de la pila 2209H será el del acumulador que es 11111111. ,1 6.60. carta o diagram se muestra en 1 consecutivos y ; adecuados para lenguaje máquir Acudir a la Figura 6.40. Si la instrucción PUSH PSW se utiliza para colocar el contenido de los registros de la CPU en la pila, entonces la instrucción _ _ (nemotécnico) se utilizará para restaurar el contenido de estos registros. Solución: Si la instrucción PUSH PSW se utiliza para colocar el contenido de los registros de la CPU en la pila, entonces la instrucción POP PSW se utilizará para restaurar el contenido de estos registros. 6.61. Las instrucciones de introducir y sacar (push y pop) son utilizadas frecuentemente, a pares, en ___ (las reinicializaciones, las subrutinas). Solución: Estas instrucciones son utilizadas frecuentemente, a pares, en las subrutinas. 6.62. La instrucción _ _ (alto, no operación) evitará que el microprocesador prosiga la bús­ queda y ejecución de otra instrucción hasta que reciba una señal de reinicialización o de petición de interrupción. Solución: La instrucción de alto evitará que el microprocesador prosiga la búsqueda y ejecución de otra instrucción hasta que reciba una señal externa de reinicialización o de petición de interrupción. La instrucción de alto se coloca normalmente al final de un programa. I I :¡ 1 " 'j i 6.9. ESCRITURA DE UN PROGRAMA El programador de un sistema basado en microprocesador debe estar muy familiarizado con el repertorio de instrucciones. Las tablas de las Figuras 6.4, 6.14, 6.21, 6.30, 6.35 Y6.40 detallan las operaciones que pueden ser realizadas por el microprocesador genérico. El programador también debe estar familiarizado con los registros disponibles cuando escribe un programa. Un modelo de programación del microprocesador genérico se muestra en la Figura 6.3. Resume los registros que utiliza el programador, el cual también debe conocer la arquitectura general de la microcomputa­ dora y comprender el mapa de memoria de la unidad. Los puntos para desarrollar un programa pueden resumirse como sigue: 1. 2. 3. 4. 5. 6. Definir y analizar el problema. Dibujar un diagrama de flujo de la solución del problema. Escribir el programa en lenguaje ensamblador. Escribir o generar la versión en lenguaje máquina del programa. Depurar el programa. Documentar el programa. ; Considerar la sencilla tarea de escribir un programa que sume el contenido de tres posiciones consecutivas de memoria y almacene la suma. Es común para los programadores construir una http://librosysolucionarios.net ,11 (a) DiagraIN PROGRAMACION DEL MICROPROCESAOOR wa 5.l6b. Después ~ pila señalará a la El contenido de la carta o diagrama deflujo del problema. Un diagrama de flujo funcional para el problema ejemplo se muestra en la Figura 6.42, donde se ve el procedimiento general para sumar tres números consecutivos y almacenar la suma en memoria. Este diagrama de flujo carece de los detalles adecuados para traducirlo directamente en un segmento de programa en lenguaje ensamblador o lenguaje máquina. br el contenido :nemotécnico) se ( ) Inicio t ~ Carga el registro HL con 20lOH ros de la CPU en la de estos registros. t "eCuentemente, a Carga A con el primer número de M ( oc prosiga la bús­ licialización o de Inicio • t ) Incrementa HL a 201 IH Suma el primer número t t + ejecución de otra le interrupción. La Suma el segundo número deMaA Suma el segundo número • t Suma el tercer número Incrementa HLa 2012H t liliarizado con el 6.40 detallan las amador también a. Un modelo de ·105 registros que I microcomputa­ le tres posiciones es construir una 177 + Almacena la suma t <- Alto Suma el tercer número deMaA t ) Incrementa HL a 2013H t Almacena la suma de M ( (a) Diagrama de flujo funcional para sumar tres números (b) t Alto J Diagrama de flujo detallado Figura 6.42. http://librosysolucionarios.net 178 FUNDAMENTOS DE LOS MICROPROCESADORES En la Figura 6.42b se ha desarrollado un diagrama de flujo detallado. En este diagrama cada bloque rectangular corresponde a una orden u operación del microprocesador. El diagrama deta­ llado es, por tanto, dependiente del sistema microprocesador específico que se está programando, mientras que el diagrama funcional puede utilizarse con cualquier MPU. A continuación, se desarrolla una versión, en lenguaje ensamblador, del diagrama de flujo detallado; el segmento de programa se muestra en la Figura 6.43a. Los cuatro campos típicos -etiqueta, nemotécnico, operando y comentario- se listan en la parte superior. Cuidadosamen­ te copiados debajo están los nemotécnicos exactos y los operandos del microprocesador. Recor­ dar que el campo de etiqueta no necesita entradas; los comentarios son una gran ayuda para comprender la función de cada instrucción del segmento de programa. Al comparar el diagrama de flujos detallado, de la Figura 6.42b. con el listado del programa en lenguaje ensamblador, de la Figura 6.43a, se observa que cada bloque del diagrama de flujo tiene una sentencia del lenguaje Dirección (hex) Con' (11 2020 2021 2022 2023 2024 Etiqueta Nemotécnico LXI Operando Comentarios 2025 H.201OH ; Carga el registro par HL con la dirección 20lOH (se utilizará como puntero de dirección) 2026 2027 MOV A.M ; Carga el acumulador con el primer número de la posición de memoria 20lOH INX H ; Incrementa el registro par HL a 2011H 2029 ADD M ; Suma el segundo número de la posición de memoria 2011 H al acumulador 202A INX H ; Incrementa el registro par HL a 2012H ADD M ; Suma el tercer número de la posición de memoria 2012H al acumulador INX H ; Incrementa el registro par HL a 2013H MOV M,A ~ 1:1 HLT (a) ; Almacena la suma del acumulador en la posición de memoria 20I3H ; Detiene la MPU Programa en lenguaje ensamblador para sumar tres números y almacenar la suma Figura 6.43. http://librosysolucionarios.net I 2028 eq,J ensamblador «Cargar el regism ensamblador «LX ra 6.43a._ U na vez escriti de bits comprensi hacerse a mano o codificación manl! I. Utilizando 6.40 para J 2. Determina trucción rr 3. Asignando randa. ~ .¡ 1 •1 :~ t pama cada ;rama deta­ ¡gramando, de flujo pos típicos adosamen­ Ior. Recor­ 1~'Uda para 1 diagrama ador, de la el lenguaje 113 ~ '. 'PROGRAMACJON DEL MICROPROCESADOR Dirección (hex) Contenido (hex) Etiqueta Nemotécnico Operando ; Carga el registro par HL con la dirección 20!OH (se utilizará como puntero de dirección) MOV A,M ; Carga el acumulador con el primer número de la posición de memoria 20lOH 23 INX H ; Incrementa el registro par HL a 2011 H 86 ADD M ; Suma el segundo número de la posición de memoria 2011 H al acumulador 21 2021 10 2022 20 2023 7E 2024 2025 LXI utilizará t 2026 23 INX H ; Incrementa el registro par H L a 2012H 2027 86 ADD M ; Suma el tercer número de la posición de memoria 2012H al acumulador 2028 23 INX H ; Incrementa el registro par HL a 2013H 2029 77 MOV M,A ; Almacena la suma del acumulador en la posición de memoria 2013H 202A 76 HLT llición , 1201lH )12H al ~ 1 ~ J Comentarios H,201OH 2020 é t 179 (b) ; Detiene la MPl Programas combinados en lenguaje ensamblador y máquina Figura 6.43. (continuación). ensamblador equivalente. Tomar como ejemplo la primera caja rectangular de la Figura 6.42b. «Cargar el registro HL con 201OH» en este bloque es equivalente a la sentencia en lenguaje ensamblador «LXI H,20 10H; Cargar el registro par HL con la dirección 20 10H» de la Figu­ ra 6.43a. Una vez escrita la versión en lenguaje ensamblador, el programa debe ser traducido a patrones de bits comprensibles por el microprocesador, es decir, a código máquina. Este proceso puede hacerse a mano o por programas de computadora especiales denominados ensambladores. La codificación manual se hace: t 2. 3. ";. Utilizando las tablas del repertorio de instrucciones (Figuras 6.4, 6.14, 6.21, 6.30, 6.35 Y 6.40 para la MPU genérica) para buscar los códigos de op de cada nemotécnico. Determinando los oper-c"ldos (datos o direcciones) cuando sean requeridos por una ins­ trucción multibyte. Asignando direcciones secuenciales de la memoria de programa a cada instrucción y ope­ rando. http://librosysolucionarios.net 1 '1 "1 , ] ¡r!tlt' . ) "111 1,,: ii i¡¡: li :1 1I I 180 FUNDAMENTOS DE LOS MICROPROCESADORES Considerar nuestro problema ejemplo que "sumaba los contenidos de tres posiciones consecu­ tivas de memoria y almacenaba la suma en la cuarta posición. La versión en lenguaje ensambla­ dor está reproducida a la derecha en la Figura 6.43b. Las dos columnas de la izquierda muestran las direcciones de memoria de programa asignadas y el código de op u operando hexadecimal. Los contenidos representan las palabras de 8 bits que deben ser almacenadas en la memoria del programa. Considerar la primera sentencia del lenguaje ensamblador en la Figura 6.43b. El nemotécnico y operando se leen «LXI H,20 IOH», que deben ser asignados a un código de op y, en este caso, a dos operandos. La tabla de la Figura 6.21 contiene la información necesaria sobre este tipo de operación (instrucción de transferencia de datos); el nemotécnico «LXI H» se encuentra hacia la mitad de la tabla de la Figura 6.21, Y su código de op, que es 21 H, está escrito en la columna «Contenidos» de la Figura 6.43b. En la tabla de la Figura 6.21 se observa que esta instrucción requiere 2 bytes de datos extra; el byte del dato de orden inferior (1 OH en este ejemplo) se coloca, primero, en la dirección 2021 H Yel del dato de orden superior (20H en este ejemplo) se coloca, a continuación, en la dirección 2022H. El resto de los nemotécnicos del lenguaje ensamblador de la Figura 6.43b representan instrucciones de un solo byte, cuyos códigos de op hexadecimales son buscados en las tablas adecuadas del repertorio de instrucciones y registrados en la columna de «Contenidos», como muestra la Figura 6.43b. El programa de las columnas izquierdas está en código máquina y puede ser introducido en el sistema microprocesador. El programa se examina a continuación para ver si funciona adecuadamente, a este proceso se le denomina depuración (sacar los errores o «chinches»). El procedimiento, de sentido común, utilizado incluye la comparación del diagrama de flujo con el programa, doble comprobación de los códigos de op e ir paso a paso a través del programa revisándolo con un problema simulado. A continuación, es común introducir el programa y datos conocidos en un sistema microprocesa­ dor y comprobar las respuestas. Habitualmente se realizan varias pruebas de los problemas. El último paso en la programación es la documentación. La documentación es una descrip­ ción del programa diciendo lo que debe realizar y cómo utilizarlo, incluyendo detalles como diagramas de flujo, listados del programa, direcciones de datos y programas utilizados y comenta­ rios. La documentación se complica mucho en los grandes programas, los cuales necesitan niveles de documentación tales como documentos de diseño, manuales de operador y documentos des­ criptivos. Considerar el problema ejemplo del segmento de programa de la Figura 6.44. Aquí se ha introducido el código máquina en la memoria del programa (direcciones 2020-202AH). Los números que se van a sumar (OF, 09, 06H) en el problema ejemplo se han introducido en las posiciones 2010 a 2012H de la memoria de datos. Observar si se puede seguir paso a paso la operación de este programa para sumar OF + 09 + 06, y obtener una suma de 1EH. Este progra­ ma puede ejecutarse realmente en la mayoría de los microprocesadores de entrenamiento basados en el 8080;8085. Aunque los programas reales de microcomputadora son bastante largos, están formados por un grupo de segmentos de programa similares al del ejemplo. Normalmente, cada segmento se escribe y comprueba antes de que el programa total se unifique para la prueba final (test). El segmento del programa ejemplo desarrollado es sólo una forma posible de resolver el problema propuesto. El programa desarrollado se denomina programa lineal ya que no tiene saltos o bifur­ caciones. 1 Di i. l. ! http://librosysolucionarios.net \. 'I·~ ;.:.. ',1 I PROGRAMAClON DEL MICROPROCESAOOR :iones consecu­ . c: ensambla­ tenia muestran o hexadecimal. la memoria del Memoria de datos :J nemotécnico , en este caso, a !re este tipo de uentra hacia la en la columna sta instrucción lplo) se coloca. .0) se coloca, a IDlblador de la ldecimales son la columna de llierdas está en este proceso se entido común, IIlprobación de rma simulado. mícroprocesa­ W"oblemas. ~ una descrip. detalles como los y comenta­ :cesitan niveles cumentos des­ lit. Aquí se ha 181 Dirección Contenido (hex) (hex) 20\0 OF 2011 09 _Suma Memoria de programa ----..­ I 2020 21 2021 \O 2 20 2023 7E Instrucción 2; carga A con el primer número 2024 23 Instrucción 3; incrementa HL 2025 86 Instrucción 4; suma el segundo número 2026 23 Instrucción 5; incrementa HL 2027 86 Instrucción 6; suma el tercer número 2028 23 Instrucci6n 7; incrementa" HL 2029 77 Instrucción 8; almacena la suma 202A 76 Instrucción 9; alto Instrucción 1; carga HL ~202AH). Los Jducido en las paso a paso la l. Este progra­ !liento basados . i)' formados pOi :3 c;egmento se .JI (test). El :r- el problema saltos o bifur- - Figura 6.44. Contenidos de memoria e instrucciones para sumar tres números y almacenar la suma. http://librosysolucionarios.net fa ab a:dlllllLllSt! MI" I !". "." 182 FUNDAMENTOS DE LOS MICROPROCESADORES SolucÍÓII: PROBLEMAS RESUELTOS 6.63. l·. .. 6.70. Sumar de la Figu Un resumen de los registros de la MPU disponibles al programador se da en un diagrama denominado modelo de programación. 6.64. 6.71. Citar seis pasossecuenciales en el desarrollo de un programa de un sistema basado en microprocesador, como se ha sugerido en esta sección. Sumar ción6 de I Los seis pasos secuenciales en el desarrollo de un programa citados en esta sección son: definir y analizar el problema, dibujar el diagrama de flujo de la solución del problema, escribir la versión del programa en lenguaje ensamblador, escribir o generar la versión del programa en lenguaje máquina, depurar el programa y documentarlo. 6.72. ¡ La representación gráfica de una solución de problema se denomina ___ . La representación gráfica de una solución del prOblema se denomina diagrama o carta de flujo. Dos ejemplos se muestran en la Figura 6.42. 6.73. SUD La SUIl después do( 6.74. direcciones secuenciales de la memoria del programa. Al escribir la versión en lenguaje máquina de un programa, los _ _ (ASCn, códigos de op) y operandos son listados en _ _ (decimal, hexadecimal) para cada posición del programa. EncontraJ te _ _ Soluc:WII: Encont ración. Al escribir la versión en lenguaje máquina de un programa, las instrucciones son asigna­ das en ___ (direcciones, interrupciones) secuenciales de la memoria de programa. Solución: . Al escribir la versión en lenguaje máquina de un programa, las instrucciones son asignadas en ¿Cuál es t ción de b SoluciÓD: El programa en lenguaje ensamblador, normalmente se escribe después de dibujar un diagrama de flujo detallado. 6.68. Solucióll: La Después de dibujar un diagrama de flujo detallado (como, por ejemplo, el de la Figu­ ra 6.42b), el siguiente paso de programación es escribir el programa en lengua­ je _ _ (ensamblador, máquina). Solución: 6.67. ¿Cuál es I ción de II tanto su ,:, Solución: 6.66. ¿Cuál es < gura6A4 Soluciéll: Solución: 6.65. ¿Cuál es I gura 6.44 Solucióll: Solución: rt ... El programador de un sistema microprocesador debe estar familiarizado con la arquitec­ tura del sistema, el repertorio de instrucciones de la MPU, el mapa de memoria del sistema y los registros de la CPU. Un resumen de los registros de la MPU disponibles al programador se da en un diagrama denominado ___ (modelo, conjunto) de progra­ mación. Acud:¡ la instruC( 6.75. El paso 6. Soluc:WII: El pase varios ni\e ción descn Solución: Al escribir una versión de un programa en lenguaje máquina, los códigos de op y operandos son listados en forma hexadecimal para cada posición del programa. 6.69. '¿Cuál es el contenido del registro par HL después de la ejecución de la instrucción 1 de la Figura 6.44? http://librosysolucionarios.net 6.10. MODOS Considerar la ÍIII suponía que uno ¿dónde estaba el ~ J.•. 1 \ PROORAMAClON DEL MICROPROCESADOR 1 !quitec­ .: del llbles al progra­ 183 Solución: Acudir a la Figura 6.43. El contenido del registro par HL es 2010H despuéS de la ejecución de la instrucción 1 de la Figura 6.44. 6.70. ¿Cuál es el contenido del acumulador después de la ejecución de la instrucción 4 de la Fi­ gura 6.44? Solución: Sumar OF + 09 = 18H. El contenido del acumulador despuéS de la ejecución de la instrucción 4 de la Figura 6.44 es 18H. 6.71. arlo en ¿Cuál es el contenido del acumulador después de la ejecución de la instrucción 6 de la Fí­ gura6A4? Solución: Sumar OF + 09 + 06 = 1EH. El contenido del acumulador después de la ejecución de la instruc­ ción 6 de la Figura 6.44 es 1EH. l Irfiniry ~ÓD rnguaje le flUJO. I 6.72. ¿Cuál es el contenido de la posición 20t3H de la memoria de datos después de la ejecu­ ción de la instrucción 7 en la Figura 6.44? V Solución: La suma no se ha almacenado todavía en la posición 2013H de la memoria de datos, y por tanto su contenido es, de alguna forma, un patrón aleatorios de bits. 6.73. ¿Cuál es el contenido de la posición 20t 3H de la memoria de datos después de la ejecu­ ción de la instrucción 8 de la Figura 6.44? Solución: La suma de OF + 09 + 06 - lEH es almacenada en la posición 20l3H de la memoria de datos después de la ejecución de la instrucción 8 de la Figura 6.44. Figu­ engua- IIgrama 6.74. Encontrar y corregir los errores en un programa es un proceso denominado comúnmen­ te _ _ (depuración, detección de fallos). Solución: Encontrar y corregir errores en un programa es un proceso denominado, comúnmente, depu­ ración. 6.75. .. ~. ~~ ;¡¡. jel .I El paso final en la escritura de un programa se denomina _--"-_ Solución: El paso final en la escritura de un programa se denomina documentación. Esta debe incluir varios niveles como, por ejemplo, documentación de diseño. un manual de operador y documenta­ ción descriptiva. 6.10. MODOS DE DIRECCIONAMIENTO de la Considerar la instrucción de sumar del microprocesador. En el microprocesador genérico se suponía que uno de los números que se iban a sumar estaba en el acumulador. Sin embargo, ¿dónde estaba el segundo número y cómo se recuperaba? Los distintos métodos de recuperación http://librosysolucionarios.net 41112211&:'4, ¿¡ ¡ ¡ ;¡¡U¡JlliSi!S:;::¡ ::: " 1 Il 184 FUNDAMENTOS DE LOS MICROPROCESADORES se denominan modos de direccionamiento del microprocesador. Cada microprocesador tiene sus propios métodos de recuperación, o modos de direccionamiento. Estos deben ser bien compren­ didos por el programador. Los modos de direccionamiento se han mencionado muchas veces en las secciones anteriores, pero debido a que muchos estudiantes tienen dificultad con los modos de direccionamiento, en esta sección se revisarán los utilizados por el microprocesador genérico. Los modos de direccionamiento listados en el repertorio de instrucciones del microprocesador genérico son: 1. 2. 3. 4. 5. Inherente. De registro. Inmediato. Directo. Indirecto de registro. Los dos primeros modos de direccionamiento de la lista (inherente y de registro) se refieren a operandos que están localizados en la misma CPU. Los últimos tres modos de direccionamiento (inmediato, directo e indirecto de registro) se refieren a operandos que están localizados fuera de la CPU, en posiciones de memoria o puertos de E/S. Estos son los mismos modos de direcciona­ miento utilizados por el microprocesador Intel 8080/8085. Considerar un ejemplo de la instrucción inherente: «poner a 1 el señalizador de arrastre» del grupo de transferencia de datos de la Figura 6.21. Las instrucciones inherentes son siempre de 1 byte porque no se requiere ningún dato para completar la operación y todas las acciones ocurren en la CPU. La acción de la instrucción «poner a 1 el señalizador de arrastre» del microprocesador genérico está esbozada en la Figura 6.45a. No es necesario recuperar ningún dato ni dirección de otros registros de la CPU, posiciones de memoria o puertos de E/S. La instrucción STC pone a 1 el señalizador de arrastre (eY) sin afectar a los demás registros o señalizadores. En las instrucciones de registro. el operando es recuperado de un registro interno de la CPU. Considerar el ejemplo de la instrucción de registro, «restar L de A» del grupo aritmético de la Registro de status 1O I 11 I I 1I Cy ~ Antes de la operación o~/ ~® ~ I z 11 Después de la operación Acumulador Después de la operación Antes de la operación SUBL Registro L (b) La instrucción restar L de A (direccionamiento de registro) Figura 6.45. J Registro de status La instrucción de poner a I el señalizador de registro (direccionamiento inherente) Acumulador Memoriade~ Figura 8.* STC (a) Figura 6.4. Las I dones de 1 byte, ocurren en la c: minuendo (000 (00000011 en e interna, la difen En las instru. tes) de la memO#' instrucción. COI] de transferencia es una instrucci instrucciones de ran de la memor (O 1110000 en es este ejemplo). La de la CPU o el Il En las instrut:l directamente a la memoria del PI"Ot en el caso del din trar a A desde el ~ la tabla de la FÍgl. las operaciones d ra 6.47 muestra € acumulador del 1 del segundo byte ejemplo. En las instrua. operando en la 11 «cargar LOC (H ~ la Figura 6.21. A I http://librosysolucionarios.net i ",lli lu ", 1 '!IIi i! 1: ,1 ,¡Ji ! l8dor tiene sus ::1 compren­ LtChas veces en 1 los modos de l>r genérico. croprocesador ) se refieren a :ccionamiento mdos fuera de de direcciona­ PROGRAMACION DEL MICROPROCESADOR Figura 6.4. Las operaciones de registro (como las instrucciones inherentes) son siempre instruc­ ciones de 1 byte, ya que no se necesitan datos ni direcciones fuera de la CPU y todas las acciones ocurren en la CPU. La acción de la instrucción ccrestar L de A» se detalla en la Figura 6.45b. El minuendo (00001111 en este ejemplo) está en el acumulador, mientras que el sustraendo (00000011 en este ejemplo) está contenido en el registro L; después de la operación de resta interna, la diferencia (00001100 en este ejemplo) es transferida al acumulador. En las instrucciones inmediatas. el operando viene del siguiente byte (o a veces los 2 siguien­ tes) de la memoria del programa. El operando está inmediatamente después del código de op de la instrucción. Considerar el ejemplo de la instrucción inmediata, «cargar SP con datos» del grupo de transferencia de datos de la Figura 6.21. A partir de la tabla de la Figura 6.21 se determina que es una instrucción de 3 bytes. Generalmente, las operaciones inmediatas se especifican como instrucciones de 2 ó 3 bytes. El ejemplo de la Figura 6.46 muestra 2 bytes de datos que se recupe­ ran de la memoria del programa y se cargan en el puntero de pila (SP). El byte de orden inferior (01110000 en este ejemplo) se carga primero, y después el byte de orden superior (00000010 en este ejemplo). Las instrucciones de modo inmediato son convenientes para inicializar los registros de la CPU o el puntero de pila. Direc- Código de ción operación ~ arrastre» del I siempre de l lones ocurren croprocesador ti dirección de STC pone al 185 2000 31H Memoria de programa Antes de la operación DespUés de la operacÍÓD Il1o de la CPU. Puntero de pila itmético de la I Figura 6.46. La instrucción de cargar el puntero de pila (direccionamiento inmediato). En las instrucciones directas. el segundo y tercer bytes de la memoria del programa apuntan directamente a la dirección del operando en la memoria de datos. El segundo y tercer bytes de la memoria del programa son direcciones en una instrucción directa, mientras que eran operandos en el caso del direccionamiento inmediato. Considerar el ejemplo de la instrucción directa, c<en­ trar a A desde el puerto LOC a» del grupo de transferencia de datos de la Figura 6.21. A partir de la tabla de la Figura 6.21 se determina que se trata de una instrucción de 2 bytes. Generalmente, las operaciones directas se especifican como instrucciones de 2 ó 3 bytes. El ejemplo de la Figu­ ra 6.47 muestra el contenido del puerto de entrada (11000011 en este ejemplo) transferido al acumulador del microprocesador. El puerto exacto de entrada está señalado por la dirección del segundo byte de la instrucción del programa (esta dirección es 00001010, Ó 10 10 en este ejemplo. En las instrucciones indirectas de registro, el registro par especial HL apunta a la dirección del operando en la memoria de datos. Considerar el ejemplo de la instrucción indirecta de registro c<cargar LOC (H & L) en A» (nemotécnico de MOV A,M) del grupo de transferencia de datos de la Figura 6.21. A partir de la tabla de la Figura 6.21 se determina que es una instrucción de 1 byte. http://librosysolucionarios.net ¡ti .II~ f-----18-6--FU-N-DA-:M-E-NT~ D~l~~'CRO-P-ROC-~Aoom I Acumulador Antes de la~peración Entrada 6.77. Después de la operación SoIIlCl CI IN Puerto de entrada (LOC) 1100 00 11 Clla! ningl 6.78. Cuan ción~ medí; Memoria de programa Solud Cu operar Figura 6.47. La instrucción de entrar (direccionamiento directo). Las operaciones indirectas de registro se especifican siempre por instrucciones de ] byte. El ejem­ plo de la Figura 6.48 muestra el contenido de la posición 2080H (11110000 en este ejemplo) de memoria cargándose en el acumulador. La dirección (2080H en este ejemplo) de la posición correcta de la memoria de datos está señalada por el contenido del registro par HL. Este registro se denomina registro de datos/direcciones del microprocesador genérico. En este caso el registro HL se está utilizando como un registro de direcciones. 6.79. Cuan< ria de SoIuci4í CWI depl"Of! 6.80. Cuand HLde Soluciól Acumulador Cual Antes de la operación Memoria de datos (2080) R,,;"., p'" direcció Después de la operación 1111 0000 6.81. H~~ I SoludÓ!! Cuaa de regiSII Una dirección Figura 6.48. La instrucción cargar A desde memoria (direccionamiento indirecto de registro). Otros microprocesadores tienen variaciones en el modo de direccionamiento directo, denomi­ nándose por nombres tales como página cero o direccionamiento de página base, direcciona­ miento absoluto, direccionamiento de página actual y direccionamiento extendido. Otros modos no utilizados por nuestro microprocesador genérico incluyen el muy popular direccionamiento indexado y también el direccionamiento relativo. Cuandc de rest;; de dira 6.82. Las 01) de __ SolucÍÓlt Las .:: 6.83. Las opc por inst Solución Las o PROBLEMAS RESUELTOS 6.76. Citar los cinco modos de direccionamiento utilizados por el microprocesador genérico. Solución: Los cinco modos de direccionamiento utilizados por el microprocesador genérico son inheren­ te, de registro. inmediato. directo e indirecto de registro. Estos modos de direccionamiento tam­ bién se utilizan en el microprocesador 8080/8085. truccion~ 6.84. Las ope especifi( Solución Lasü das por 1 http://librosysolucionarios.net ,:ll'll "11 ,¡r Ili /il ¡. '1/1 di 1i' 1 1" l' ' /1 :!, PROORAMACION DEL MICROPROCESADOR 6.77. 187 Cuando se utiliza una instrucción ___ (directa, inherente), no es necesario recuperar ningún operando. Solución: Cuando se utiliza una instrucción inherente, no se necesita recuperar ningún operando. 6.78. Cuando se utilizan el segundo y tercer bytes de la instrucción para apuntar a la direc­ ción del operando, se está utilizando el modo de direccionamiento ___ (directo, in­ mediato). Solución: Cuando se utilizan el segundo y tercer bytes de la instrucción para apuntar a la dirección del operando, se está utilizando el modo de direccionamiento directo. 6.79. rte. El ejem­ ejemplo) de la posición Este registro íO el registro l Cuando se usa una instrucción «suma inmediato», el operando se recupera de la memo­ ria de _ _ (datos, programa). Solución: Cuando se utiliza una instrucción «suma inmediato», el operando se recupera de la memoria de programa. 6.80. Cuando se utiliza una instrucción de _ _ (registro, registro indirecto), el registro par HL de la CPU apunta a la dirección del operando. Solución: Cuando se utiliza una instrucción de registro indirecto, el registro par HL de la CPU apunta a la dirección del operando. 6.81. Cuando ambos operandos (como, por ejemplo, minuendo y sustraendo en un problema . de resta) están localizados en los registros internos de la CPU, puede utilizarse el modo de direccionamiento ___ (inmediato, registro) para recuperar los operandos. Solución: Cuando ambos operandos están localizados en registros internos, el modo de direccionamiento de registro puede ser utilizado para recuperar los operandos. registro). 6.82. tw. denomi­ , direcciona­ )tros modos -:amiento Solución: Las operaciones de registro e inherentes están especificadas por instrucciones de 1 byte. 6.83. r genérico. ,son ¡nheren­ lOlíento tam­ t Las operaciones que utilizan el modo de direccionamiento directo están especificadas por instrucciones de _ _ (número) bytes. Solución: Las operaciones que utilizan el modo de direccionamiento directo están especificadas por ins­ trucciones de 2 Ó 3 bytes. 6.84. :JI' Las operaciones de registro e inherentes están especificadas por una instrucción de _ _ (número) bytes. Las operaciones que utilizan el modo de direccionamiento indirecto de registro están especificadas por instrucciones de ___ (númer0) bytes. Solución: Las operaciones que utilizan el modo de direccionamiento de registro indirecto están especifica­ das por instrucciones de 1 byte. http://librosysolucionarios.net I I ~! 188 FUNDAMENTOS DE LOS MICROPROCESADORES 6.11. BIFURCAOON EN PROGRAMAS Etiqueta Sen Considerar la sencilla tarea de decidir cuál es el mayor de dos números y almacenar el mayor en una posición específica de memoria. Un diagrama de flujo para resolver este problema se muestra en la Figura 6.49a. Comenzando por la parte superior del diagrama de flujo, los dos primeros rectángulos representan la operación de cargar los dos números en los registros A (acumulador) y L (datos). El siguiente rectángulo representa la operación de comparación, donde el contenido del registro L se resta del contenido del registro A. Las operaciones de comparación no afectan el contenido de los registros pero sí a los señalizadores. La siguiente caja, en forma de diamante, del diagrama de flujo se llama símbolo de decisión, que representa un punto de decisión en el programa. Siempre se realiza una pregunta en este símbolo de decisión. En este ejemplo, el símbolo presenta la pregunta: ¿Es (A) ~ (L)? Si la respuesta es afirmativa, el programa continúa y el contenido del registro A es almacenado en la memoria y después el procesador se detiene por el símbolo de «stop». Sin embargo, si la respuesta a la pregunta del símbolo de decisión, es negativa, 1 ~ e J ~ I STOREL I 5 primer número en el registro A (acumulador) I Carga el segundo número en el registro L Etiqueta SeTI' Ji Compara AyL ~ (A) - (L) ( J No S (L) > (A) 1­ Almacena (A) en memoria Almacena (L) en memoria STOREL! 11 S I (a) Diagrama de flujo detallado para comparar y almacenar el número mayor , Figura 6.49. 1 http://librosysolucionarios.net :1[: "1 '·, 11:1 ,1; :11 "l·' 1./:1 :,1l' '[!I ,Ii . " PROGRAMACION DEL MICROPROCESAOOR Etiqueta :enar el mayor en blema se muestra los dos primeros .4 (acumulador) y e el contenido del ión no afectan el de diamante, del le decisión en el este ejemplo, el pma continúa y r se detiene por el lSión. es negativa. Nemotécnico MVl A,OFH ; Carga acuml'lador con el primer número (15 10) MVI L,06H ; Carga el registro L con el segundo número (6 10 ) CMP L JC ; Compara (A) y (L) Señalizador CY = 1 si A < L STORE L 2040H STA ; Salta a la posición de STORE L si CY = 1 (si A < L); de otra forma continúa con la siguiente instrucción ; Almacena (A) en la posición de memoria 2040H HLT STOREL ; Detiene la MPU después de almacenar (A) ",••,"~", ~"¡;," ; Transfiere el contenido del registro L al acumulador MOV A,L STA 2040H ,i r HLT ~ (b) l Comentarios "­ , ~ Operando ".~ . Etiqueta ; Almacena (A) en la posición de memoria 2040H ; Detiene la MPU después de almacenar el contenido de registroL Programa en lenguaje ensamblador utilizando la bifurcación «almacenar A» Nemotécnico Operando Comentarios MVI A,OAH ; Carga el acumulador con el primer número (10 10 ) MVI L,OEH ; Carga el acumulador con el segundo número (14 10) CMP L ~ ':~" , ~l JC ; Compara (A) y (L) Señalízador CY = 1 si A <' L STOREL STA 2040H HLT STOREL HLT (e) ; Salta a la posición de STORE L si CY.= l (si A < L); de otra forma continúa ; Almacena (A) en la posición de memoria 2040H ; Detiene la MPU después de almacenar (A) MOV STA 189 A,L ; Transfiere el contenido del registro L al acumulador 2040H ; Almacena (A) en la posición de memoria 2040H ; Detiene la MPU después de almacenar el contenido de registro L Programa en lenguaje ensamblador utilizando la bifurcación «almacenar L» Figura 6.49. (continuación). http://librosysolucionarios.net "'~¿i" I, r 190 FUNDAMENTOS DE LOS MICROPROCESADORES el programa bifurca a la derecha y.. el contenido del registro L es almacenado en memoria, y después se para el procesador. El uso de símbolos de decisión en un diagrama de flujo nos conduce a lo que se denomina bifurcación en un programa o programa con ruptura de secuencia. La versión en lenguaje ensamblador del programa que compara dos números y coloca el valor del mayor en la posición de memoria 2040H está detallado en la Figura 6.49b. Observar que en el programa ejemplo de la Figura 6.49b, el acumulador (A) se carga con 15 10 mientras que el regis­ tro L se carga con 6 10" Después de comparar (la tercera instrucción en este ejemplo), se encuentra que (A) > (L) y, por tanto, el señalizador de arrastre (eY) se pone a O. La instrucción de saltar (nemotécnico de JC en este ejemplo) examina el señalizador de arrastre y encuentra que ey = O, lo que hace que la MPU continúe con la siguiente instrucción de la secuencia, que es «almacenar (A) en la dirección de memoria 2040H». El número mayor (OFH) se almacena en la posición de memoria 2040H mediante la operación «STA». A continuación la MPU la detiene por la instruc­ ción de alto (HLT). Las tres últimas instrucciones, sombreadas, del programa en lenguaje ensam­ blador de la Figura 6.49b no se utilizan en este ejemplo. En el diagrama de flujo que se muestra en la Figura 6.49a, el programa continúa linealmente y no bifurca a la derecha. Considerar el mismo programa en lenguaje ensamblador pero con el contenido del acumula­ dor menor que el contenido del registro L. Un listado de dicho programa se muestra en la Figura 6.49c. En este ejemplo el acumulador se carga con OAH (10 10 ), mientras que el registro L se carga con el valor mayor de OEH 14 10 ), La instrucción de comparar pone a l el señalizador ey porque (A) < (L); la operación «salta si señalizador de arrastre es 1» (nemotécnico JC en este ejemplo), examina el señalizador ey y comprueba que está a l. La instrucción de salto hace entonces que el contador de programa cambie a la dirección de la posición de la siguiente instruc­ ción (STORE L en este ejemplo). Observar que la MPU ha saltado dos instrucciones para llegar a la dirección simbólica STORE L que aparece listada en la columna «etiquetas». La MPU enton­ ces ejecuta las tres últimas instrucciones, las cuales almacenan el contenido del registro L (el número mayor, OEH en este ejemplo) en la posición de memoria 2040H. En el diagrama de flujo de la Figura 6.49a, el programa progresat::. al símbolo de decisión y después bifurcaba a la dere­ cha y seguía hasta alcanzar el símbolo «alto» inferior derecho. Observar de nuevo las tres últimas instrucciones de la Figura 6.49c. El objeto de estas instruc­ ciones es almacenar el contenido del registro L en la posición de memoria 2040H. Según la tabla del repertorio de instrucciones de la Figura 6.21 el microprocesador genérico no tiene ninguna instrucción para almacenar directamente en memoria el registro L. Por tanto, ha sido necesario transferir primero el contenido del registro L a A y después almacenar A en memoria. A veces se encuentra que los microprocesadores con repertorios limitados de instrucciones (como la MPU genérica) son más dificiles de programar que las unidades con repertorios de mayor alcance. En resumen, las técnicas de bifurcación observadas en el diagrama de flújo se ejecutan por instrucciones de salto (a veces denominadas de bifurcación). Las instrucciones de bifurcación condicional toman una decisión según la condición de un señalizador particular del registro de status. La técnica de bifurcación es muy utilizada en la mayoría de los programas. PROBLEMAS RESUELTOS 6.85. 6.86. Lainstn valor del Solocióa: Las in una resta 6.87. La instn Z) en es SoIIlCililE La im ma. El se ninguna I 6.88. Acudir a señaliza¡: bifurcaC" Solucióll: Si IAl comparal 6.89. Acudir, instruro ala~ SoIDdíll: Si .-4. posición instruro. porque A 6.90. Acudir; STORE Sol~ Elap esto se d blador 6.91. Las iIlSl en los r So. . . . Las I comput; La caja en forma de diamante de la Figura 6.49a se denomina _ _ _ _ (símbolo de decisión, diamante de bifurcación). 1 Solución: La caja en forma de diamante de la Figura 6.49a se denomina símbolo de decisión. http://librosysolucionarios.net .' j ., - --~ PROORAMACION DEL MICROPROCESADOR memoria, y la de flujo nos ra de secuencia. , coloca el valor servar que en el ras que el regis­ o). se encuentra Ilcción de saltar Ira que CY = 0, 1: es «almacenar 11 la posición de e por la instruc­ enguaje ensam­ que se muestra 6.86. le estas instruc­ _Según la tabla • tiene ninguna l sido necesario oria. A veces se (como la MPU ror alcance. re ejecutan por de bifurcación . -:lel registro de ~ La instrucción «comparar A con 1:;, de la Figura 6.49b _ _ (cambia, no cambia) el valor del acumulador. Solución: Las instrucciones de comparación no cambian el valor del acumulador aún cuando se realice una resta interna (A - L en este ejemplo). 6.87. La instrucción «comparar A con L» de la Figura 6.49b afecta al señalizador ___ (CY, Z) en este programa. Solución: La instrucción «comparar A con L» de la Figura 6.49b afecta al señalizador CYen este progra­ ma. El señalizador de cero (Z) también es afectado pero no es comprobado posteriormente por ninguna instrucción de bifurcación en este programa. 6.88. lo del acumula- muestra en la ¡ue el registro L señalizador CY oico JC en este o de salto hace guiente instruc­ les para llegar a ...a MPU en ton1:1 registro L (el agrama de flujo rcaba a la dere­ 191 Acudir a la Figura 6.49. Si el contenido del acumulador (A) y del registro L son iguales, el señalizador de arrastre es puesto a ___ (0, 1) por la instrucción de comparación y la bifurcación ___ (<<No», «Sí») se toma en el símbolo de decisión de la Figura 6.49a. Solución: Si (A) .. (L) en la Figura 6.49a, el sefializador de arrastre es puesto a O por la instrucción de comparación y se toma la bifurcación «Sí» en el símbolo de decisión. 6.89. Acudir a la Figura 6.49. Si el registro A contiene IAH y el registro L contiene ASH, la instrucción de salto hará que la CPU ___ (continúe con la siguiente instrucción, salte a la posición STORE L). Solución: Si A .. l AH y L - ASH en la Figura 6.49, la instrucción de salto hará que la CPU salte a la posición STORE L. El salto es provocado, porque el señalizador de arrastre es puesto a 1 por la instrucción de comparación. La instrucción de comparación pone a I el señalizador de arrastre porque A < L. 6.90. Acudir a la Figura 6.49b y c. El operando siguiente a la instrucción dC» se lista como STORE L; esto se denomina una dirección ___ (absoluta, simbólica). Solución: El operando de la Figura 6.49b y e que sigue a la instrucción «JO) está listado como STORE L; esto se denomina una dirección simbólica cuando se utiliza en un programa en lenguaje ensam­ blador. 6.91. Las instrucciones de bifurcación o de salto se utilizan ___ (con frecuencia, rara vez) en los programas reales de computadora. Solución: Las instrucciones de bifurcación o saltos se utilizan con frecuencia en los programas reales de computadoras. I (símbolo de cisión. http://librosysolucionarios.net :~'ltI!2I ta ¡JiU ,. . . ._ _ __ 192 FUNDAMENTOS DE LOS MICROPROCESADORES 6.12. PROGRAMAS CICLICOS Otro ejempl¡ coloca la secuen Acudir al diagra son para iniciali representa el pro almacenará repe el registro par ¡ posición de men Los rectángul Los microprocesadores son especialmente útiles para realizar tareas repetitivas. Por ejemplo, el diagrama de flujo de la Figura 6.50 representa un programa que cuenta de O a 254 (O-FEH) Ysaca la cuenta a un dispositivo periférico adecuado. Este programa tiene las características de la mayor parte de los programas cíclicos (con bucles o lazos). Comenzando en la parte superior, es costum­ bre inicializar los registros. En este ejemplo el acumulador (A) se pone a OOH, a continuación el contenido del acumulador se saca al dispositivo periférico adecuado. lo que denomina el proceso repetido, después se incrementa el contenido del acumulador o la cuenta se modifica. Los símbo­ los de comparación y decisión realizan el procedimiento de prueba para determinar si la cuenta del acumulador ha alcanzado ya FFH. Si la respuesta a la pregunta en la caja de decisión (¿Es A - FFH? en este ejemplo) es negativa el programa bifurca a la izquierda y vuelve al bloque de salida. Esto se denomina ciclo o bucle. El programa 'seguirá el ciclo 25410 veces y después sale por el símbolo de alto. El diagrama de flujo de la Figura 6.50 representa un programa que puede tener de 15 a 30 instrucciones. Si los 25510 pasos del programa se hubiesen programado de forma lineal, el listado tendría miles de instrucciones. Los ciclos del programa son una forma adecuada de simplificar programas que tengan procesos repetitivos. ti Poner AaOOH Inicializar j Sacar A Y retardo de "" I seg Proceso repetitivo Incremento de A Modificar el conteo Iteración 'r Comparar (A) con FFH Procedimiento de prueba No Figura 6.50. Diagrama de flujo del problema de cuenta que utiliza un programa cíclico. http://librosysolucionarios.net I • ¡::i:n,.illiij¡;¡¡;;¡:::,III, I 11 PROORAMACION DEL MICROPROCESADOR 'or ejemplo, el (o-FEH) y saca :as de la mayor ior, es costum­ :ontinuación el nina el proceso ca. Los simbo­ lar si la cuenta : decisión (¿Es 'e al bloque de espués sale por ma que puede nado de forma lrma adecuada 193 Otro ejemplo de programa cíclico se muestra en la Figura 6.51. Este segmento de programa coloca la secuencia de números de Oal 8 en las posiciones secuenciales de memoria 2040 2048H. Acudir al diagrama de flujo de la Figura 6.51a. Los dos primeros rectángulos de la parte superior son para inicializar el registro par HL con 2040H y el acumulador con OOH. El tercer rectángulo representa el proceso de almacenamiento, que se repetirá nueve veces en este programa. La MPU almacenará repetidamente el contenido del acumulador en la posición de memoria señalada por el registro par HL. En el primer pase, el contenido del acumulador (OOH) se almacena en la posición de memoria 2040H. Los rectángulos cuarto y quinto de la Figura 6.51a representan operaciones que modifican la Carga el registro HL con 2040H Poner A aOOH posición de memoria apuntada r HL Incrementa el registro HL Ciclo Incrementa el registro A Comparar (A) 9 No (a) iclíco. I Diagrama de flujo detallado del programa de «cuenta y almacena» Figura 6.51. http://librosysolucionarios.net I rl I • 194 FUNDAMENTOS DE LOS MICROPROCESADORES Etiqueta LOOP Operando Comentarios LXI H,2040 ; Carga el registro HL con 2040H (utilizado como puntero de dirección) XRA A ; Pone el acumulador a OOH [(A) E!1 (A) = OOH en acumulador] MOV M,A INX H ; Incrementa el registro HL INR A : Incrementa el acumulador Nemotécnico ; Almacena el contenido del acumulador en la posición de memoria apuntada por el registro HL Una VersiÓIl grama de flujo posiciones secUI lentes a los dos con 2040H y e acumulador en siguientes (I~X contenido de A I cero está a O, Pe1 examina el seña por tanto se rea señalizador de e programa sale d programa. , CPI ti : Compara ¿es todavía (A) igual a 09 H'! Si (A) = 09H. entonces el señalizador de O se coloca en 1 09H iE~ 6.92. JNZ LOOP HLT -~ que deb!: ; Salta a la posición LOOP si Z O[si (A) < 09H]: de otra forma continúa con la siguiente instrucción SoIUCÍfIiE Larea repetitl\~ ; Detiene la MPU " (b) Versión en lenguaje ensamblador del programa de «cuenta y almacena» Figura 6.51. 6.93. Acudir a utilizada Soluc_ (continuación). E! rect inicializar 6.94. dirección del registro par HL y la cuenta del registro A. A título de ejemplo, durante el primer pase a través del programa, el registro par HL es incrementado a 2041 H mientras que el acumula­ dor es incrementado a 01 H. • El rectángulo de comparación y el símbolo de decisión representan las operaciones de prueba. El rectángulo de comparación resta 09H del contenido de A para poner a O ó a 1 el señalizador de cero. Si A < 9, el señalizador de cero estará a O, sin embargo, si A = 9, entonces el señalizador de cero estará al; el símbolo de decisión hace la pregunta: ¿Es A == 9? Si la respuesta es sí, el programa sale del ciclo y finaliza, sin embargo, si la respuesta es no, entonces el programa bifurca hacia atrás a la instrucción de almacenar, cercana a la parte superior del diagrama. Muchos procedimientos cíclicos utilizan las instrucciones de comparación y salto condicional para exami­ nar una cuenta que se modifica y que determina cuándo finaliza el ciclo. La cuenta modíficada que se examina en este ejemplo es el contenido del acumulador. El programa representado por el diagrama de flujo de la Figura 6.51a repetirá el proceso de almacenamiento nueve veces antes de salir por el símbolo de alto. http://librosysolucionarios.net Acudir a ción, el P' SoludóE Sielco ma siguec:i A=9?LaI 6.95. Acudir al nido del n resta inter Solucióa: La oper 09H. AcudJ ración iDIDI t PROGRAMACION DEL MICROPROCESADOR 'puntero de t romulador] ición de t 195 Una versión en lenguaje ensamblador de un programa que funciona como especifica el dia­ grama de flujo se muestra en la Figura 6.15b. El programa almacenará los números O a 8 en las posiciones secuenciales de memoria 2040 a 2048H. Las dos primeras instrucciones son equiva­ lentes a los dos primeros bloques del diagrama de flujo, y están para inicializar el registro par HL con 2040H y el acumulador con OOH. La instrucción MOV M,A almacena el contenido del acumulador en la posición de memoria a la que apunta el registro par HL; las dos instrucciones siguientes (INX H e INR A) incrementan los registros HL y A, la instrucción CPI compara el contenido de A con la constante 09H. Si el registro A contiene un valor de O a 8, el señalizador de cero está a O, pero si el contenido de A es 9, el señalizador de cero se pone a l. La instrucción JNZ examina el señalizador de cero, si es ~ O, el resultado de la resta interna (A) 09H no es cero, y por tanto se realiza un salto a la posición especificada por la dirección simbólica LOOP. Si el señalizador de cero es = 1, el resultado de la resta interna (A) 09H es cero y, por tanto, el programa sale del ciclo y continúa con la siguiente instrucción, que es HLT, la cual detiene el programa. ~ PROBLEMAS RESUELTOS lCa en 1 6.92. de otra ___ (hacer ciclos, modular) en un programa es un método de acortar los programas que deben realizar tareas repetitivas. Solución: La realización de ciclos es un método de acortar los programas que deban realizar operaciones repetitivas. ~ l 6.93. Acudir a la Figura 6.51a. El rectángulo «poner A a OOH» representa una instrucción utilizada para ___ (inicializar, examinar) el contenido del acumulador. Solución: El rectángulo <<poner A a OOH» de la Figura 6.5 1a representa una instrucción utilizada para inicializar el contenido del acumulador. 6.94. el primer el acumula- !le Solución: Si el contenido del acumulador de la Figura 6.51 a es 8 en el bloque de comparación, el progra­ ma sigue el ciclo despuéS del bloque de decisión. Observar que el bloque de decisión pregunta: ¿Es A 97 La respuesta es no, y por tanto el programa sigue el ciclo. la de prueba. :zadorde liahzador de sta es sí, el ama bifurca na. Muchos para exami­ , modificada ntado por el ICeS antes de t Acudir a la Figura 6.5Ia. Si el contenido del acumulador es 8 en el bloque de compara­ ción, el programa ___ (sigue el ciclo, se detiene) después del bloque de decisión. 6.9S. Acudir a la Figura 6.51 b. La operación «CPI» _ (compara, complementa) el conte­ nido del registro ___ (A, HL) con la constante 09H. Esta operación se realiza por una resta interna. Solución: La operación «ePI» de la Figura 6.51 b compara el contenido del registro A con la constante 09H. Acudir a la tabla de la Figura 6.4 para información detallada sobre la instrucción de compa­ ración inmediata. http://librosysolucionarios.net 196 6.96. FUNDAMENTOS DE LOS MICROPROCESADORES Acudir a la Figura 6.51 b. Si el señalizador de cero se pone al, la instrucción JNZ hará que la MPU ___ (continúe con la siguiente instrucción, vuelva atrás en el ciclo a la instrucción MOV M,A). Solución: Si el señalizador de cero es puesto a 1 en la Figura 6.51 b, la instrucción JNZ hará que la MPU continúe con la siguiente instrucción. 6.97. En un ciclo de un programa, la MPU ejecuta un grupo de operaciones repetidamente teniendo la posibilidad de ___ (cambiar, detener) las repeticiones en el instante ade­ cuado. G ~ Solución: El ciclo de un programa hace que la MPU ejecute un grupo de operaciones repetidamente teniendo la posibilidad de detener las repeticiones en el instante adecuado. Hay algunos programas con ciclos que continúan en el ciclo hasta que son interrumpidos por una reinicialización y por tanto no tienen la posibilidad de salir del programa por medios software. 6.98. G Acudir a la Figura 6.5ta. Este programa repite la operación «almacenar (A) en memoria» nueve veces, y el programa sigue el camino del ciclo hasta que salga por el símbolo de decisión de forma de diamante ___ (número) veces. [ Solución: El programa representado en la Figura 6.51 a repite la operación «almacenar (A) en memorÍalt nueve veces aunque el programa realiza el ciclo, hasta el símbolo de decisión en forma de diaman­ te, solamente ocho veces. Esto es debido a que antes del primer ciclo se ejecutó una operación de almacenamiento. [ [ 6.13. UTILIZAOON DE SUBRUTINAS " !. ' .. Una subrutina es un subprograma que puede ser utilizado muchas veces en el programa principal o es, normalmente, utilizado por un programador en muchos programas. Una subrutina se utiliza a veces, con tanta frecuencia, que se coloca permanentemente en una ROM. La transferencia de control desde el programa principal a la subrutina se realiza por una instrucción de llamada (call). Lo inverso, o transferencia de control de la subrutina al programa principal, lo realiza una instrucción de vuelta (return). Las instrucciones push, pop y load stack pointer (introducir, sacar y cargar puntero de pila) también se utilizan normalmente en las subrutinas. Un diagrama de flujo funcional para un problema ejemplo se muestra en la Figura 6.52a. La tarea del microprocesador es introducir dos muestras en forma de números binarios, sumarlas y guardar la suma. Los tres primeros rectángulos en la parte superior del diagrama de flujo sugieren este procedimiento; a continuación, la suma es multiplicada por un número denominado factor de escalamiento, el resultado de la multiplicación, o producto, se almacena entonces. La suma que se obtuvo en el tercer rectángulo se restaura ahora en el registro A de la MPU. Esta suma se examina en el bloque de decisión, en forma de diamante. Si la suma es igual o mayor que IOH (16 10), el programa sale al modo de alarma. Si la suma es menor que IOH, el programa vuelve al ciclo y entran nuevas muestras. Este tipo de programa se puede utilizar en instrumentación industrial donde ocurre lo siguiente: http://librosysolucionarios.net Si 11 i 1 .tI .~ (al Diagrama de lIIIjo I de I_r~ ~ ~ .. ..• .. ······:!I: l~i :::,1. 1 1 1". ti' 1 .11 '1 .. :·'•.I::¡ ::~ :,:·:·:1 ;1 ji: PROGRAMACION DEL MICROPROCESADOR :ión JNZ hará :n el ciclo a la acá que la MPU Ejemplo de entrada: carga el primer numero en A repetidamente 1 instante ade­ Ejemplo de entrada: suma el primer numero con el segundo : repetidamente ~nos programas zación y por Guarda la suma del primer numero con el segundo. 'en memoria» el símbolo de Introduce A Y señalizadores en la pila Multiplica la suma por el factor de escala 1) en memoria» ma de diaman­ la operación de Llama la subrutina de m ultiplicacíón suma x 2 ~ producto Almacena el producto Almacena la suma la principal tina se utiliza Ilsferencia de I de llamada lo realiza una ~ir. Extrae A Yseñalizadores en la pIla Si sacar y JI'3 6.52a. La L sumarlas y lujo sugieren !T1'Iado factor La suma :..1 suma se ,or que 10H lIJa vuelve al llmentación I Si (a) Diagrama de Rujo funcional para el problema de instrumentación (b) Díagrnma de Rujo detallado para el problema de instrumentación muestra-suma-multiplica-almacena­ y-realiza un nuevo ciclo Figura 6.52. http://librosysolucionarios.net 197 198 1. 2. 3. F1JNDAMENTOS DE LOS MICROPROCESADORES La suma de dos entradas debe ser vigilada continuamente. La suma debe ser escalada al valor más apropiado y se almacena este valor. La suma de dos entradas debe ser comprobada como mínimo cada segundo para determi­ nar si es peligrosamente grande, y si es así, el programa debe salir al modo de alarma. El programa se diseña para que esté en un ciclo continuamente, tomando nuevas muestras cada ciclo. Del ciclo se sale al modo de alarma sólo si existe algún problema. Un operador u otro programa deberá entonces manipular el procedimiento de alarma simbolizado en la Figura 6.52a por el símbolo conector circular. Un diagrama de flujo detallado para el mismo problema se dibuja en la Figura 6.52b, donde cada rectángulo es equivalente a una operación del microprocesador. Sin embargo, el bloque sombreado representa un grupo de instrucciones denominado subrutina MULTIPL Y. A partir del diagrama de flujo detallado de la Figura 6.52b, se escribe un programa en lenguaje ensamblador. Cada bloque del diagrama de flujo corresponde a una sentencia del lenguaje en­ samblador. En la Figura 6.53 se da un listado en lenguaje ensamblador para el programa princi­ pal, donde se utilizan solamente operaciones del repertorio de instrucciones del microprocesador genérico; el listado de la subrutina real para la operación de multiplicar no se incluye en la Figu­ ra 6.53. Las tres primeras sentencias del lenguaje ensamblador de la Figura 6.53 inicializan el puntero de pila a 20COH, el registro par HL a 2040H yel acumulador (A) a OOH. La cuarta sentencia suma el contenido de A (actualmente OOH) al de la posición de memoria señalada por el regis­ tro HL (dirección 2040H). Acudir a la Figura 6.54, que muestra el programa principal, datos, programa de subrutina y memoria de pila utilizada en este ejemplo. En esta figura se observa que el contenido sumado a A desde la posición 2040H es 05H. Al final de la cuarta instrucción, el contenido de A es 05H (00 + 05 = 05). La quinta instrucción del programa principal de la Figura 6.53 incrementa el registro par HL, la sexta instrucción suma la posición 2041 H de memoria de A; en la Figura 6.54 se determina que la posición 2041H contiene 09H. mientras que A contiene 05H. La suma de A después de la segunda instrucción ADD M es OEH. Esta es la suma de las dos muestras. La siguiente instrucción del programa principal de la Figura 6.53 es la operación PUSH PSW, que guarda el contenido del acumulador y señalizadores. Esto debe hacerse porque la siguiente instrucción de llamada destruirá el contenido de estos registros cuando se ejecute la subrutina de la multiplicación. La operación de llamada almacena la dirección de la siguiente instrucción del programa principal (dirección 200EH en este ejemplo) en la pila y después salta a la dirección de la primera instrucción de la subrutina (dirección 2050H). La llamada a la subrutina está esbozada en la Figura 6.54. Considerar temporalmente la instrucción de llamada como una sencilla opera­ ción de multiplicar, que multiplica el contenido de A por 2; la subrutina de este ejemplo entonces realiza esta multiplicación: OE x 02 = 1CH. y el producto en el acumulador después de la vuelta de la subrutina es 1CH. La siguiente instrucción del programa principal de la Figura 6.53 después de volver de la subrutina, está en la dirección 200EH, es la instrucción INX H que incrementa el registro para HL. El producto de la subrutina de multiplicación es ahora almacenado en la posición de memo­ ria 2042H por la instrucción MOV M,A. Recordar que las instrucciones de introducir y sacar (push y pop) se utilizan en parejas. Antes, en el programa principal el contenido del acumulador y de los señalizadores fue introducido en la pila por la operación PUSH PSW Ahora estos contenidos son restaurados por la instrucción POP PSW Es obvio que el contenido del acumulador ahora es igual a la suma (OEH en este ejemplo) en vez de al producto. La suma se examina con la siguiente instrucción. Etiqueta N START n PI. NO CPI Je HLT Figura 8.53. 1 http://librosysolucionarios.net 11 l' PROGRAMACION DEL MICROPROCESAOOR rara determi­ le alarma. lUestras cada rador u otro Figura 6.52a U2b, donde :0. el bloque Y. a en lenguaje lenguaje en­ :rama princi­ roprocesador e en la Figu­ m el puntero na sentencia por el regís­ lcipal, datos, : observa que IStrucción, el istro par HL. etermina que lespués de la Etiqueta START Nemotécnico Operando 199 Comentarios LXI SP.2OCOH ; Carga puntero de pila con 20COH LXI H.2040H ; Carga registro HL con 2040H (HL utilizado corno puntero de dirección en el programa principal) 2trl¡6= 5 XRA A ; Pone el acumulador a OOH ADD M ; Suma (A) a la posición de memoria 2040H (el primer número que será sumado está en 2040H) INX H ; Incrementa el registro HL a 2041 H ADD M ; Suma (A) a la posición de memoria 2041 H (el segundo número que será sumado está en 204 I H) -- 5 ~ DJ.fI: q ::: E PUSH CALL psw ; Introduce (A) y seftalizadores en la pila MULTIPLY ; Llama a la subrutina de multiplicación a la posición de memoria 2050H INX H MOV M.A ; Almacena el producto en la posición de memoria 2042H POP PSW ; Extrae de la pila y restaura (A) y seftalizadores CPI IOH ; Compara (A) con IOH [(A) -IOH, si (A) < IOH, entonces CY - 1; de otra forma CY - O] t JC START \ol\'er de la registro para ÍIl de memo­ HLT PUSH PSw, e la siguiente subrutina de strucción del dirección de :stá esbozada :ocilla opera­ po entonces , de la vuelta !rejas. Antes, ducido en la I instrucción DEH en este , Figura 6.53. ; Incrementa el registro HL a 2042H ; Salta a la posición de START (dirección 2003H) si CY ~ 1; de otra forma continúa con la siguiente instrucción ; Detiene la MPU Versión en lenguaje ensamblador del programa principal de instrumentación. http://librosysolucionarios.net i2lMU:U¡:lua" .~¡ 200 FUNDAMENTOS DE LOS MICROPROCESADORES Memoria de programa principal 1 Dirección . I Memoria de programa I para la sub~ I I (hex) Contenido (hex) 2000 31 2050 ES 2001 CO 2051 2E 2002 20 2052 02 2003 21 , 1'.. .~'I> - /r ""'" 2053 67 2054 AF 2055 84 2056 32 2004 40 2005 20 2006 AF 2007 86 2008 23 2009 86 200A F5 205A 30 200B CO 205B 6F 200C 50 205C 3A 2000 20 2050 20 ~ ~ §l <.; r-.. ,'1> '1> .:;- 2057 "V"" "V 2058 2059 = 20 20 70 200E 23 205E 20 200F 77 205F CA 2010 FI 2060 65 2011 FE 2061 20 v ú~( v~ 0'(' I.l ¡¡~ i;. . 2062 C3 2063 55 03 2064 20 2015 20 2065 El 2016 76 2066 C9 2012 10 2013 OA 2014 G>i}~ ¡¡ V--=--, ~- ~-. Memona de datos +- 2020 .~ Multiplicando 5 (a) 20BC 20BO 05 Primer número Que se va a sumar 2041 09 Segundo número Que se va a sumar 2042 Figura 6.54. ~ • - <- ALMACENA el producto Puntero de pila-+ 20BE 20BF 2OCO I-----lf-----I Contenidos de memoria y posiciones de almacenamiento del problema de instrumentación. http://librosysolucionarios.net \" x J Mulupl¡ ""':-- Utilizado como almacenamiento temporal por la subrutina 2040 Es importanll tratamiento, sin e y posteriormente se denomina pa$< utilizarse cualqui Las dos siguH suma en el acum OEH - lOH-FE acumulador es m «salta si arrastw. llamada START gura 6.54). Pueden utiJi2l zando sólo las op do más sencillo l plo, la solución Figura 6.55b mue el multiplicando resultado de esta na de multiplica.: multiplicador es ducto. En la Figura • ción. Cada bloq programa de la 5 El primer bII registro par H L subrutinas intr()( ser utilizados dw supuesto, el 0011 operación de sac Los tres sigw contendrá el mu , PROGRAMAClON DEL MICROPROCESADOR Es importante observar que la suma (OEH en este ejemplo) pasa a la subrutina para su tratamiento, sin embargo, es el resultado de la operación de multiplicar lo que sale de la subrutina y posteriormente se almacena. En la jerga de computadoras, el paso de datos a y desde subrutinas se denomina paso de parámetros, En este caso se utilizó el registro A. sin embargo, también puede utilizarse cualquier área de memoria. Las dos siguientes instrucciones del programa principal de la Figura 6.53 son para probar la suma en el acumulador. La instrucción «compara inmediato» realiza la resta interna en la CPU: OEH - IOH = FEH, que es la representación en complemento a 2 de -210' El contenido del acumulador es menor que 10H, así que el señalizador de arrastre (CY) se pone a l. La instrucción «salta si arrastre» examina el señalizador CY. Al estar al, la MPU salta a una dirección simbólica llamada START, donde comienza el ciclo con la instrucción LXI H (dirección 2003H de la Fi~ gura 6.54). Pueden utilizarse diversos métodos para resolver el problema de multiplicación binaria utili­ zando sólo las operaciones del repertorio de instrucciones del microprocesador genérico. El mét~ do más sencillo utiliza la suma repetida para resolver un problema de multiplicación, por ejem~ plo, la solución del problema 5 x 3 = 15 10 se ilustra en la Figura 6.55a, sin embargo, la Figura 6.55b muestra otro método para resolver el mismo problema: el de la suma repetida. Aquí el multiplicando se suma repetidamente, el número de veces que indica el multiplicador, el resultado de esta suma repetida es por tanto el producto. La multiplicación que realiza la subruti­ na de multiplicación está resumida en la Figura 6.55c. El multiplicando en el ejemplo es OEH y el multiplicador es 02H. El multiplicando se suma dos veces, dando ICH, que se considera el pro­ ducto. .....---­ > [) F .,'" 10 :A &5 Multiplicando Multiplicador Producto 20 El C'9 :>roblema OE+OE = JC l6 5 + 5 + 5 .. J5 10 O ,~ - Multiplicador - 2 Producto Multiplicador - 3 Producto S x 3 = 15 10 !O I Multiplicando '. 1 1 Multiplicando "',"} ,, (a) Multiplicación decimal (b) Método de multiplicación de sumas repetidas fe) Método de multiplicación de sumas repetidas Figura 6.55. .. En la Figura 6.56 se muestra un diagrama de flujo detallado para la subrutina de la multiplica­ ción. Cada bloque del diagrama corresponde a una sentencia del lenguaje ensamblador en el programa de la subrutina de la Figura 6.57. El primer bloque del diagrama de flujo de la Figura 6.56 guarda el contenido actual del registro par HL utilizando una operación de introducir (push). Es común en la mayoría de las subrutinas introducir el contenido de los registros de la MPU en la pila debido a que éstos pueden ser utilizados durante la ejecución de la subrutina y por tanto cambiar los valores que tenían. Por supuesto, el contenido del registro par HL será restaurado al final de la subrutina con una operación de sacar (pop) (ver la instrucción pop cercana al extremo inferior de este ejemplo). Los tres siguientes bloques de la Figura 6.56 inicializan los registros L, H Y A. El registro L contendrá el multiplicador (02H en este ejemplo), y será decrementado a OOH durante la rutina http://librosysolucionarios.net 202 FUNDAMENTOS DE LOS MICROPROCESADORES Entrada del programa principal Etiqueta Introduce el registro HL Nem •. en la pila )j (L) - Multiplicador I (Ii) - Multiplicando ~ I X LOOP Q lmacena producto parcial en (A) A S .. D ~menta el multiplicador en I ,.. Ciclo U Carga el producto pardal en A n JI Eurae el registro HL de la pila DONE ,. R Al programa principal Figura 6.56. Diagrama de flujo detallado de la subrutina de multiplicación utilizada en el problema de instrumentación. http://librosysolucionarios.net nUiJIIIIIU¡;¡t:UJ . . . -' FiguraS." PROORAMACION DEL MICROPROCESADOR Etiqueta LOOP Nemotécnico Operando PUSH H Comentarios ; Introduce los registros (H) y (L) en la pila para guardar el contenido del registro HL MVI L,02H MOV H,A XRA A ; Pone A a cero ADD H ; Suma (H) + (A); almacena la suma en A STA 2020H MOV A.L DCR A MOV L,A LDA 2020H ; Carga el contenido de la posición de memoria 2020H en A (restaura el contenido de A de la memoria temporal 2020H) JZ DONE ; Salta a la posición DONE (dirección 2065H) si Z", l o si (L) es decrementado a OOH; de otra forma, continúa con la siguiente instrucción ; Carga el registro L con 02H (este es el factor de escala); 02H es el multiplicador ; Transfiere (A) -+ (H); contenido de H guarda la suma en H = multiplicando; ; Almacena (A) en la posición de memoria 2020H (2020H se utiliza como almacenamiento temporal) ; Transfiere (L) a A ; Decrementa el registro A ; Transfiere (A) a L . DONE JMP LOOP POP H RET Figura 6,57. lizada 203 ; Salta siempre a la posición LOOP (dirección 2055H) ; Extrae de la pila y restaura el contenido del registro HL ; Vuelve de la subrutina Versión en lenguaje ensamblador de la subrutina de multiplicación utilizada en el problema de instrumentación. http://librosysolucionarios.net 204 FUNDAMENTOS DE LOS MICROPROCESADORES de multiplicación. El registro H contendrá el multiplicando (OEH en este ejemplo). Esta fue la suma pasada a la subrutina desde el programa principal, en el acumulador, y después transferida al registro H. El acumulador (A) entonces se pone a OOH. El quinto bloque de la Figura 6.56 representa la suma del multiplicando (OEH en este ejem­ plo) con A. El producto parcial de OEH se almacena entonces temporalmente en la posición de memoria 2020H, mientras que el acumulador se utiliza para decrementar el contenido del regis­ tro L. Después de que el multiplicador es decrementado de 02H a 01 H, éste se vuelve a colocar en el registro L. A continuación el producto parcial se restaura en el acumulador. El símbolo de decisión de la Figura 6.56 hace la pregunta: ¿Es (L) = DO? Si la respuesta es no, el programa vuelve a saltar al ciclo. Sin embargo, si la respuesta a la pregunta es sí, el programa bifurca a la derecha y el contenido del registro par HL es restaurado por la operación de sacar. Finalmente, la operación de vuelta bifurca de nuevo al programa principal. De acuerdo con el diagrama de la Figura 6.54, la vuelta de la subrutiQa se hace a la dirección 200EH del programa principal. Como el multiplicador en este ejemplo es 02H, el programa pasará dos veces a través de la secuencia suma-almacena-transfiere-decrementa-transfiere-carga y después sale al programa principal. Observar que el producto final 1CH pasará al programa principal al estar en tI acumu­ lador. Un listado en lenguaje ensamblador para la subrutina de multiplicación se detalla en la Figura 6.57. Cada sentencia del lenguaje ensamblador corresponde a un bloque del diagrama de flujo detallado de la Figura 6.56. Intentar seguir el flujo del programa de la Figura 6.57, acudien- ~.• do al diagrama de flujo como ayuda. En resumen, cuando se utilizan instrucciones de llamada y vuelta, asegurarse que estén empa­ rejadas. Observar también que los registros adecuados están inicializados y utilizar las instruccio­ nes de introducir y sacar a pares. Tener en cuenta el número de parámetros (datos) que son pasados a y desde la subrutina. ;; Las subrutinas son muy utilizadas por los programadores. Las ventajas de utilizar subrutinas son: 6.100. Acwl posic Soluci lJ¡ gura 6 6.101. Solud EJI 6.102. 3. 4. Añaden una estructura al programa que lo hace más fácil de comprender. Hacen la depuración más fácil. Abrevian el programa. Permiten escribir grandes programas de una forma más fácil y eficiente. Si el So MPL" SoJuci1i Sic busq~ 6.103. t l. 2. Elpn el PUl LaiDSl contad a __ SoJIIdiI laiJ sea intn car se le 6.104. Lainst contad( So'__ laÍII dores de 6.105. Un siml . sustitui< La desventaja de utilizar subrutinas es que el programa se ejecutará generalmente de forma más lenta cuando se llama a las subrutinas. grama. Solución: L'n So; sustituid. ensambl.i cero». PROBLEMAS RESUELTOS 6.99. El diagrama de flujo de la subrutina de la multiplicación de la Figura 6.56 utiliza el método de _ _ (suma y desplaza, adición repetida) para calcular un producto. , Ce{ 6.106. Solución: El diagrama de flujo de la subrutina de la multiplicación de la Figura 6.56 utiliza el método de la suma repetida para calcular un producto. El método de suma y desplazamiento es otro método Solución: En la tro H mI( más común de multiplicar que utiliza una serie de sumas y desplazamientos para calcular un pro­ ducto. http://librosysolucionarios.net ".Ia 41,'::;U.lIII' En la su registro. tro __ .. I I;! ii!'Ii PROGRAMACION DEL MICROPROCESADOR a fueta nsferida te ejem­ ¡ción de lel regis­ locar en :a es no, 205 6.100. Acudir a la Figura 6.54. ¿Qué tipos de instrucciones del microprocesador utilizan la posición de memoria llamada pila? Solución: Llamada, vuelta, introducir y sacar utilizan el área de memoria UFO llamada pila en la Fi­ gura 6.54. 6.101. El propósito de la instrucción LXI SP de la Figura 6.53 es _ el puntero de pila. (inicializar, examinar) Solución: El propósito de la instrucción LXI SP en la Figura 6.53 es inicializar el puntero de pila. rograma le sacar. o con el rograma ravésde rograma acumu­ 6.102. Si el señalizador de arrastre se pone a l en la Figura 6.53, la operación «lC» hará que la MPU busque la siguiente instrucción _ _ (HLT, LXI H). la en la rama de lcudien­ 6.103. La instrucción de llamada en la Figura 6.53 hace que el contenido del _ _ (registro A, contador de programa) sea introducido en la pila y el contador de programa se ponga a _ _ (dirección hex). n empa­ nruccio­ que son Solución: La instrucción de llamada de la Figura 6.53 hace que el contenido del contador de programa sea introducido en la pila y el contador de programa se ponga a 2050H. La subrutina de multipli­ car se localiza en la dirección 2050H como muestra la Figura 6.54 . .brutinas 6.104. La instrucción POP PSW de la Figura 6.53 saca el contenido del _ _ (acumulador, contador de programa) y de los señalizadores de la pila y los devuelve a la CPU. Solución: Si el señalizador de arrastre se ¡jOhe a 1 en la Figura 6.53, la operación dO> hará que la MPU busque la siguiente instrucción LXI H en la dirección simbólica START. Solución: La instrucción POP PSW de la Figura 6.53 saca el contenido del acumulador y de los señaliza­ dores de la pila y los devuelve a la CPU. Ver la tabla de instrucciones misceláneas (Fig. 6.40). ! ; I t :\ i¡ mamás 6.105. Un símbolo de decisión en forma de diamante como el de la Figura 6.56 normalmente es • sustituido por una instrucción de ___ (comparación, salto) cuando se escribe el pro­ grama. Solución: Un símbolo de decisión en forma de diamante como el de la Figura 6.56 normalmente es sustituido por una instrucción de salto cuando se escribe el programa. El programa en lenguaje ensamblador de la Figura 6.57 muestra que en este caso se utiliza la instrucción «le» o «salta si cero». Iiliza el ,. ttodo de ,método 'un pro- 6.106. En la subrutina de multiplicación de la Figura 6.57, el valor del multiplicando está en el registro _ _ (H, L) mientras que el valor del multiplicador está en el regís­ tro _ _ (H, L). Solución: En la subrutina de multiplicación de la Figura 6.57, el valor del multiplicando está en el regis­ tro H mientras que el del multiplicador está en el registro L. http://librosysolucionarios.net I "¡ • 206 FUNDAMENTOS DE LOS MICROPROCESADORES 6.107. En la subrutina de m ultiplicación, el contenido del registro _ _ (H, L) es decrementa­ do hasta OOH. 6.117. Elrq Solución: En la subrutina de multiplicación, el contenido del registro L es decrementado hasta OOH. 6.118. 6.108. Acudir a las Figuras 6.53 y 6.57. Los registros H y L son utilizados co­ mo ______ (punteros de dirección, registros de datos) en el programa principal y como ______ (punteros de dirección, registros de datos) en la subrutina. Res. Co. los se Res. 6.119. Dul"3.l tro_ Solución: Según la información de las Figuras 6.53 y 6.57. los registros H y L son utilizados como punte­ ros de dirección en el programa principal y como registros de datos en la subrutina de multiplica­ ción. Res. 6.120. Acudi rá_ Res. *'! .l PROBLEMAS SUPLEMENTARIOS '1 6.109. Un listado en lenguaje _ _ (ensamblador, máquina) se caracteriza por el uso de operandos, códigos de op y direcciones de memoria hexadecimales. Res. máquina. 6.110. Una sentencia de un programa en lenguaje ensamblador se divide en cuatro _ _ (campos, seg­ mentos) denominados etiqueta, nemotécnico, operando y comentario. Res. campos. 6.111. " 6.112. Una versión en lenguaje ensamblador, a veces, se denomina programa _ _ (objeto, fuente). Res. fuente. BASIC es considerado un lenguaje de alto nivel porque cada sentencia del programa represen­ ta _ _ (menos, más) operaciones máquina del microprocesador que una sentencia en lenguaje ensam blador. Res. más. 6.1 13. Los señalizadores de la Figura 6.3 son parte del dispositivo de almacenamiento de la CPU denomi­ nado registro _ _ . • Res. de status. 6.114. Cuando los registros H y L se unen para formar el registro HL, habitualmente son utilizados para señalar _ _ . Res. direcciones. I, 6.121. Despu. mientr Res. 6.122. Interru do eL Res. ! 6.123. Aleje( reinicia (mayor Res. 6.124. Acudir rá Res. 1 AaI 6.115. La pila en el sistema microprocesador genérico (o en un sistema 8080/8085) está localizada en _ _ . Res. la RAM. ~ . 6.116. El registro de 16 bits etiquetado SP en la Figura 6.3 es el _ _ _ . Res. puntero de pila. ." http://librosysolucionarios.net 'dial "li !; PROORAMACION DEL MICROPROCESADOR les decrementa­ 6.117. 207 El registro de 16 bits etiquetac:fo PC en la Figura 6.3 es el _ _' _ _ . Res. contador de programa. lo hasta OOH. utilizados co­ lma principal y rutina. ~ dos como punte­ na de multiplica­ 6.118. Como regla general, las operaciones aritméticas del microprocesador _ _ (afectan, no afectan) a los señalizadores. Res. afectan. 6.119. Durante la instrucción comparar de un microprocesador, solamente el contenido del regis­ tro _ _ (A. de status) es afectado por la operación. Res. status (son afectados los señalizadores). 6.120. Acudir a la Figura 6.58. El contenido del acumulador después de la operación ADD L se­ rá _ _ (8 bits). Res. 0000000 l. o Acumulador Acumulador ro de operandos, Registro de status Registro L Figura 6.58. ;eto. fuente). 6.121. Después de la operación ADD L de la Figura 6.58 el señalizador de arrastre estará a _ _ (O, 1) mientras que el señalizador de cero es igual a _ _ (O, 1). Res. 1, Z=O. trnma represen­ lIcia en lenguaje 6.122. Internamente el microprocesador no tiene hardware para restar; por tanto realiza restas convirtien­ do el _ _ (minuendo, sustraendo) a su forma en complemento a 2 y sumando. Res. sustraendo. t la CPU denomi­ 1 utilizados para 6.123. Al ejecutar una instrucción de resta de la tabla de la Figura 6.4, un señaJizador de arrastre en reinicialización (CY O) significa _ _ (préstamo, no préstamo) o que el minuendo es _ _ (mayor, menor) que el sustraendo. Res. no préstamo, mayor. 6.124. Acudir a la Figura 6.59. El contenido del acumulador después de la operación SUB H se­ rá _ _ (8 bits), que es la representación en complemento a 2 de _ _ (decimal). Res. 11111110, -210' Acumulador está localizada 100000001 I Acumulador Antes de la operación Registro H Registro de status Cy z Figura 6.59. http://librosysolucionarios.net i: ~ • -, 'i! 208 FUNDAMENTOS DE LOS MICROPROCESADORES 6.125. Después de la operación SUB H de la Figura 6.59, el sefializador de arrastre (<<préstamo») estará a _ _ (O, 1) mientras que el señalizador de cero será igual a _ _ (O, 1). Res. 1, Z = O. 6.126. Como regla general, los sefializadores del registro de status _ _ (son, no son) afectados por las instrucciones lógicas del microprocesador. Res. son. 6.127. El símbolo ( . ) utilizado en la tabla de instrucciones lógicas de la Figura 6.14 denota la operación _ _ (ANO, multiplicación). Res. ANO. 6.128. Acudir a la Figura 6.14. Si el acumulador de la MPU - 1110III O y el sefializador de arrastre - O, ¿cuáles son los c~ntenidos del acumulador y sefializador de arrastre después de una instrucción «RAR»? Res. acumulador = O1110 111, sefializador de arrastre - O. 6.133. El conteníd Res. 1010 6.134. La fuentecl Res. 2 lOA 6.135. Acudir a la to _ _ ld Res. direc1 6.136. Las instrua: Res. bifun 6.137. Se dice que de decisión. Res. coodI 6.129. Casi todas las instrucciones de transferencia de datos _ _ (afectan, no afectan) a los sefializadores del registro de status del microprocesador. Res. no afectan. 6.138. Las operaa. pila). Res. ~ 6.130. Acudir a la Figura 6.21. Cuando se utiliza una instrucción «MOV L,A», el registro _ _ (A. L) es la fuente del dato, mientras que el registro _ _ (A. L) es el destino. Res. A. L. 6.139. Acudir a la (hex). Res. CAH 6.131. Acudir a la Figura 6.21. Las instrucciones IN y OUT utilizan direccionamiento _ _ (directo, in­ herente). Res. directo. 6.132. Acudir a la Figura 6.21. La instrucción «LOA» utilizada en la Figura 6.60 tiene un código de op de _ _ (hex) y utiliza una instrucción de _ _ (número) bytes. Res. 3AH,3. . l ,.~J Memoria de p~ 4 Aans." Acumulador Contador de Antes de la operación ~ Después de la operación Registro de __ Memoria de datos (LOC) Código de operación Dirección \ 3AH 2010 OAH 2011 21H 2012 6.140. El contenidr Res. 20031 Memoria de programa 6.141. La instJuccí unainstruo Figura 6.60. http://librosysolucionarios.net Res. "auu PROORAMACION DEL MICROPROCESADOR 6.133. 209 El contenido del acumulador después de la operación de carga de la Figura 6.60 es _ _ (8 bits). 101OIOIO. Res. 6.134. La fuente del dato de la Figura 6.60 era la posición _ _ (hex) de la memoria de datos. Res. 2IOAH. i 6.135. Acudir a la Figura 6.21. La operación de carga mostrada en la Figura 6.60 utiliza direccionamien­ to _ _ (directo, inmediato). Res. directo. ¡ Las instrucciones de salto también se denominan de transferencia de controlo de _ _ . Ir 6.136. Res. bifurcación. ! . UI'aSIR = 1) ínstru~. . 6.137. Se dice que las operaciones de salto _ _ (condicional, incondicional) son instrucciones de toma de decisión. Res. condiciona!. ñalízadon:s 6.138. _ c·t L)cs 6.139. Acudir a la Figura 6.30. El código de op para la instrucción JZ usada en la Figura 6.61 es _ _ (hex). Res. CAH. Las operaciones de salto afectan al contenido del _ _ _ _ (contador de programa, puntero de pila). Res. contador de programa. 1: I! I: ;. I l' directo. ¡. Código de Dirección operación t digo de op Memoria de programa 2000 ? 2001 00000000 2002 0000 0000 Des.,.. Antes de la operación 1-­ _ _ _ ? _ _ _...1 Contador de programa Registro de status de la opend6n Contador de programa I O t--j O I Cy z Figura 6.61. 6.140. El contenido del contador de programa después de la operación en la Figura 6.61 será _ _ (hex). Res. 2003H (igual que antes de la operación porque no se realiza ningún salto). 6.141. - La instrucción _ _ (de llamada, de retomo) del microprocesador genérico realiza la función de una instrucción de introducir y saltar (push y jump). Res. llamar. http://librosysolucionarios.net li,,::;; ¡¡; l' i~ 210 FUNDAMENTOS DE LOS MICROPROCESADORES 6.142. La operación de _ _ (llamar, vuelta) es la última instrucción de una subrutina. Res. vuelta. , 6.143. Acudir a la Figura 6.62. El contenido de la posición de la pila 2109H después de la operación de llamada será _ _ (8 bits). Res. 00 l 00000 (20H). 6.149. E1pr mae Res. 6.ISO. E1J)11 el ma Res. Pila Pila 2107 Puntero de pila 2107 2108 ? 2108 2109 ? 2109 ' - - - - - - '~'2[OA , 210AH I H -+--i 2108H I I L 6.151. DesPl jar_ Res. 6.152. LasOj sones .210A. Contador de programa 00 10 0000 0000 0111 Res. I 6.153. Acudir utiliza Antes de la operación Res. Después de la operación 2004 Memoria de programa Puntero de pila ~-----"---....j 2005 1----+----1 2006 Contador de programa Figura 6.62. 6.154. Acudir bytes q Res. 6.155. Acudir utiliza e Res. 3 6.156. 6.144. Acudir a la Figura 6.62. El contenido de la posición 2108H de la pila después de la operación de llamar será _ _ (8 bits). Res. 00000 111 (07H). 6.145. Acudir a la Figura 6.62. El contenido del contador de programa después de la operación de llamada será _ _ (hex). Res. 30FOH (00110000 1111 0000 en binario). 6.146. Acudir a la Figura 6.62. El contenido del contador de programa después dé la operación de llamar (call) apunta a la primera instrucción de la _ _ (pila, subrutina). Res. subrutina. en un d So Res 6.157. Se utim represen Res. di 6.158. Muchas antes de!' Res. C( 6.159. Acudir a 6.147. Acudir a la Figura 6.40. Si la instrucción «PUSH PSW» se hubiese utilizado como primera instruc­ ción de la subrutina, la instrucción _ _ (nemotécnico) se utilizaría al final, justo antes de la vuelta. Res. POPPSW Res. IX 6.160. La téctü por el m Res. 6.148. Cuando el microprocesador genérico haya sido colocado en el modo de alto por la instrucción «HLT», solamente una petición de interrupción o una entrada de _ _ (reloj, reinicialización) a la MPU puede reinicializar la unidad. Res. reinicialización. Ci. 6.161. Acudir 2 o __ Res. F1 ¡ http://librosysolucionarios.net a... 1 ;:_1: 111 .... ~ .. PROGRAMACION DEL MICROPROCESADOR 6.149. 211 El primer paso al escribir un programa es _ _ (definir el problema. escribir la versión del progra­ ma en lenguaje ensamblador). Res. definir el problema. peración de 6.150. El programador de un sistema microprocesador debe familiarizarse con la arquitectura del sistema, el mapa de memoria, los registros de la CPU y el _ _ _ _ del microprocesador. Res. repertorio de instrucciones. 6.151. lIIerO . pila 08H i Después de definir y analizar el problema, el siguiente paso en programación es para dibu­ jar _ _ (la documentación, el diagrama de flujo) que muestra la solución del problema. Res. diagrama de flujo. 6.152. Las operaciones del microprocesador genérico que utilizan modo de direccionamiento inmediato son especificadas por instrucciones de _ _ (número) bytes. Res. 2 ó 3. 6.153. Acudir a la Figura 6.40. La operación «PUSH H» es una instrucción de _ _ (número) bytes que utiliza el modo de direccionamiento _ _ . Res. 1, registro indirecto. !le programa 6.154. Acudir a la Figura 6.4. La operación «compara A con ü> es una instrucción de _ _ (número) bytes que usa el modo de direccionamiento _ _ . Res. 1, registro. 6.155. Acudir a la Figura 6.21. La operación «LDA» es una instrucción de _ _ (número) bytes que utiliza el modo de direccionamiento _ _ . Res. 3, directo. ción de _ _ (Se hace una pregunta, Se hace una sentencia de hecho) dentro de un símbolo de decisión en un diagrama de flujo de programación. Res. Se hace una pregunta. de llamada 6.157. Se utiliza una instrucción _ _ (de bifurcación condicional, lógica) para realizar la operación representada por el símbolo de decisión de un diagrama de flujo. Res. de bifurcación condicional. 6.156. 6.158. • de llamar lira instruc­ Muchas veces instrucciones de _ _ (comparación, carga) son utilizadas en un programa justo antes de una operación de bifurcación condicional. • Res. comparación. 6.159. Acudir a la Figura 6.51b. ¿Cuál es el propósito de la operación «XRA A» en este programa? Res. poner el acumulador a OOH, inicializando así el registro A. mtes de la l ~'" 6.160. La técnica de utilizar _ _ en un programa se utiliza cuando deben realizarse tareas repetitivas por el microprocesador. Res. ciclos. mstrucción Mción) a 6.161. (e'.. - Acudir a la Figura 6.50. La saJida del númeró más alto en este programa será el _ _ (hex) o _ _ (decimal). Res. FEH, 254 10, http://librosysolucionarios.net « 212 FUNDAMENTOS DE LOS MICROPROCESADORES 6.162. Las subrutinas del microprocesador, utilizadas normalmente, son almacenadas a veces. permanen­ temente, en _ _ (RAM, ROM). Res. ROM. 6.163. La instrucción «.le» examina el seftalizador _ _ (CY. Z) en el microprocesador genérico. Res. CY (señalizador de arrastre). 6.164. Las instrucciones de introducir (push) y _ _ (sumar, sacar) deben ser utilizadas en parejas. Res. pop (sacar). 6.165. Las instrucciones de llamar y _ _ (brincar, de vuelta) deben ser utilizadas en parejas. Res. de vuelta. 7.1. INTR4 La mayoría d contienen uru directamente: La interconex. interfaz es uru ciones relativa a veces, el ajo: Considerar interfaz, o enI serán examina RAM así corn información Il ra 7.1, que 105 todas las part~ a y desde la ~I Generalme ponden a una 1. Lectun 2. Escrítw 3. Lectura 4. EscritUJ 5. Maní", Cuando se dio con la MPe. D mente, el micr liberan las M PI puede acceder I denomina acce El diagram.; entrada y adap cierto dependie http://librosysolucionarios.net Capítulo 7 INTERFACES CON EL MICROPROCESADOR 7.1. INTRODUCCION La mayoría de los microprocesadores tienen poco valor funcional por sí mismos. Muchos no contienen una memoria sustancial, y pocos tienen puertos de entrada y salida que los conecten directamente a dispositivos periféricos. Los microprocesadores operan como parte de un sistema. La interconexión, o enlace, de las partes en este sistema se denomina interfaz. Generalmente, una interfaz es una frontera entre dos o más dispositivos que comparten información; otras considera­ ciones relativas a las interfaces incluyen la sincronización, dirección de la transmisión de datos y, a veces, el ajuste de niveles o modos de sefial. Considerar el sistema simplificado basado en microprocesador esbozado en la Figura 7.1. La interfaz, o enlace, entre cada uno de los dispositivos mostrados y la unidad microprocesadora serán examinados. Por tanto, en este capítulo se cubrirá la interfaz de la MPU con la ROM y la RAM así como las interfaces entre la MPU y los dispositivos de entrada/salida (E/S). Se dará información poco detallada sobre dispositivos periféricos específicos. Es obvio, según la Figu­ ra 7.1, que los buses de direcciones, datos y control juegan un papel importante para enlazar todas las partes del sistema. Las interfaces se encargan de la sincronización y transmisión de datos a y desde la MPU, y por tanto debe estudiarse el software como el hardware. Generalmente, las transferencias de entrada y salida de datos de la MPU a los buses corres­ ponden a una de estas actividades: l. Lectura de memoria. 2. Escritura en memoria. 3. Lectura de E/S. 4. Escritura en E/S. S. Manipulación de interrupciones o reinicialización. Cuando se dice que el dato es introducido desde otro dispositivo, significa entrada en relación con la MPU. De igual forma, una salida será una salida de la unidad microprocesadora. General­ mente, el microprocesador es el foco de todas las operaciones. Sin embargo, algunos controles liberan las MPU de los buses de dirección y datos durante el tiempo que un dispositivo periférico puede acceder directamente a la memoria principal del sistema sin ir a través de la MPU. Esto se denomina acceso directo de memoria (DMA). El diagrama de la Figura 7.1 sugiere que la MPU, ROM, RAM, adaptador de interfaces de entrada y adaptador de interfaces de salida son dispositivos separados. Esto puede ser o no ser cierto dependiendo del sistema específico. Es bastante común para los fabricantes producir adap­ 213 http://librosysolucionarios.net . n 214 FUNDAMENTOS DE LOS MICROPROCESADORES I l""""- Bus de direcciones (16 líneas) -­ Dispositivo periférico . ""' c'."· \ --+- j v.. I controladon de disquete~ pantalla/tec jJJ Adaptador de la interfaz de entrada 7.2. ~ INTi Considerar 1 de sólo lecn tadas en la (~07)del MPU -4-- (U1:;,) de la J ~., Los 12 b 4K x 8. El d f-t-- t Bus de control palabras de de dirección cador de dÍ! Itt. 1'1""", ROM ---4Il1o- ----- Vj --..... \j ---Il00. \ J l' Adaptador de la interfaz de salida POD4 POD4 pasti DIi ca ""IIf-- .lJJ. I Dispositivo periférico I Figura 7.1 . Iníci Suponer QU Los 12 bits ---- RAM . ti: Bus de datos (8 líneas) l. 2. 3. diA .. Diagrama de bloques de un sistema basado en microprocesador. tadores de interfaces para periféricos, compatibles con sus unidades microprocesadoras. Estos adaptadores, habitualmente, son de propósito general ya que normalmente pueden ser programa· dos para que funcionen bien como interfaz de entrada o de salida. Algunos fabricantes integran RAM y puertas de E/S o ROM y puertas de E/S en el mismo CI para disminuir el número de componentes del sistema. Los fabricantes también producen componentes especializados de in· terfaz en forma de CI, entre los que se incluyen interfaces de comunicación programables, http://librosysolucionarios.net INTERFACES CON EL MICROPROCESADOR 215 controladores DMA programables, controladores de intenupciones programables, controladores de disquetes, controladores de enlace de datos síncronos, controladores CRT y controladores de pantalla/teclado. 7.2. INTERFAZ CON LA ROM Considerar la interfaz del microprocesador con una memoria de sólo lectura (ROM) o memoria de sólo lectura programable (PROM). La MPU y sección de ROM de un sistema están represen­ tadas en la Figura 7.2. Las 8 líneas del bus de datos están conectadas a los terminales de salida (~07) de la ROM, la salida de lectura (RD) va de la MPU a la entrada de habilitación de salida (VE) de la ROM. . Los 12 bits menos significativos del bus de direcciones (Ao-A II >están conectados a la ROM de 4K x 8. El decodificador permanente del CI ROM puede acceder cualquiera de 4096 (2 12 4096) palabras de memoria de sólo lectura de 8 bits utilizando las 12 entradas de dirección. Las 4 líneas de dirección más significativas (A I2 -A ls ) van a un elemento combinacional denominado decodifi­ cador de direcciones. Para acceder y leer datos de la ROM, la MPU debe: 1, 2. 3. Inicializar las direcciones en las líneas de dirección Ao a A 11' Poner DE en BAJA utilizando la línea de control de lectura. Poner en BAJA utilizando el decodificador de direcciones y la línea de selección de pastilla. es Suponer que la MPU quiere acceder a la posición de memoria OOOOH (0000 0000 0000 00002), Los 12 bits menos significativos se aplican directamente a la circuitería de decodificación de la Bus de direcciones r-­ \ ....­ Decodifi· A I2 -A IS cador de direcciones '\ (4) 115 (j7 MPU Ao ;-­ ~ Ao-A II ---410­ ,-..... Línea de selección de pastilla Figura-7.2. °0 -RD . --- Línea de control de lectura Bus de datos OE Ao (12) AI ¡ - es ROM de 4Kx8 (jo (SL"".......... °7 Interfaz de la ROM con el microprocesador. http://librosysolucionarios.net ... I I 216 FUNDAMENTOS DE LOS MICROPROCESADORES 0000 ROM de 4096 palabras x 8 bits OFFF 1000 lFFF -2000------------­ 2FFF -----------------3000 3FFF -----------------4000 4FFF ROM, vía la parte de la A15 = 00001, entrada de s El mapa por el decod te 65.536) Jl decodificadc segmentos tl accedería al decodificadc memoria 10 un segmente específica di: Cuando direccionam 5000 5FFF 6000 6FFF -----------------7000 7FFF -----------------8000 . 8FFF -----------------9000 9FFF -----------------Aooo Figura 7.4 n 8 bits de la (Ao-A 1S ) caI1 las líneas de son decodifi na (C'S) de 1 ción de salítl por la MPl líneas de díl sido activad tiempo de al do y se defi' localicen el Observa! AFFF ----------------Booo BFFF -----------------CooO 1 1. CFFF -------~--------- DOoo 1 DFFF ----------------EOoo EFFF FOOO .. " J FFFF Figura 7.3. Mapa de memoria. http://librosysolucionarios.net - Figura 7.~ J te e re .$ U=QL$J$ ¡; Jl;I§!, INTERFACES CON EL MICROPROCESADOR 217 1I1 ROM, vía las líneas de dirección Ao a AII' Los 4 bits más significativos (A I2 -A 1s ) también forman parte de la dirección, y son decodificados por un decodificador de direcciones. Si A I2 a AI5 = 0000 , entonces el decodificador de direcciones producirá un nivel BAJO que habilitará la 2 entrada de selección de pastilla (L'S) de la ROM de la Figura 7.2. El mapa de memoria dibujado en la Figura 7.3 puede ayudar a explicar el trabajo realizado por el decodificador de direcciones. El mapa de memoria simboliza una unidad de 64K (realmen­ te 65.536) posiciones de memoria y, está dividido en dieciséis segmentos de 4K. La tarea del decodificador de direcciones es ayudar a la MPU para que cada vez acceda solamente uno de los segmentos de 4K. Si las 4 entradas al decodificador de direcciones fuesen 0000, entonces se accedería al segmento O (posiciones de memoria OOOO-OFFFH). Sin embargo, si las entradas al decodificador de direcciones fuesen 000 1, entonces se accedería al segmento 1 (posiciones de memoria 1000-1 FFFH), etc. En resumen, las 4 líneas de dirección más significativas seleccionan un segmento de memoria mientras que los 12 bits menos significativos determinan la posición específica de memoria en ese segmento de 4K. Cuando se hace la interfaz de la MPU con la ROM, las consideraciones importantes son direccionamiento y temporización. El direccionamiento se ha explicado ya. El diagrama de la Figura 7.4 muestra las señales de la MPU que afectan la lectura de una palabra de memoria de 8 bits de la ROM. La línea superior del diagrama de tiempos muestra las líneas de dirección (Ao-A ,s ) cambiando a sus respectivos niveles lógicos. De acuerdo con el circuito de la Figura 7.2, las líneas de dirección Ao a A 11 activan las entradas de dirección de la ROM mientras que A 12-A lS son decodificadas por el decodificador de direcciones, activando la entrada de selección de pasti­ lla (C"S) de la ROM. Poco tiempo después la salida de lectura (RD) de la MPU activa la habilita­ ción de salida de la ROM, y el dato almacenado es colocado en el bus de datos y recogido del bus por la MPU. En la Figura 7.4 se muestra una limitación de tiempos críticos. Una vez que las de la ROM ha líneas de dirección han establecido sus respectivos niveles lógicos y la entrada sido activada, se tarda cierto tiempo en acceder a la palabra de memoria. Este se denomina tiempo de acceso de lectura y es característico de la ROM o PROM particular que se esté utilizan­ do y se define como el tiempo que se necesita para que los decodificadores internos de la ROM localicen el byte correcto en memoria. Observar el uso de pequeños círculos y flechas en la Figura 7.4. Estos indicadores se utilizan , I!II h, l~ . -es ; i $O WSOR S Señales de laMPU Lectura de memoria· Líneas de dirección (A o - A 1s ) 1 ===::x___________....:-..><== , , 'r* ¡I ~• , -~i l' ',' . 1, ! 1M' ~ Salida de lectura (RD) _ _-+__..... In Entrada de datos (Do - D7 ) - - TiemPOde~ acceso de lectura Figura 7.4. Diagrama de tiempos. Ser'lales de la MPU durante la operación de lectura de la ROM. '11"1 !1,'"¡ ',J.. I"!! ; 1" http://librosysolucionarios.net ¡ ," ' j,,: '. I1 I 218 FUNDAMENTOS DE LOS MICROPROCESADORES para simbolizar una relación causa-efecto importante en el diagrama de tiempos. A título de ejemplo, en la Figura 7.4 la transición H a L (ALTA a BAJA) de la salida de lectura hace que las patillas del bus de datos de la MPU conmuten de su condición de tres estados para aceptar como entrada el dato del bus de datos. Los trazos de las líneas de entrada de datos significan condición de tres estados o de alta impedancia. De nuevo, en la transición La H de la salida RD las patillas del bus de datos de la MPU vuelven a conmutar a su condición de tres estados y dejan de aceptar datos del bus de datos. El diagrama de tiempos de la Figura 7.4 solamente muestra sefiales de la MPU y no las entradas y salidas de la ROM. PROBLEMAS RESUELTOS 7.1. Una ROM de 4K necesita ___ (números) entradas de dirección para decodificar las 4096 posiciones separadas de memoria. Solución: De acuerdo con la Figura 7.2, una ROM de 4K necesitará 12 entradas de dirección para decodifi­ car y acceder a las 4096 posiciones separadas de memoria. LacaJ direcc de Solucil La accedic Los dispositi, RAM se das más fáciles d4 Considera la RAM está 4096 pa.labnl muchos CI ( Acudir a la Figura 7.2. Las 4 líneas de dirección más significativas son decodificadas por el decodi.ficador de _ _ (direcciones, la ROM). Solución: Las 4 líneas de dirección más significativas (A I2 -A I5 ) son decodificadas por el decodificador de direcciones. 7.4. 7.7. 7.3. INfE La unidad de memoria de la Figura 7.2 se denomina ROM de 4K x 8 bits, lo que significa que puede almacenar 4K (ó 4096) palabras, cada una de 8 bits. 7.3. De habilit bus de La memoria de sólo lectura de la Figura 7.2 puede almacenar _ _ (número) palabras, cada una de ___ (número) bits. Solución: 7.2. ~ SoluciC Decodi cador ( direro~ ¿Qué segmento del mapa de memoria de la Figura 7.3 seleccionará el decodificador de direcciones si la MPU pone en el bus de direcciones 00 I O0000 0000. 1111 2? Solución: Los 4 bits más significativos (0010 en este ejemplo) son decodificados por el decodificador de direcciones y determina, en este caso, que se accederá al segmento 2. El segmento 2 de la Figura 7.3 incluye 4096 posiciones de memoria numeradas desde 2000 hasta 2FFFH, 7.5. Acudir a la Figura 7.4. Durante una operación de lectura de memoria, la(s) ú!tima(s) salida(s) activada(s) de la MPU era(n) la(s) línea(s) _ _ (A o-A I5 , RD). Solución: Según la información de la Figura 7.4, la última salida activada de la MPU fue la línea RD. , 7.6. Cuando la salida 1U5 de la MPU alcanza el nivel BAJO, habilita la entrada _ _ (<:'S. lJE) de la ROM, lo que hace que las patillas del bus de datos de la MPU _ _ (acepten datos del bus de datos, vayan a la condición de tres estados). http://librosysolucionarios.net ,l Linea dese INTERFACES CON EL MICROPROCESADOR • o de le las omo ición tíllas ~ptar 219 Solución: De acuerdo con la Figura 7.2 y 7.4, cuando la salida RD de la MPU alcanza el nivel BAJO, habilita la entrada OE de la ROM para que las patillas del bus de datos de la MPU acepten datos del bus de datos. 7.7. de la La característica de la ROM relacionada con el tiempo que tarda en ser decodificada una dirección y accedida a una posición específica de memoria se denomina tiempo de _ _ _ _ . Solución: La característica de la ROM que trata del tiempo que tarda en ser decodificada una dirección y accedida una posición específica de memoria se denomina tiempo de acceso de lectura. bras, 7.3. INTERFAZ CON LA RAM l que .. las • Ddífi­ Los dispositivos de almacenamiento de lectura/escritura habitualmente se denominan RAM. Las RAM se clasifican en dinámicas y estáticas. Esta sección tratará de las RAM estáticas, que son más fáciles de conectar mediante interfaces que las de tipo dinámico . Considerar la MPU y la sección RAM del sistema representado en la Figura 7.5. Observar que la RAM está organizada como una unidad de 4K (realmente 4096 palabras) x 8 bits, es decir 4096 palabras, de 8 bits cada una. Es común que esta gran unidad RAM estática esté formada por muchos CI de RAM. U no de estos módulos de la memoria de 4K x 8 bits contiene 32 CI de ~ orel tJlrde Bus de direcciones ro­ Decodifi­ cador de direcciones A 12 -A I5 .......-­ \ I!, 1/5 ...-.:-... MPU Do ,10 WR ... de r.. de Ao-A" • "'.3 Línea de control de escritu\ ro--­ RD +- . Línea de control de lectura f-­ ...... OE 13(5) ......... R/W Ao (121' : Al/ Línea de selección de disPositivo n. Módulo RAM de 4Kx8 1/'10 ~;~ l/O, Selección ­ de módulo (MSj :nen Figura 7.5. Interfaz de la RAM con el microprocesador. http://librosysolucionarios.net li Bus de datos ,. 1 . 220 FUNDAMENTOS DE LOS MICROPROCESADORES RAM estática de 1024 x l bits. El módulo de memoria o tarjeta de memoria contiene también unos 10 CI extra para puertas y buffers. Esta unidad de memoria RAM de 4K x 8 bits represen­ tada como un bloque en la Figura 7.5 es por sí misma un sistema complejo. El mapa de memoria del sistema basado en microprocesador se muestra, de nuevo, en la Figura 7.6. La memoria RAM de 4K se ha añadido. arbitrariamente, en el tercer segmento (llamado segmento 2). Igual que con la ROM, el decodificador de direcciones de la Figura 7.5 generará una señal para habilitar a la línea de selección de dispositivo. El decodificador de direc­ ciones enviará un pulso BAJO a la entrada de selección de módulo (MS) para habilitar la RAM solamente cuando las 4 líneas de dirección más significativas (A ,2 -A 1s ) sean 0010 2 , La decodifica­ ción de las 12 líneas de dirección menos significativas (Ao-A II ) la realiza la circuitería de decodifi­ cación de la RAM. El bus de datos es un camino de 8 bits y dos direcciones para la lectura o ~scritura de datos en la RAM de la Figura 7.5. Las 12 líneas de dirección menos significativas de la MPU van directa­ mente a las entradas de dirección del módulo RAM. vía bus de direcciones, las 4 líneas de dirección más significativas de la MPU están conectadas al decodificador de direcciones. La salida de escritura (WR) de la MPU está conectada, vía la línea de control de escritura, a la entrada R/JI cuando la M nivel ALTO. MPU esconl Un nivel 8.-\ El diagral durante la OJ ción válida ~ condición de bus de datos. están excitad control de le ALTO, o en alcanza el ni bus de datos característica a 1000 ns pa: 0000 ROM de 4Kx 8 OFFF "­ 1000 1 1 ... ~ IFFF 1 2000 ~ RAM de 4096 palabras x 8 bits OFFF j -,... ~ I -----------------­ ........ ~ I 1 ~ FOOO FFFF Figura 7.6. Mapa de memoria. http://librosysolucionarios.net INTERFACES CON EL MICROPROCESADOR -én ¡en­ 11 la :nto 7.5 recI\M ica­ :lifi­ ~en cta¡ de la a la ~! 221 entrada R/"W de la RAM. Observar que esta entrada es de lectura/escritura, lo que significa que cuando la MPU no habilita la salida de escritura con un nivel BAJO, el terminal WR pone un nivel ALTO, que especifica una operación de lectura en la RAM. La salida de lectura (RD) de la MPU es conectada, vía la línea de control de lectura, a la habilitación de salida (OE) de la RAM. Un nivel BAJO en la línea de control de lectura habilitará las salidas del módulo RAM. El diagrama de tiempos de la Figura 7.7 muestra las señales del microprocesador y de la RAM durante la operación de lectura. Las líneas de dirección de la MPU se incializan con una direc­ ción válida y entonces la salida de lectura (R15) va al nivel BAJO. El bus de datos pasa de la condición de tres estados a una condición de entrada. La MPU está lista para aceptar datos del bus de datos. Las entradas de selección de módulo de RAM (MS) y de habilitación de salida (OE) están excitadas en el nivel BAJO, o habilitadas por el decodificador de direcciones y la línea de control de lectura de la MPU. La entrada de lectura/escritura (R/JV) es mantenida en el nivel ALTO, o en el modo de lectura. Inmediatamente después que la habilitación de salida (OE) alcanza el nivel BAJO, son activadas las salidas de datos. El dato almacenado es colocado en el bus de datos por las salidas de la RAM. Como en una ROM, el tiempo de acceso de lectura es una característica importante de la RAM, El tiempo máximo de acceso de lectura puede variar de 250 a 1000 ns para RAM estáticas comunes. Set'lales de laMPU Lectura de memoria ---Ix= ===><____ Dirección (Ao-A¡s) Di_'_I'eCC_io_'n_v_á_lida ___ Lectura (RD) In - - -<"'_____,.,r - - - -­ Bus de datos (Do-D7 ) Señales de RAM Lectura de memoria Selección de módulo (MS) Lectura/escritura (R/W) Habilitación de salida (OE) - - - t - - " " , Salida de datos (00-07) Figura 7.7. ~- F -<Datos de salida válidos }- ­ TIempo de acceso de lectura - - - Diagrama de tiempos. Señales MPU y RAM durante la operaci6n de lectura de memoria. http://librosysolucionarios.net j ¡ 1 !., #_0.-----_-:---_____.",. ".,- .. .-_____ 222 FUNDAMENTOS DE LOS MICROPROCESADORES El diagrama de tiempos para la operación de escritura en memoria RAM se muestra en la Figura 7.8. La secuencia de eventos durante la operación de escritura implica primero el envío de una dirección a la RAM y al decodificador de direcciones, éste a su vez activa la entrada de selección de módulo (MS) (que puede ser la entrada de selección de pastilla en un simple CI). Después de un tiempo denominado tiempo de establecimiento de la dirección, el pulso de escritu­ ra de la MPU (WR) activa la entrada de lectura/escritura (R/W) de la RAM y la coloca en el modo de escritura. El pulso de escritura debe ser habilitado como mínimo un cierto tiempo, denominado tiempo del pulso de escritura (o anchura del pulso de escritura). Al mismo tiempo que sale el pulso de escritura, el dato que se va a escribir en memoria es colocado en el bus de datos por la MPU. Inmediatamente después, la RAM acepta este dato y lo escribe en la posición direccionada. El tiempo mínimo para un ciclo de escritura se denomina tiempo de ciclo de escritura y está identificado cerca la parte superior del diagrama de la Figura 7.8. El ciclo de escritura mínimo típico para una RAM estática común puede variar de 250 a 1000 ns. El mínimo tiempo de preparación de la dirección para el mismo grupo de RAM puede variar de 20 a 200 ns, mientras que el mínimo tiempo de pulso de escritura puede ser de 180 a 750 ns. El etiquetado y el número de entradas de las RAM comerciales varían. Las señales de salida de los microprocesadores comerciales, también varían considerablemente. Los manuales de datos de los fabricantes deben ser examinados cuidadosamente para estos detalles. Las señales del micro- procesador como los d para dete" pocos micr las unidade 7.8. La J leen Sol. . 7.9. ¿Qui faz a Sol• . Señales de laMPU Dirección 7.10. Acu( selec to_ Escritura de memoria <Ao-A¡s) ~ V-­ ~A,--._ _ _ _ _---'''-­ Sol. Si segrrM Escritura (WR) acuet1 - - -( Señales de la RAM Salida de datos )- - - - -­ Escritura de memoria Selección de módulo (.\15) ~ ---i\I"'t---Tiempo de cido de escritura- , . . - - ­ 7.H. El b de_ dapc Sol. EJ RAM (circo Anchura del pulso ----~----,---- Lectura/escritura (R¡W) .. ~~------ de escritura -:- - det,-_E_n_tr_ad_a_d_e_d_a_to_s..l}Tiempo . preparación acti\~ - -­ de la dirección Figura 7.8. Diagrama de tiempos. Señales de la MPU y la RAM durante la operación de escritura en memoria. http://librosysolucionarios.net • 7.12. Para que L do la 1/0(,- SoIKi Pa porta el oh' etique J ,.' , ten la río de da de e CI). iCritu­ en el :mpo, lempo )US de 5íción r/o de clo de ínimo :00 ns, lida de Itos de mIcro- INTERFACES CON EL MICROPROCESADOR . 223 procesador y RAM no aparecen en los libros de datos del fabricante, en diagramas combinados como los de las Figuras 7.7 y 7.8. Los diagramas de tiempo han de examinarse separadamente para determinar si son compatibles. Como las celdas de memoria necesitan «refrescarse» cada pocos microsegundos, las RAM dinámicas son más dificiles de conectar mediante interfaces que las unidades estáticas de memoria. PROBLEMAS RESUELTOS 7.8. La RAM es funcionalmente un dispositivo de almacenamiento de _ _ (sólo lectura, lectura/escritura). Solución: La RAM es funcionalmente un dispositivo de almacenamiento de lectura/escritura. 7.9. ¿Qué tipo de RAM -estática o dinámica- es más fácil de conectar mediante una inter­ faz a un microprocesador? Solución: La RAM estática. 7.10. Acudir a la Figura 7.6. Si la MPU direcciona a 2030H, el decodificador de direcciones seleccionará el segmento ___ (número) de memoria. Un dispositivo de almacenamien­ to _ _ (RAM, ROM) reside en esta posición en este sistema. Solución: Si la MPU de la Figura 7.6 direcciona a 2030H, el decodificador de direcciones seleccionará el segmento 2 (0010 2) de memoria. Un dispositivo de almacenamiento RAM reside en esta posición de acuerdo con el mapa de memoria de la Figura 7.6. 7.11. El bloque de RAM de la Figura 7.5 contiene _ _ (número) palabras, cada una de _ _ (número) bits de ancho. Una RAM de este tamaño, probablemente, está forma­ da por un _ (grupo de CI, solo CI). Solución: El bloque RAM de la Figura 7.5 contiene 4K (realmente 4096) palabras, cada una de 8 bits. Una RAM de este tamaño, probablemente, está formada por un grupo de el. Una tarjeta de memoria (circuito impreso con el) contiene unos 40 el. 7.12. Para escribir en la RAM de la Figura 7.5, las entradas de dirección Ao a AII deben ser activadas, por tanto MS debe ser habilitado con un nivel _ _ (ALTO, BAJO) mientras que la entrada R/Wes mantenida en un nivel _ _ (ALTO, BAJO). Finalmente, cuan­ do la entrada 7JE es excitada con un nivel _ _ (ALTO, BAJO), las patillas etiquetadas //00 a //0 7 son las _ _ (entradas, salidas) de la operación de escritura. Solución: Para escribir en la RAM de la Figura 7.5, las entradas de dirección Ao a A7 deben ser activadas, por tanto MS debe ser habilitado con un nivel BAJO mientras que la entrada R/U' es mantenida en el nivel BAJO. Finalmente, cuando la entrada OE es excitada con un nivel BAJO, las patillas etiquetadas 1/00 a 1/07 son las entradas de la operación de escritura. http://librosysolucionarios.net '1, t t 1 lt j :1 ;t ""--~ -"')' 224 1 FUNDAMENTOS DE LOS MICROPROCESADORES j 7.13. Acudir a la Figura 7.5. Citar las dos líneas de control que constituyen el «bus de control» de este sisterrl:l. Solución: El «bus de control» comprende las líneas de control de lectura y de escritura del sistema de la fi­ gura 7.5. 7.14. Acudir a la Figura 7.7. ¿Qué hace que la línea de selección de módulo (MS) caiga del nivet ALTO al BAJO al comienzo de la operación de lectura de memoria? Solución: Los 4 bits más significativos del bus de direcciones son decodificados por el decodificador de direcciones. que activa la línea de selección de módulo (MS) cuando 00 l 02 está presente en sus en­ tradas. 7.15. Acudir a la Figura 7.7. El tiempo de acceso de lectura es el tiempo requerido para que los datos almacenados alcancen las salidas de la RAM, desde el instante en que una dirección válida alcanza las entradas de dirección. El tiempo de acceso de lectura de una memoria RAM típica debe ser de unos 500 _ _ (liS, ns). Solución: El tiempo de acceso de lectura para una memoria RAM típica debe ser de unos 500 ns. 7.16. Durante la operación de escritura en la Figura 7.5, las patillas Do a D7 del microprocesador son consideradas _ _ (entradas, salidas) y están ___ (recibiendo datos del, enviando datos al) bus de datos. Solución: Durante la operación de escritura, las patillas Do a D7 del microprocesador se consideran salidas y están enviando datos al bus de datos. 7.17. Acudir a la Figura 7.8. El tiempo del ciclo de escritura es ___ (mayor, menor) que el tiempo del pulso de escritura de una RAM. Solución: De acuerdo con la Figura 1.8, el tiempo del ciclo de escritura es mayor que el tiempo del pulso de escritura de una RAM. 7.18. Acudir a la Figura 7.8. La entrada R/Wa la RAM es puesta en el nivel BAJO porla señal de control ___ del microprocesador. Solución: De acuerdo con la Figura 7.5, la señal de control WR de la MPU pone la entrada R/W de la RAM al nivel BAJO durante una operación de escritura. 7.4. INTERFACES BASICAS DE ENTRADA/SALIDA Una operación de entrada o salida es el acto de transferir datos a o desde un dispositivo periférico seleccionado. El microprocesador es el foco de todas las operaciones, por tanto una entrada significa que el dato fluye hacia la MPU mientras que una salida significa que el dato fluye de http://librosysolucionarios.net la MPU. Acp salida. De la tabl microprocesac a y desde los ~ das en la Figu programas en co IN. Los ra 7.9a, dondt puerto. Se pue las 8 líneas de adicionales de OUT, se utilü bién requiere (l/lTR). Amb provienen del en la Figura 7 Las transfe ladas por pro~ durante las op sitivo periféric utilizan intem petición de ÍI servicio de in¡j incluir operae Existen do en la Figura i posiciones de ' E/S de mapa t esta téCnica se ción «(almacer misma figura. puerto o dispc das y utiliza~ habituales de datos. Cualqu utilizando la t La técnica con cualquier sadores que te control de loo Es común sin embargo. I un dispositi\C sistema repres da>; y (adapta~ res de interfaz ·l , ., " L ~ : la Fi­ nivel t Ior de us en­ ~ De los cción Illoria J ~c j ~~. -t<l· ~~. t sador iando ~ ¡a] idas lue el ~de I señal de la erico rada ;e de ~ ~ INTERFACES CON EL MICROPROCESAOOR 225 la MPU. Aquellas posiciones donde el dato entra o sale, se denominan puertos de entrada o salida. De la tabla de instrucciones de transferencia de datos de la Figura 6.21, se deduce que el microprocesador genérico utiliza las instrucciones IN (Entrar) y OUT (Salir) para transferir datos a y desde los puertos de entrada/salida. Estas instrucciones de transferencia de datos están ilustra­ das en la Figura 7.9a. La instrucción de salida está representada por el nemotécnico OUT en los programas en lenguaje ensamblador, mientras que la instrucción de entrada utiliza el nemotécni­ co IN. Los formatos de instrucción para estas operaciones se reproducen en la Figu­ ra 7.9a, donde aparece el código de op seguido de un número de dispositivo o dirección del puerto. Se puede seleccionar uno de 256 (2 8) puertos, ya que la dirección del puerto proviene de las 8 líneas de dirección menos significativas (A o-A 1 ). La Figura 7.9a también muestra dos señales adicionales de control de salida del microprocesador genérico. Cuando se utiliza la operación OUT, se utiliza una señal especial de escritura de entrada/salida (l/O W), la operación IN tam­ bién requiere el uso de una señal de salida especial llamada señal de lectura de entrada/salida (lIOR). Ambas señales de salida son activas en el nivel BAJO y la Figura 7.9a muestra que provienen del microprocesador. El uso de señales especiales de control, tales como WW e TíiJ"R en la Figura 7.9a, se conoce como entrada/salida aislada o por acumulador. Las transferencias de datos que utilizan las instrucciones IN y OUT se denominan E/S contro­ ladas por programa. Las instrucciones de programa están controlando las transferencias de datos durante las operaciones IN y OUT. Las transferencias de datos pueden ser iniciadas por el dispo­ sitivo periférico cuando dice «Estoy listo para enviar o recibir datos». Los dispositivos periféricos utilizan interrupciones para iniciar la acción de la MPU. Recordar que cuando la MPU recibe una petición de interrupción, finaliza la instrucción que está ejecutando y salta a una rutina de servicio de interrupción en la memoria de programa. Esta rutina de servicio de interrupción puede incluir operaciones de entrada y salida. Existen dos técnicas de E/S controladas por programa. La técnica de E/S aisladas se observó en la Figura 7.9a utilizando las instrucciones especiales IN y OUT. La otra técnica trata a las posiciones de entrada y salida como direcciones regulares de memoria. Esta técnica se denomina E/S de mapa de memoria (o con correspondencia en el espacio de direcciones de memoria). Con esta té~nica se utilizan instrucciones regulares de acceso de memoria. En la Figura 7.9b la instruc­ ción «almacena A directo» se utiliza para sacar datos a un puerto de salida. A continuación, en la misma figura, la instrucción regular «carga A directo» se utiliza para introducir datos desde un puerto o dispositivo. En la Figura 7.9b se observa que las líneas de dirección deben ser decodifica­ das y utilizadas para seleccionar la dirección exacta de un puerto de entrada o salida. Las señales habituales de control de escritura (WR) y lectura (RD) también se utilizan para entrar o sacar datos. Cualquier instrucción de acceso de memoria puede utilizarse para entrar y sacar datos utilizando la técnica de E/S de mapa de memoria. La técnica de E/S de mapa de memoria es, probablemente, la más común y puede utilizarse con cualquier microprocesador. La técnica de E/S aisladas puede utilizarse sólo con microproce­ sadores que tengan instrucciones IN y OUT separadas, entradas/salidas especiales y salidas de control de lectura y escritura. Es común referenciar una salida como «salida a un dispositivo periférico». En la práctica real, sin embargo, la salida del microprocesador no va directamente a un dispositivo periférico, sino a un dispositivo de memoria que almacena el dato para el periférico, como puede verse en el sistema representado en la Figura 7.1. Los bloques etiquetados «adaptador de interfaz de entra­ da» y «adaptador de interfaz de salida» son dispositivos de memoria. Es común que los adaptado­ res de interfaz de E/S tengan características distintas de las de memoria. http://librosysolucionarios.net •, 226 FUNDAMENTOS DE LOS MICROPROCESADORES Formato de la instrucción Código de operación Instrucción de salida (OUT) DIrección del puerto ------~AIS (l6} MPU Dirección I Señal de del puerto escritura de entrada/salida Un di Observar interfaz ( «almacer línea .4., después. nivel BA nivel AL entonces que el L fundame: Fonnato de la instrucción Código de operación Instrucción de entrada (IN) Dirección del puerto ------~-;1IS (16) f MPU A 1S Ao • IIOR , ~ Dirección Sellal de lectura del puerto de entrada/salida (a) Instrucciones de E/S aisladas y señales MPU Formato de la instrucción Código de operación Instrucción de salida (STA)-almacena A directo Dirección de orden inferior AI5 Dirección de orden superior 1 MPU Ao ~ WR , (16) Dí rección Sellal de del puerto escritura (salida) A'5 Fonnato de la instrucción Código de operación Instrucción de entrada (LDAj-carga A directo Dirección de orden inferior Dirección de orden superior _------1 A¡S MPU t ~I.---;~ ~. . '1 ~ ( 6 )1 + DireccIón Señal de del puerto lectura (entrada) 11 (b) Instrucciones de E/S de mapa de memoria y señales MPU Figura 7.9. http://librosysolucionarios.net .~ - ----1 , .~ UII ,,'... .,:"~, ;; t .... ~ ~ 227 INTERFACES CON EL MICROPROCESADOR Un dispositivo periférico y una interfaz elemental de salida y se muestran en la Figura 7. lOa. Observar que el indicador de salida es un sencillo diodo emisor de luz (LEO). El adaptador de la interfaz de sa1ida contiene un flip-flop D. Suponer que la MPU está ejecutando la instrucción «almacenar A directo» y que el acumulador contiene 0000000 l. Suponer la dirección 8oo0H, la línea A 1S está en el nivel ALTO y activa la entrada inferior de la puerta ANO. Inmediatamente después, aparece un nivel ALTO en la línea del bus de datos (Do)' La señal de control (WR) va al nivel BAJO, activando la puerta ANO. Esto hace que el bit 1 se almacene en el flip-flop D. El nivel ALTO en la salida Q del flip-flop hace que luzca el LEO o indicador de bit. La MPU entonces procede con otras actividades, pero el adaptador de interfaz de salida (memoria) hace que el LEO siga luciendo. La idea ilustrada para un solo bit de datos en la Figura 7.1 Oa es fundamental para todas las salidas. Dispositivo periférico Adaptador de la interfaz de salida AI5 - Do I?o 1" MPU D7 Ao D ¡;...­ - Q~LED Q >Ck r - WR < 1: -- D­ (a) \\ Interfaz de un simple indicador LED del bit de salida ¡ Adaptador de la interfaz de salida 1 Al~ 115 - Ao MPU I?J Dr --+­ (8) D7 Ds ro-- WR QI Q2 Q3 Q4 Qs Línea de control de escritura Línea de selección de dispositivo (b) _~ 1 - }­ Q6 Q7 Q8 Habilitado Interfaz del visualizador de siete segmentos Figura 7.10. http://librosysolucionarios.net Dispositivo periférico a b .. e d e f g p.d. av .~ V 'S l' I 1 ~. ;¡! tt !:!'19 -,\~l; I •• ithe +,!Iy,httr: ~ 228 FUNDAMENTOS DE LOS MICROPROCESADORES Dispositivo periférico Adaptador de la interfaz de entrada ALTO Q-[? D Y BAJO ...-- >Ck l A,s Línea de selección de dispositivo "'" - Linea de control de lectura 1u MPU Ao I?o D1 Do --­ RD Interfaz de una entrada de conmutador (a) Adaptador de la interfaz de entrada Dispositivo periférico D D D O D O O O D D D D --+-­ Cerrojos de datos - - Cerrojos de datos -(8) -Habilitado 11 (8) Habilitado 1 . La interfa la MPU, vía 8 bits en la fe que la salida dato en el "i punto decim~ salida Q del e Otro períf periférico es • conecta una l de entrada. e memoria 800 salida, permit bus de datos, inhabilita la I interfaz de en sobre otras Ir. La técnica líneas de direI línea de selea Aquí un dato direccionamie La E/S de 68000, 6502 , utilizadas por" 7.19. Una m utiliza ¡ Soludrál Bus de datos Una técnica ( les de al I Linea de selección de dispositivo ."'I'lII ~IS Línea de control de lectu-;;;:-- Ao l!o MPU D1 ~.) 7.20. La técn memori Solución La te. ria se de: RD (b) Interfaz de entrada de teclado Figura 7.11. http://librosysolucionarios.net 7.21. Si las sa están C( E/S J INTERFACES CON EL MICROPROCESADOR 229 La interfaz de salida de la Figura 7.lOb es algo más complicada. Transfiere 8 bits de datos de la MPU, vía bus de datos, al adaptador de interfaz de salida, que los almacena en un cerrojo de 8 bits en la forma habitual. Observar que la línea de dirección AI5 debe estar en ALTA mientras que la salida de control de escritura (JP'R) debe ser un pulso BAJO durante el tiempo que esté el dato en el visualizador LEO de siete segmentos. Cada segmento del visualizador LEO (a-g y punto decimal) actúa exactamente como el LEO de la Figura 7.1 Oa. Un nivel ALTO en cualquier salida Q del cerrojo hará que luzca el segmento. Otro periférico elemental y dispositivo de interfaz se muestra en la Figura 7.11 a. El dispositivo periférico es un sencillo conmutador que selecciona un nivel ALTO o un nivel BAJO. Sólo se conecta una línea de entrada a la entrada D del flip-flop de datos dentro del adaptador de interfaz de entrada. Cuando la MPU ejecuta una instrucción como «cargar A directo desde la posición de memoria 8000H», la puerta ANO se activa, encerrando el dato de entrada. Se habilita el buffer de salida, permitiendo que el dato pase a través de la línea del bus de datos (Do). La MPU acepta, del bus de datos, el bit de dato ALTO y lo transfiere al acumulador. Inmediatamente después, se inhabilita la puerta ANO, desactivando el buffer del bus de datos. La salida de adaptador de interfaz de entrada está ahora inhabilitada y en su estado de alta impedancia y no tiene efecto sobre otras transferencias del bus de datos. La técnica de entrada, de mapa de memoria, se utiliza en la Figura 7.11. Normalmente, varias líneas de dirección deben ser decodificadas por un decodificador de direcciones para activar la línea de selección de dispositivo. La Figura 7.11 b es una extensión de la entrada de un solo bit. Aquí un dato paralelo de 8 bits se introduce desde un teclado. El control de lectura (RD) y direccionamiento simple son los mismos que se utilizaron en los ejemplos anteriores. La E/S de mapa de memoria se utiliza con los microprocesadores comunes como 6800, 6809, 68000, 6502 Y 65816. Las E/S aisladas (a veces llamadas también E/S de canal de datos) son utilizadas por los microprocesadores comunes como 8080/8085, Z80, 8086,8088 Y Z8000. PROBLEMAS RESUELTOS 7.19. Una microcomputadora que utiliza las instrucciones especiales IN y OUT se dice que utiliza la técnica de E/S _ _ (aisladas, de mapa de memoria). Solución: Una microcomputadora que utiliza las instrucciones especiales IN y OUT se dice que utiliza la técnica de E/S aisladas. El uso de esta técnica depende que el microprocesador tenga salidas especia­ les de control tal como lectura y escritura de E/S. 7.20. La técnica de E/S que trata los puertos de entrada y salida como direcciones regulares de memoria se denomina de E/S ___ (aisladas, de mapa de memoria). Solución: La técnica de E/S que trata los puertos de entrada y salida como direcciones regulares de memo­ ria se denomina de E/S de mapa de memoria. 7.21. Si las salidas de control de lectura (lID) y escritura (WR) de memoria de la MPU normal están conectadas a adaptadores de interfaces de E/S, se está utilizando la técnica de E/S (aisladas, de mapa de memoria) . http://librosysolucionarios.net i II 1 111 11 ¡ti lit! JU Ut! 230 H¡I:¡f , AJNDAMENTOS DE LOS MICROPRIX'ESAOORES Solución: Si las salidas de control de escritura (WR) y de lectura (RD) de memoria de la MPU normal están conectadas a adaptadores de interfaces de E/S, se está utilizando la técnica de E/S de mapa de me­ moria. 7.22. En la Figura 7.11 b se transfiere un dato al acumulador de la MPU después de que la línea de dirección AI5 alcanza el nivel ___ (ALTO, BAJO) y la línea de control de lectura (RD) alcanza el nivel _ _ (ALTO, BAJO), lo que habilita los cerrojos y buffers. Dec cad. dirro .. Solución: El dato es transferido al acumulador de la MPU. en la Figura 7.11b, después de que la línea de dirección AI5 alcance el nivel ALTO y la línea de control de lectura (RD) alcance el nivel BAJO, lo cual habilita a los cerrojos y butTers. 7.23. Durante la operación de entrada, la MPU de la Figura 7.llb está ejecutando, probable­ mente, la instrucción _ _ (IN, LOA). Solución: Este sistema está utilizando la técnica de E/S de mapa de memoria. Con esta técnica se utilízan instrucciones de transferencia de datos de referencia regular de memoria. Por tanto. durante la operación de entrada la MPU de la Figura 7.llb está ejecutando, probablemente. la instrucción LOA (carga A directo). ." ¡J ij ¡ 7.24. Cuando están habilitados, los buffers de datos _ _ (bloquean, permiten) el paso de los datos de los cerrojos al bus de datos. Solución: Cuando están habilitados, los butTers de datos, permiten el paso de los datos de los cerrojos al bus de datos. 7.25. Acudir a la Figura 7.11 b. ¿A qué dirección responderá la interfaz de entrada? Solución: Siempre que la línea de dirección más significativa (A 15) esté en ALTA, se activa la línea de selección de dispositivo. Este no es un método práctico de direccionamiento, porque los 32K (los ocho segmentos inferiores de 4K de la Figura 7.3) serán utilizados por este dispositivo de salida. ALTO - salida ( BAJO - entrad¡ i 1 I ~ J Figura 7 7.5. INTERFAZ CON PUERTOS PRACTICOS DE ENTRADA/SALIDA Los fabricantes producen circuitos de interfaz de E/S en forma de el. Uno de estos CI es el puerto de entrada/salida Intel 8212 de 8 bits. Este CI puede utilizarse como adaptador de puerto de entrada o salida. Un microprocesador similar a la MPU genérica o al Intel8080 se muestra en la Figura 7.12, conectado a un visualizador de siete segmentos, utilizando el puerto de E/S 8212. Este puerto sirve como adaptador de interfaz de salida de este sistema. El visualizador de siete segmentos es el dispositivo periférico. La MPU utiliza la técnica de E/S aisladas en este diagrama. Observar que con esta técnica la línea de selección de dispositivo de salida se decodifica completamente con las 8 líneas de dirección menos significativas (A II -A 7 ), también se utiliza una salida especial de con­ http://librosysolucionarios.net 1 ,~ trol de escritur. Recordar que la El el del PI determina al ob esto ocurre, el 8 a las 8 líneas de (DOo-D07 ) del puerto de E/S d un nivel ALTO entradas de sele .----- -- . '''''• •IJIIi'l!• •¡;¡;¡~~~~-;:-::;'i.-----------------------------~l''h. - INTERFACES CON EL MICROPROCESADOR 231 !. . I estáII :le me­ c-­ Decodifi­ cador de direcciones tlínea .1 7 lm" ......-­ - .1 15 MPU (16) .1 0 .4 0 I!o ''4y, l\1}J D7 ~ I¡OW :ctura Linea de control de escritura 'o L-----------l[lllool l' : \ Puerto de E/S Intel 8212 DSl Linea de selección de dispositivo ~------------------------~DS2 bable­ Cerrojo de datos Control del modo ALTO - salida ) (BAJO = entrada ALTO lIilizan IDte la ucciÓII Dh~~ _______~ DIo --------1 MDI--~B~u""l'ffi~ers----1 \ ALTO ----------<(]CLR CLR de salida D07.· .. DOo Adaptador de la interfaz de salida de los av .0 n ¡al bus Dispositivo perirérico r ...IC:ade 'os Figura 7.12. t '-';0 :10 de -¡2. lUeno ses el Ir que [)n las ~ con­ i.... ~:: ~~ j, f Interfaz con visualizador de siete segmentos utilizando el puerto de E/S de Intel 8212. trol de escritura de entrada/salida (1llJW) que se ha añadido a la MPU de la Figura 7.12. Recordar que la técnica de E/S aisladas sólo permite el uso de las instrucciones IN y OUT. El el del puerto de E/S 8212 se utiliza como puerto de salida en la Figura 7. 12. Esto se determina al observar que la entrada de control de modo (MD) al 8212 está en ALTA, y cuando esto ocurre, el 8212 está en el modo de salida. Las líneas del bus de datos de la MPU se conectan a las 8 líneas de entrada de datos (DIo-DI,) del puerto de E/S 8212. Las 8 líneas de salida de datos (DOo-D07 ) del 8212 están conectadas a las entradas del visualizador LED de siete segmentos. El puerto de E/S del 8212 tiene una entrada de borrado, pero en este circuito está inhabilitada con un nivel ALTO. Internamente el 8212 tiene ocho cerrojos de datos y bufTers de salida. Las 2 entradas de selección de dispositivo (liSI, DS2) son entradas de control para el pueno de E/S "-"2 http://librosysolucionarios.net t "t. - -..."' LI] 232 RJNDAMENTOS DE LOS MICROPROCESADORES 8212 cuando se usa en este modo. Cuando 15Sl está activada por un nivel BAJO y DS2 por un nivel ALTO, el dato del bus de datos se cargará en los cerrojos y aparecerá también en las patillas de salida (DOo-D07 ), activando así los segmentos del visualizador LEO. La operación del puerto de E/S 8212, mientras se utiliza en el modo de salida, se detalla en la Figura 7.13. Observar en el diagrama de tiempos que tan pronto como son activadas, las señales de control de entrada (lJSI y DS2), el dato de entrada se almacena en el puerto de E/S y está disponible en las patillas de salida. En el modo de salida, los bufTers de salida están permanente­ mente habilitados, por lo que los datos almacenados aparecen en las patillas de salida aún después que las patillas de control 15S1 y DS2 vuelvan a sus estados de inhabilitación. 7.29. LaeJ direo SoIDCi DI por e! compl 7.30. Los t mieol qUeaJ SoJuci Sehales en el puerto de E/S Intel 8212 Modo de salida Lo su mo Entrada de datos (Dlo-DI7 Senales { de control de entrada Datos de entrada activa Soluci Fl entrad DSI DS2 Salida de datos DOo-D07 Figura 7.13. 7.31. Acudi 7.32. El siSl _ _ _ _ _J Los datos del cerrojo aparecen en las patillas de salida Diagrama de tiempos. Señales de E/S del puerto durante el modo de salida. PROBLEMAS RESUELTOS 7.26. Los datos que llegan a los terminales DIo a DI7 del puerto de E/S 8212 en la Figura 7.12 de me Soluci Fll , .. 7.6. SNC DE D provienen del bus de ___ (direcciones, datos) del sistema basado en microprocesador. Solución: De acuerdo con la Figura 7.12, los datos que llegan a los terminales DIo· a DI7 del puerto de E/S del 8212 provienen del bus de datos del sistema basado en microprocesador. 7.27. El puerto de E/S 8212 en la Figura 7.12 se utiliza como puerto de _ _ (entrada, salida) paralelo de 8 bits en este diagrama. Solución: El puerto de E/S 8212 en la Figura 7.12 se utiliza como puerto de salida paralelo de 8 bits en este diagrama. ¡ , 7.28. La entrada 15S1 al 8212 de la Figura 7.13 es generada por _ _ (el decodificador de direcciones, la señal 110 W de la MPU). Solución: De acuerdo con la Figura 7.12, la entrada DSl al puerto de E/S del 8212 es generada por la señal l/O W de la MPU. http://librosysolucionarios.net Hasta este P'l un puerto en; ser así, ya qu velocidad qu, de datos. ést< La técmc más simple d del escrutinic Suponer I dor de entrad 7.11 a pueder tador de ¡me] construir un entrada y ese de lectura-es( la salida cada ________----~--. . . . . . $.~.. .. . . .2ñ~. .--------. .----. . . . . . . . . . . . . . . . . .~U;~. ~ ~i.i r' INTERFACES CON EL MICROPROCESADOR por un s patillas illa en la s señales rs y está !1anente­ después L - l ;¡ da. Solución: De acuerdo con la Figura 7.12, la entrada de control DS2 del puerto de E/S del 8212 es generada por el decodificador de direcciones. Las 8 líneas de dirección menos significativas son decodificadas completamente en este sistema, lo que significa que están disponibles 256 dispositivos de salida. 7.30. Los buffers de salida del 8212 están permanentemente (inhabilitados, habilitados) mientras la unidad está en su modo de salida. Esto significa que los buffers ___ (blo­ quean los datos de, pasan los datos a) las salidas de datos (DOo-D07 ). 7.31. Acudir a la Figura 7.13. El dato está encerrado en el puerto de E/S 8212 cuando están activadas ambas entradas de control ___ y ___ . t¡, Solución: El dato está encerrado en el puerto E/S 8212 en la Figura 7.13 cuando están activadas ambas entradas de control DSl y DS2. 7.32. El sistema de la Figura 7.12 utiliza la técnica de interfaz de E/S __ (aisladas, de mapa de memoria). o _ Solución: El sistema de la Figura 7.12 utiliza la técnica de interfaz de E!S aisladas. , ! p.u37.12 cesador. t-: Je E/S L salida) ÍIS en este ~orde r 7.29. La entrada DS2 al 8212 de la Figura 7.13 es generada por _ _ (el decodificador de direcciones, el bus de datos de la MPU). Solución: Los btiffers de salida del 8212 están permanentemente habilitados mientras que la unidad está en su modo de salida. Esto significa que los buffers pasan los datos a las salidas de datos (DO o-D07 ). L j 233 ,..la señal 7.6. SINCRONIZACION DE TRANSFERENCIAS DE ENTRADA/SALIDA DE DATOS MEDIANTE INTERRUPCIONES Hasta este punto se ha supuesto que cuando el programa autorizaba a la MPU una entrada desde un puerto era porque había un dato válido disponible en esa posición. Sin embargo, éste puede no ser así, ya que los dispositivos periféricos (como por ejemplo un teélado) no actúan a la misma velocidad que la MPU. Por esta razón existen varias técnicas de sincronización de transferencia de datos, éstas son las de escrutinio (polling) y las interrupciones. La técnica de escrutinio también se denomina de E/S programada. El escrutinio es el método más simple de sincronización de E/S y se utiliza en las aplicaciones dedicadas pequeñas. La idea del escrutinio es entrar o sacar datos, utilizando un lazo de escrutinio en el programa. Suponer un sistema extremadamente simple, basado en MPU, que utilice un solo conmuta­ dor de entrada y un solo indicador LED de salida. Los sistemas mostrados en las Figuras 7.1 Oa y 7.11 a pueden combinarse utilizando una sencilla MPU, un conmutador de entrada con un adap­ tador de interfaz de entrada y un LED de salida con un adaptador de interfaz de salida. Se puede construir un lazo de escrutinio, extremadamente sencillo, para leer primero el conmutador de entrada y escribir después esta condición en el indicador LED de salida. En este ejemplo, el lazo de lectura-escritura-lectura-escritura- etc., seria continuo. La MPU escruta la entrada y actualiza la salida cada pocos microsegundos. http://librosysolucionarios.net ~t· .".,.,i I . . . . .s. ~ 234 ··jJ.lih~f FUNDAMt::NTOS DE LOS MICROPROCESADORES El lazo de escrutinio más común puede consistir en escrutar los dispositivos de E/S. La MPU pregunta al primer dispositivo si necesita servicio. La necesidad, o no necesidad, de servicio está indicada por el valor verdadero, o falso, de un señalizador. Si el dispositivo necesita servicio, la MPU presta servicio a ese dispositivo, si no lo necesita, la MPU va al segundo dispositivo de E/S, etcétera. El sistema representado en la Figura 7.14 utiliza una línea de petición de interrupción para notificar al microprocesador cuando está listo un dato para ser transferido a la CPU. Recordar que el microprocesador genérico tenía una entrada de petición de interrupción (INTR). Cuando se activaba con un nivel ALTO, la MPU finalizaba la instrucción actual, almacenaba los conteni­ dos del registro actual y del contador de programa en la pila y saltaba a una rutina especial de servicio de interrupción. Después de atender la interrupción, la MPU continuaba la ejecución del programa principal. En este ejemplo, la rutina de servicio de interrupción puede ser tan sencilla como introducir y almacenar entradas del teclado. o O D. O D O O O O Línea de strobe ALT0- salida ) (BAJ O = entrada BAJO STB Control del modo ALTO Dispositivo periférico (teclado) MD "" Línea de selección de dispositivo CLR DI, Adaptador de la interfaz de entrada DIo BulTers de salida Cerrojos de datos DS2 Línea de lectura de E/S Po (8) D7 ~' - DSl Puerto de E/S lntel 8212 Consi, do utilizal modo (JI entrada. L dato para sistema. l. dispositin palabra de ALTOW Estos e\er nuevo, es DeaCL dato está e ción de sal de interrul Las forma: do en el t>. Observar « diatamem. bilitación. Consid utiliza en c "" t ( Señales e de E/S 1 Entrada de daI Entrada .:k INT r- .. Línea de petición de _ interrupción IjOR A7 '-- Decodificador de direcciones ~ Ao ...-..- 115 ~",.. POo MPU (16) Controles del bulTer ' () D07 Ao (8J ~ INTR Figura 7.14. Interfaz con el teclado utilizando el puerto de E/S Intel 8212 con una sola interrupción. http://librosysolucionarios.net Salidas _ bus de da Salida de interrupo Figura 7.1! INTERFACES CON EL MICROPROCESAOOR l! la la 5.. la • k IIÍ­ J. • 235 Considerar el sistema de la Figura 7.14. El microprocesador está interconectado con un tecla­ do utilizando el CI puerto de E/S Intel 8212 como adaptador de interfaz de entrada. El control de modo (MD) del 8212 está en el nivel BAJO, lo que significa que opera como un adaptador de entrada. La entrada de borrado (eLR) a la unidad 8212 está inhabilitada con un nivel ALTO. El dato paralelo de 8 bits del teclado llega a las entradas de datos (Dlo-Dli ) del 8212. En este sistema, la entrada STB controla los cerrojos de datos. mientras las entradas de selección de dispositivo del 8212 (15SJ y DS2) controlan los buffers de salida. El teclado debe colocar una palabra de 8 bits en la entrada de datos de la unidad 8212 y también debe producir un pulso ALTO (strobe) para almacenar este dato en los cerrojos, de datos, internos del puerto de E/S. Estos eventos están representados en la Figura 7.15 por las tres formas de onda superiores. De nuevo, es el «strobe» ALTO del teclado el que almacena los datos en el puerto de E/S 8212 . De acuerdo con la forma de onda inferior de la Figura 7.15, inmediatamente después que el dato está en los cerrojos de datos, la circuitería de la unidad 8212 produce un pulso de interrup­ ción de salida (lNI). Algún tiempo después de que este pulso llegue a la MPU, vía línea petición - de interrupción, son habilitados los controles del buffer de salida de la unidad 8212 (15"81 y DS2). Las formas de onda tercera a sexta de la Figura 7.15 muestran que el dato almacer.lado es coloca­ do en el bus de datos, durante un corto tiempo, por los controles DSI y DS2 de la unidad 8212. Observar que las salidas del puerto de E/S 8212 vuelven a su condición de tres estados, inme­ diatamente después de que los controles del buffer (DSI y DS2) vuelven a su estado de inha­ bilitación. Considerar de nuevo la interfaz del teclado de la Figura 7.14. La técnica de E/S aisladas se utiliza en este sistema. La señal de control especial de lectura de entrada/salida (l/O R) activa la Señales en el puerto de E/S Intel 8212 Modo de entrada Entrada de datos (D/o-Dl? ____ Datos de __entrada --J ~~---- Entrada de strobe STB Cerrojos de datos Controles { del buffer Almacenados en cerrojos DSl DSl Salidas al DO -D0 bus de datos Salida de interrupción Figura 7.15. o __________________ _ 7 Diagrama de tiempos. Señales del puerto de E/S durante el modo de entrada con una sola interrupción. I [ http://librosysolucionarios.net l 1­ .... ________________. . . . . . . . 'b~ 236 FUNDAMENTOS DE LOS MICROPROCESADORES entrada DSl de la unidad 8212. Las 8 líneas de dirección menos significativas (A o-A 7 ) son . decodificadas completamente por el decodificador de direcciones, cuya salida activa la entrada DS2 del 8212, vía la línea de selección de dispositivo. Recordar que en este sistema las entradas DSl y DS2 controlan los buffers de salida del puerto de E/S 8212. Observar que se coloca un inversor en la línea de petición de interrupción, este inversor convierte la salida INT, activa en BAJO, del 8212 en la entrada INTR, activa en ALTO, de la MPU. La interrupción es un método de informar al microprocesador que un dispositivo de E/S está «listo» y de la acción que necesita tomarse. La subrutina especial que realiza esta acción se denomina rutina de servicio de interrupción. Si hay varios dispositivos capaces de interrumpir la MPU, se puede realizar la operación lógica OR con las líneas de petición de interrupción y la CPU tendrá que «encontrar» el dispositivo de E/S que provocó la interrupción. El proceso de «búsqueda» puede involucrar la técnica de escrutinio mencionada anteriormente y se denomina esquema de escrutinio de interrupciones. Asociado a cada puerto de E/S en un esquema de _ escrutinio de interrupción hay un puerto de status cuyo código dice a la MPU si el puerto está «listo» para ser introducido o recibir alguna salida. Algunos microprocesadores tienen varias entradas e instrucciones de interrupción para habili­ tar e inhabilitar, al menos, algunas de estas entradas de interrupción. Muchos microprocesadores utilizan esquemas de vectores de interrupción donde la MPU sabe qué dispositivo de E/S está interrumpiendo y salta a la correspondiente rutina de servicio de interrupción. Muchos micropro­ cesadores tienen también métodos para determinar la prioridad de servicio cuando se reciben a la vez dos interrupciones, lo que se denomina, a veces, arbitración de la prioridad de interrupciones. Esta circuitería decide qué dispositivo debe ser atendido primero. Para realizar esta tarea habi­ tualmente se necesita un CI separado, como por ejemplo la unidad de control de prioridad de interrupciones Intel 8259. Las ventajas del escrutinio sobre las interrupciones son que requiere menos hardware para las interfaces y como está bajo control del programa es síncrona; las desventajas son que requiere excesivo software, gasta tiempo de MPU y, si hay que escrutar muchos dispositivos, se puede tardar bastante tiempo en responder a un dispositivo de E/S que necesite servicio. Las ventajas de las interrupciones sobre el escrutinio son respuestas más rápidas, mejor uso del tiempo de la MPU y necesidad de menos software. Las desventajas son su operación asíncro­ na y la necesidad de más hardware para las interfaces. 7.35. AaI (enI SoII niw 7.36. Aa iDIII pul! tem SeII 82J del! 7.37. Baj del al. eIa) Soll Jbol 7.38. La Sol 7.39. LiI téc1 Sol los PROBLEMAS RESUELTOS 50ft mi 7.33. Una petición de interrupción se envía a la MPU cuando un puerto de E/S ___ (no está listo, está listo) para el servicio. Solución: Una petición de interrupción es iniciada por un dispositivo de E/S. 7.34. Una petición de interrupción se envía a la MPU cuando un puerto de E/S ___ (no está listo, está listo) para el servicio. Solución: Una petición de interrupción se envía a la MPU cuando un puerto de E/S está listo para el ser­ VICIO. http://librosysolucionarios.net -1 7.7. DE ¡ En la Figt ser introdl tran t~ entrada y desde el éi sistema U1 l _.,'-­ , I son INTERFACES CON EL MICROPROCESADOR 7.35. rada Idas l un iI está bili­ 7.36. Para que los datos del teclado sean almacenados en los cerrojos internos de datos de la unidad 8212 de la Figura 7.14, la entrada de strobe debe ser un pulso ALTO. Este pulso proviene del teclado del sistema. 7.37. Bajo la ejecución de la instrucción IN (entrar), la MPU de la Figura 7.14 hace que la línea de lectura de E/S vaya al nivel BAJO y la línea de selección de dispositivo al ALTO. Esto habilita los buffers de salida del puerto de E/S 8212. ahi­ I de I :stá ser- Bajo la ejecución de la instrucción IN (entrar), la MPU de la Figura 7.14 hace que la línea de lectura de E/S vaya al nivel _ _ (ALTO, BAJO) y la línea de selección de dispositivo al nivel _ _ (ALTO, BAJO). Esto habilita los _ _ (cerrojos de datos, buffers de sali­ da) en el puerto de E/S 8212. Solución: "es. liere lCde Acudir a la Figura 7.14. Para que los datos del teclado sean almacenados en los cerrojos internos de datos de la unidad 8212. la entrada de ___ (borrado, strobe) debe ser un pulso _ _ (ALTO, BAJO). Este pulso proviene _ _ (del teclado, de la MPU) del sis­ tema. Solución: está pro­ ala alas Acudir a la Figura 7.14. El puerto de E/S 8212 está operando en su modo de _ _ (entrada, salida) en este circuito. El puerto de E/S 8212 de la Figura 7.14 está operando en su modo de entradá en este circuito. El nivel BAJO en la entrada de modo (MD) coloca a este puerto de E/S en el modo de entrada. ir la y la ) de Ilina l de está ores 237 Solución: en ose 4 7.38. La escrutación a veces se denomina E/S ___ . ¡ t ¡. ' Solución: La escrutación a veces se denomina E/S programadas. 7.39. Listar las ventajas e inconvenientes de las interrupciones sobre el escrutinio como una técnica de sincronización de E/S. ,1 Solución: Las ventajas de utilizar las interrupciones son que responden rápidamente a las necesidades de los dispositivos de E/S para el servicio, hacen mejor uso del tiempo de la MPU y utilizan menos software. Las desventajas de utilizar interrupciones son su naturaleza asíncrona y la necesidad de más hardware para las interfaces. 7.7. DECODIFICACION DE DIRECaONES En la Figura 7.16 se muestra un sencillo sistema basado en microprocesador. Los datos pueden ser introducidos, vía el teclado, y sacados a un simple visualizador de siete segmentos. Se mues­ tran todas las líneas de selección de datos y de control. Los adaptadores de las interfaces de entrada y salida son puertos de E/S Intel 8212. La sincronización de la transferencia de datos desde el adaptador de la interfaz de entrada se realiza utilizando un sencillo interruptor. El sistema utiliza la técnica de E/S de mapa de memoria, tratando así los puertos de E/S como http://librosysolucionarios.net 1 j .. " '~ 238 FUNDAMENTOS DE LOS MICROPROCESADORES DO O O DO O [] DO O O posiciones nes anteric utilizar en El diagJ vas (A I2 -A Teclado 1.1(8) 1 ~., Strobe .' Linea de selección de dispositivo BAJO (9000-9FFF) Control del modo STB Decodificador de direcciones A 1S (4) - Línea de selección de dispositivo ¡OOOO-OFFFH) D0 7 INT IÍJII -(»­ 3. Gel Do (16) ...-­ (12) '(81 MPU Ao (12) Línea de selección de dispositivo (2000-2FFFH) ~ .......... D, INTR f OE ~II 00 ROM de4K O, Ao ........ es - 1 :~ - Bus de datos OE - R/W ~Il IjOo RAM de 4K Ao Ij0 7 .. ... ~ ,. MS Linea de control de escritura_ - Línea de selección de dispositivo DSI (8000-8FFF) DS] ALTO Control del modo Puerto de E/S Dio Intel 8212 Dl7 MD D07 ·· .DOo ¡ti , .0 Figura 7.16. - Adaptador de la interfaz de salida (8) llu , inu Gel iall -:fIS WR o---ot- RD 12 2. Gel 4. \ -+< Intel 8212 IÍJII ~ Línea de petición de interrupcíón_ -4f--- A/;: ~ DSI Bus de direcciones 1. Gel Adaptador de la interfaz de entrada DOo M DI Pueno de E/S DS] Línea de control de lectura~.---. direccion~ Dl 7, , ,Dio Visualizador de siete segmentos Diagrama de un sistema basado en microprocesador. http://librosysolucionarios.net Un Ola almacenan número de selección ( localizan o do en las ( utiliza el se activarán e líneas de d no se nere maneraan dor de la ir sólo está p Una soi en la Figur un el dea demultiple La salida a tadas (So-~ nivel BAJ( ción del d decodifiC3( con un nh RAM. Si las 4 8 del deco que sea COI del adaptal decodifica( de entrada mente mru :1111Ulb, . r 5 3i INTERFACES CON EL MICROPROCESADOR '4 239 posiciones de memoria. Cada una de las interfaces individuales ha sido examinada en las seccio­ nes anteriores. Esta sección investigará la circuitería de decodificación de direcciones que se debe utilizar en tal sistema. El diagrama del sistema de la Figura 7.6 muestra las cuatro líneas de dirección más significati­ vas (A 12 -A 15) formando la entrada al decodificador de direcciones. Las tareas del decodificador de direcciones en este sistema son: l. Generar una salida BAJA para la línea de selección del dispositivo ROM cuando las 4 líneas de dirección más significativas sean 0000,. 2. Generar una salida BAJA para la línea de selección del dispositivo RAM cuando las 4 líneas de dirección más significativas sean 00 102' 3. Generar uQa salida ALTA para la línea de selección del dispositivo del adaptador de la interfaz de salida cuando las 4 líneas de dirección más significativas sean 10002, 4. Generar una salida ALTA para la línea de selección del dispositivo del adaptador de la interfaz de entrada cuando las 4 líneas de dirección más significativas sean 100 Ir Un mapa de memoria del sistema se muestra en la Figura 7.17. Las 4096 posiciones de almacenamiento de la ROM estarán localizadas en el segmento Oo direcciones 0000 a OFFFH. El número del segmento en este caso es el equivalente hexadecimal de 0000, que genera la señal de selección del dispositivo ROM. En el segmento 2 del mapa de memona de la Figura 7.17 se localizan otras 4096 direcciones. Estos 4K de memoria son RAM. El puerto de salida está ubica­ do en las direcciones del segmento 8 del mapa de memoria. mientras que el puerto de entrada utiliza el segmento 9. Observar que cualquiera de las 4096 direcciones desde la 8000 a la 8FFFH activarán el adaptador de la interfaz de salida. Esto es cierto porque sólo se decodifican 4 de las 16 líneas de dirección, lo cual se denomina decod(ficación parcial de direcciones y funciona bien si no se necesita añadir ningún otro dispositivo de salida que tenga direcciones en el segmento 8. De manera análoga, cualquiera de las 4096 direcciones desde la 9000 a la 9FFFH activará el adapta­ dor de la interfaz de entrada de este sistema. De nuevo, esto es cierto porque el bus de direcciones sólo está parcialmente decodificado. Una solución sencilla al problema de decodificación de direcciones de este sistema se muestra en la Figura 7.18. Para decodificar las 4 líneas de dirección más significativas (A I2 -A 1s ) se utilizan un CI decodificador l-de-16 y dos inversores. Recordar que el dec<oildificador (también llamado demultiplexor) actúa como un conmutador rotatorio, activando cada vez sólo una salida (0-15). La salida activada en el decodificador l-de-16 depende de las líneas de selección que estén habili­ tadas (So-SJ)' Además, si las líneas de selección están a 0000, entonces se activa la salida O con un nivel BAJO. La Figura 7.18 muestra que la salida O del decodificador alimenta la línea de selec­ ción del dispositivo de la ROM y selecciona el segmento O del mapa de memoria. Si en el decodificador 00 1O (S3 = O, S2 = O, SI = 1, So = O), se activa la salida 2 del decodificador l-de-16 con un nivel BAJO. La salida 2 se utiliza para habilitar la línea de selección de dispositivo de la RAM. Si las 4 líneas de dirección más significativas de la Figura 7.18 fuesen 1000" entonces la salida 8 del decodificador se activaría con un nivel BAJO. Un inversor complemeñta esta salida para que sea compatible con el pulso ALTO necesario para activar la línea de selección de dispositivo del adaptador de la interfaz de salida. De igual forma un 1001, en las entradas de selección del decodificador l-de-16 habilitarán la línea de selección de dispositivo del adaptador de la interfaz de entrada con un pulso ALTO. Las salidas no utilizadas pueden emplearse para añadir posterior­ mente más dispositivos periféricos o de memoria. http://librosysolucionarios.net , t > ~i J,; I '" ¡¡Si '31 id [1 1'.1 ::aULUiI . ; !lII.IC.4<.;gplJ;:¡fW;,.Q, 240 111 LA!' lt • • FUNDAMENTOS DE LOS MICROPROCESADORES 0000 ROM 4K OFFF 1000 IFFF 2000 RAM 4K 2FFF 3000 3FFF 4000 4FFF 5000 5FFF 6000 6FFF 7000 7FFF 8000 Salidas 8FFF 9000 Entradas 9FFF AOOO AFFF BOoo BFFF COOO CFFF 0000 ¡H DFFF EDOO .' EFFF FooO FFFF Figura 7.17. Mapa de memoria para el sistema basado en microprocesador. http://librosysolucionarios.net Figura ; Las dim decodificad todas las JXl mente deco teclado, qUI instrucción dato de la identificar l número hel Esquem: da y salida! entran al de 377m • L r • S INTERFACES CON EL MICROPROCESADOR .. ,..,.... - 241 Línea de !!elección de dispositivo ~ rl> O 15 0 14 O 13 O 12 O I1 010 9 8 Decodificador O 7 l-de-16 O 6 e5 e4 e3 ~ ~ , l Adaptador de la i nterfaz de entrada (9000 -9FFFH) :t" c{t '~. t~ ~'" 2 ~', ALTO '. C I r-<: o s) t: Entrada D S2 SI So I ~" .1 14 A" 413 l Líneas del bus de direcciones .1 12 Línea de !!elección de dispositivo (OOOO-OFFFH) Línea de selección de dispositivo (2000-2FFFH) Línea de selección de dispositivo ---[> Figura 7.18. (8000-8FFFHl Al a ROM AlaRAM Al adaptador de Ia interfaz de salida Utilización de un decodificador 1 de 16 como decodificador de direcciones. Las direcciones de la ROM y RAM de la Figura 7.16 están completamente decodificadas. La decodificación completa significa que se decodifican las 16 líneas y por tanto se puede acceder a todas las posibles direcciones. Sin embargo, las direcciones del puerto de E/S sólo están parcial­ mente decodificadas. Por ejemplo la instrucción «LOA, 9000H» debe introducir datos desde el teclado, que está referenciado como la posición de memoria 9000H. Considerar también la instrucción «LOA, 9FFFH». Esta instrucción indica a la CPU que cargue en el acumulador el dato de la posición 9FFFH, que en este caso también será el mismo dato del teclado. Para identificar un puerto de E/S con correspondencia en memoria (mapa de memoria) con un único número hexadecimal, el bus de direcciones de 16 bits debe estar completamente decodificado. Esquemas completos de decodificación de direcciones para adaptadores de interfaces de entra­ da y salida se muestran en la Figura 7.19. La Figura 7.19a muestra las 16 líneas de dirección que entran al decodificador de direcciones. Solamente cuando la dirección es 8000H la salida de la h 1, I 1, i 1 I di http://librosysolucionarios.net ¡, ..,l1li­ id: 242 :¡; • . ;~[¡;/J!"I.~'·i· FUNDAMENTOS DE LOS MICROPROCESADORES -- 'tJus de direcciones Dirección = 8000H o O O O O O O O O O O O O Microprocesador O O puerta NOR salida. Toda! BAJO, lo ql salida. La deccx: ilustra en la NOR vaya 2 selección de en el decodit Decodificador de direcciones ¡ j 7.40. (a) ve] Soluc:i Diagrama lógico para decodificar completamente el dispositivo de salida en la dirección 8000H Línea de selección de dispositivo (9000H) ....._ _ _ _ _ _ _.... Al adaptador de la interfaz de entrada Si activa 7.41. t i Sí la inte Decodificador de direcciones 7.42. , Acud adapt selecc Soluci l f f Acud (RA~ Línea de selección de dispositivo 8000H '------------100Al adaptador de la interfaz de salida Dirección = 9000H O O O O O O O O O O O O O Soluci Q la si5tea de dír decod .L.';" 7.43. Bus de direcciones I Acud tán_ Microprocesador Acud pletaJ Soluci La en es¡, por el (b) Diagrama lógico para decodificar completamente el dispositivo de entrada en la dirección 9000H Figura 7.19. http://librosysolucionarios.net 7.44. Acud S,= I vel_ :1 INTERFACES CON EL MICROPROCESADOR 243 puerta NOR producirá una señal ALTA de selección de dispositivo al adaptador de interfaz de salida. Todas las demás combinaciones posibles de las 16 entradas pondrán la salida en el nivel BAJO, lo que inhabilita la línea de selección de dispositivo y al adaptador de la interfaz de salida. La decodificación completa de direcciones para el adaptador de la interfaz de entrada se ilustra en la Figura 7.19b. La dirección 9000H es la única que hará que la salida de la puerta NOR vaya al nivel ALTO activando así al adaptador de la interfaz de entrada, vía la línea de selección de dispositivo. Cualquier otra combinación de ceros y unos producirá una salida BAJA en el decodificador de direcciones, lo que inhabilita al adaptador de la interfaz de entrada. PROBLEMAS RESUELTOS 7.40. Acudir a las Figuras 7.16 y 7.17. Si la MPU coloca 0300H en el bus de direcciones, la (RAM, ROM) se direcciona al activar su línea de selección de dispositivo con un ni­ vel _ _ (ALTO, BAJO). Solución: Si la MPU en la Figura 7.16 coloca 0300H en el bus de direcciones, la ROM se direcciona al activar su línea de selección de dispositivo con un nivel BAJO. 7.41. Acudir a las Figuras 7.16 Y 7.17. Si la MPU coloca 8300H en el bus de direcciones, el adaptador de la interfaz ___ (de entrada, de salida) se direcciona al activar su línea de selección de dispositivo con un nivel ___ (ALTO, BAJO). Solución: Si la MPU de la Figura 7.16 coloca 8300H en el bus de direcciones, se direcciona el adaptador de la interfaz de salida al activar su línea de selección de dispositivo con un nivel ALTO. 7.42. Acudir a la Figura 7.16. Las 4096 direcciones de ROM entre OOOOH y OFFFH es­ tán ___ (completamente, parcialmente) decodificadas en este sistema. Solución: Las 4096 direcciones de ROM entre OOOOH y OFFFH están completamente decodificadas en este sistema. Las 4 líneas de dirección más significativas (A 12-A 15) son decod'ificadas por el decodificador de direcciones. Las 12 líneas de dirección menos significativas (Ao-A 11) son decodificadas por el decodificador de direcciones en la ROM. 7.43. Acudir a la Figura 7.16. Las 4096 direcciones entre 8000H y 8FFFH están ___ (com­ pletamente, parcialmente) decodificadas en este sistema. Solución: Las 4096 direcciones en la Figura 7.16 entre 8000H y 8FFFH están parcialmente decodificadas en este sistema. Las 12 líneas de direcciones menos significativas (Ao-A II ) no están decodificadas ni por el decodificador de direcciones ni por el dispositivo de salida. 7.44. Acudir a la Figura 7.18. Si las entradas de selección del decodificador 1-de-16 son S3 = 1, S2 = 1 SI = 1 Y So = O, la salida ___ (número) está habilitada y produce un ni­ vel _ _ (ALTO, BAJO). http://librosysolucionarios.net I J. . 244 FUNDAMENTOS DE LOS MICROPROCESAOORES Solución: Si las entradas de selección del decodificador l-de-16 son iguales a 1110, la salida j 4 está habili­ tada y produce un nivel BAJO. 7.45. Suponer que al sistema de la Figura 7.16 se le añadiese otra RAM de 4K con las direccio­ nes IOOOH a IFFFH. La salida _ _ (número) del decodificador l-de-16 de la Figu­ ra 7.18 podría ser utilizada para excitar la línea de selección de dispositivo de la RAM de 4K añadida. Solución: Si se afiadiese otra RAM de 4K con las direcciones en el segmento 1 del mapa de memoria, la salida I del decodificador de la Figura 7.18 podría utilizarse para excitar la línea de selección de dispositivo del módulo RAM afiadido. 7.54. 7.55. Si la de_ Res. 7.56. 7.57. Dura consi a) ell Res. 7.58. Las Íl E/S_ Res. 7.59. El ada almac Res. 7.60. El <fu un_ Res. 7.61. Elsist Res. 7.62. Los '" sistem Res. 7.63. El SiSl los da Res. 7.64. En la MPC de dat Res. 7.65. Despu actual. corto I Res. La interconexión, o enlace, de las partes en un sistema basado en microprocesador se deno­ mina _ _ . Res. 7.47. interfaz. Una interfaz es una frontera compartida entre dos dispositivos que comparten _ _ (información, memoria). Res. información. 7.48. Otras consideraciones sobre la realización de interfaces incluyen la dirección de la transmisión de datos y la _ _ (formación de matrices. sincronización). Res. sincronización. 7.49. Las tres interconexiones o caminos de datos en un sistema basado en microprocesador incluyen el bus de datos, el bus de _ _ y el bus de _ _ . Res. direcciones, control. 7.50. Cuando una MPU deja el control de los buses de datos y direcciones para que un dispositivo periférico pueda acceder a la memoria principal del sistema sin ir a través de la CPU, se den 0­ mina _ _ _ _ _ _ o DMA. Res. 7.51. Lall TO. : Res. PROBLEMAS SUPLEMENTARIOS 7.46. AClM impc Res. acceso directo de memoria. Acudir a la Figura 7.2. El bus de direcciones está ____ (completamente, parcialmente) decodificado en este sistema. Res. completamente. 7.52. Acudir a la Figura 7.2. Después de direccionar, un nivel _ _ (ALTO, BAJO) en las entradas es y OE de la ROM harán que se ejecute una operación de _ _ (lectura. escritura) de memoria. Res. BAJO, lectura. 7.53. Acudir a la Figura 7.4. Los pequefios círculos y flechas significan una relación de causa-_ _ en los diagramas de tiempo. Res. efecto. http://librosysolucionarios.net , i INTERFACES CON EL MICROPROCESADOR 7.54. habili­ Figu­ lM de ~ lilCÍón, L~ Acudir a la Figura 7.2. Las salidas de la ROM (00-07) están en el estado _ _ (ALTO, de alta impedancia) cuando no se accede a la unidad de almacenamiento. Res. alta impedancia. 7.S6. La línea de control de la Figura 7.5 habilita la entrada _ _ de la RAM con un nivel _ _ (AL­ TO, BAJO). Res. (habilitación de salida), BAJO. 7.S7. Durante la operación de lectura en la Figura 7.5. las patillas Do a D7 del microprocesador están consideradas como _ _ (entradas, salidas) y están (recibiendo datos desde, enviando datos a) el bus de datos. Res. entradas, recibiendo datos desde. :tria. la ión de deno­ , ..." ;;., ~,~ I -, ~ j'! Lcl ~ 7.S8. Las instrucciones especiales IN (entrar) y OUT (sacar) son utilizadas si se emplea la técnica de -E/S _ _ (aisladas, de mapa de memoria). Res. aisladas. 7.S9. El adaptador de la interfaz de salida de la Figura 7. JOb contiene una puerta y un _ _ de 8 bits para almacenar los datos de salida. Res. cerrojo (o cerrojo de datos). 7.60. El dispositivo triangular dentro del adaptador de la interfaz de entrada de la Figura 7. I la es un _ _ de salida. Res. buffer (o buffer de tres estados). 7.61. El sistema de la Figura 7.12 utiliza la técnica de EfS _ _ (aisladas, de mapa de memoria). Res. aisladas. 7.62. Los buffers de salida del 8212 están _ _ (habilitados por DSl, permanentemente habilitados) en el sistema de la Figura 7.12. Res. permanentemente habilitados. 7.63. El sistema de la Figura 7.14 utiliza una _ _ para notificar al microprocesador cuándo están listos los datos para ser transferidos a la CPU. Res. interrupción (o petición de interrupción). 7.64, En la Figura 7.14 se genera una interrupción por _ _ (el adaptador de la interfaz de entrada, la MPU) (antes, después) que la entrada del strobe del 8212 almacene los datos en los cerrojos de datos. Res. adaptador de la interfaz de entrada, después. 7.6S. Después de recibir la petición de interrupción de la Figura 7.14, la MPU completa la instrucción actual, almacena los contenidos del contador de programa y del registro actual en la pila y salta a un corto programa llamado _ _,_ _ _ _ _ _ . """;"0 -~ ~ ic:ado ,CS~· Res. rutina de servicio de interrupción. http://librosysolucionarios.net -_. 245 7.SS. Si la línea de control de escritura de la Figura 7.5 está en el nivel BAJO, la RAM está en el modo de _ _ (lectura, escritura). Res. escritura. ~cio- L· :2' 9 ~ I ,d , ''>- .'. • '~- - -. - '•• ­ ,.,. slme 'o - 246 FUNDAMENTOS DE LOS MICROPROCESADORES 7.66. ___ es una técnica por la cual cada dispositivo de E/S es periódicamente muestreado para deter­ minar si está «listo» y necesita servicio. l. Res. escrutinio. 7.67. Acudir a la Figura 7.16. El dispositivo periférico de entrada de este sistema es el _ _ . Res. teclado. 7.68. Acudir a la Figura 7.16. _ _ (el adaptador de la interfaz de salida, la RAM) almacena los datos de salida y los mantiene en las entradas del visualizador de siete segmentos. Res. adaptador de la interfaz de salida. 7.69. Acudir a la Figura 7.16. La sincronización de la transferencia de datos del adaptador de la interfaz de entrada en este sistema se realiza utilizando un esquema de _ _ (escrutinio de interrupciones, simple interrupción). Res. simple interrupción. I í' t 7.70. Acudir a la Figura 7.16. Las direcciones de la ROM y RAM están _ _ (completamente, parcial­ mente) decodificadas en este sistema. Res. completamente. 7':/1. Acudir a la Figura 7.16. Las direcciones del puerto de entrada y salida están _._ parcialmente) decodificadas en este sistema. Res. parcialmente. (completamente, 8.1. El prin año el· maneja El niio sistema CfUill¡ .alimeol Jos prg char )al El 11 cada di mayoñ 8085 ti alguoru Uo. menos más de lotel8( Las bloque orgamz y un te: de 6 bil las señé un regl' La, interflU 2048 x El8 sadores microp de esto microo I • http://librosysolucionarios.net d.·. 1 . ::;... Capítulo 8 EL MICROPROCESADOR INTEL 8080/8085 8.1. INTRODUCaON .,. J ~ I I E! priIner microprocesador fue introducido por Inte1 eorporation en 1971. lnte! introdu'o ese año e e 1ts y e e Its. En 1974, Inte mtr uJo el microprocesador 8080, que maneja palabras de datos de 8 bits y tiene !6 líneas de dirección y un puntero de pila de 16 bits. El microprocesador Intel 8085 es una versión mejorada del 8080. Integra el reloj, control del ~tema y prioridad de las interrupciones en el el microprocesador, reduciendo así el número de g utilIzados en la mayoría de los SIstemas. El 8085 tambIén opera con una sencIlla fuente de ..alimentación de +5 V. La MPU 8085 utiliza las mismas instrucciones que el 8080, haciendo así Jos programas compatibles, El microprocesador 8085 tiene dos instrucciones más para aprore­ char las características del hardware añadido. El microprocesador genérico introducido en los capítulos anteriores fue una versión simplifi­ cada de la MPU del 8080/8085. Una vez familiarizado con el microprocesador genérico, la mayoría de los estudiantes tendrán poca dificultad para aprender la MPU del 8085. La MPU 8085 tiene más registros internos, muchas más posibles instrucciones, más señales de control y algunas características diferentes cuando se compara con el microprocesador genérico. Una tendencia en la evolución de los microprocesadores ha sido integrar más funciones en menos O. Un sencillo sistema basado en microprocesador, hace poco tiempo, habría necesitado más de 20 el. El sistema mostrado en la Figura 8.1 solamente contiene tres el. La MPU es el Intel 8085 que controla el bus del sistema y dos el especiales de interfaz de periféricos. Las pastillas de interfaz de periféricos, diseñadas especialmente, que se muestran en forma de bloque en la Figura 8.1 son los el 8155 y 8355. El 8155 contiene 2048 bits de RAM estática, organizada como una memoria de 256 x 8 bits. Esta unidad también contiene tres puertos de E/S y un temporizador. Dos de las E/S son puertos de propósito general de 8 bits. La unidad restante de 6 bits puede ser utilizada como puerto de entrada, como puerto de salida o como camino de las señales de control para los dos puertos de 8 bits. El 8155 es programable y también contiene un registro de status y un contador temporizador de 14 bits. La otra pastilla mostrada en el diagrama de bloques de la Figura 8.1 es el el periférico de interfaz 8355. El 8355 contiene 16.384 bits de ROM y está organizado como una memoria de 2048 x 8 bits. El 8355 también contiene dos puertos de E/S de propósito general de 8 bits. El 8080/8085 y sus parientes de 16 y 32 bits se han convertido en algunos de los microproce­ sadores de propósito general más ampliamente utilizados en el mundo. Entre los parientes del microprocesador 8080/8085 están los Intel 8086, 8088, 80186, 80188, 80286 y 80386. Algunos de estos circuitos integrados fueron seleccionados para utilizarlos como epu de las populares microcomputadoras IBM. 247 http://librosysolucionarios.net ~ I-.'~_ _' r _1" ¡ ,1 ¡ 248 FUNDAMENTOS DE LOS MICROPROCESADORES ,( ~ 8085 MPU ,­ " El se] líneas de se cona: patillas ! micropn ción de tar las P' f!.ecueo< Algo RAM 8155 256 x 8 y temporizador - ( ROM 8355 2k x 8 y E/S Figura 8.1. Diagrama de bloques del sencillo sistema 8085 que utiliza pastillas especiales de interfaz. 8.2. FUNCIONES Y DIAGRAMA DE PATILLAS DEL 8085 El microprocesador de 8 bits Intel 8085 está ubicado en un encapsulamiento de doble línea (OIP) de 40 patillas. El diagrama de patillas de la MPU 8085 se reproduce en la Figura 8.2a. En la Figura 8.2b hay una tabla donde se resumen los nombres y descripciones de las patillas. La información que da el fabricante puede especificar un microprocesador 8085 u 8085A. La unidad 8085A es una versión ligeramente revisada del microprocesador original 8085. Versiones poste­ riores incluyen dispositivos de más alta velocidad como el 8085A-2, .,8085AH, 8085AH-2 Y 8085AH~1. >lace.., d'~,Jt.I...... rl<J. g. 2.(~) 'j (". t·Z (f). '. . El mIcroprocesador genenco utIlIzaba 16 patillas para las hneas de dlrecclOn y 8 patIllas para las conexiones del bus de datos. Con las funciones añadidas del 8085, el DIP de 40 patillas no ...t,¡ene patillas suficientes para todas las entradas y salidas. Por esa razón, el fabricante utiliza las , atilIas 12 a 19 como líneas de bus de propósito doble de direcciones/datos (ADo-AD7 ). Se dice que esta unidad tiene un bus multiplexado e atos;' irecciones de 8 bits. Las 8 líneas de direc­ ción menos significativas comparten las patillas con las 8 líneas del bus de datos. Multiplexar significa primero seleccionar una y despuéS otra, etc. Por tanto, multiplexar el bus de direcciones/ datos significa primero utilizar el bus para enviar una dirección y a continuación enviar o recibir datos vía el mismo bus. El 8085 tiene una señal especial para informar a los periféricos cuando el bus de direcciones/datos envía una dirección y cuando funciona como bus de datos. La seifiil especial se denomina señal de control de habilitación del cerro '0 de direCCIOnes (ALE). Observar Que las patlllas del bus de direcciones/datos son bidíreccionales o pueden ser e tres es dos o alta impedancia (también llamadas triestados)., La patilla ALE es una salida de control. , http://librosysolucionarios.net res a la! escritur. enviar ( unidad) ción de bUses 3 reiniciaJ reiniciaJ ,- cializac una seD Las MPU B j , , J_ _- - - - - - ­ EL MICROPROCESADOR INTEL 8080/8085 • 249 El 8085, igual que el microprocesador genérico, tiene un total de 16 líneas de dirección, Las 8 líneas de dirección más significativas están conectadas a las patillas Ag a A '5 en la Figura 8.2. Estas se conectan directamente al bus de direcciones como en el microprocesador genérico. Estas patillas son salidas o pueden ser de tres estados. Otras patillas similares a las encontradas en el .m.icroprocesador genérico son las de alimentación (Va y Vs,) conectadas a una fuente de alimenta­ ción de +5 V. ~l microprocesador 8085 tiene circUlterÍa de reloj permanente sin más que conec­ tar las patillas de entrada X, y X2 a un cristal. La frecuencia interna de la MPU será la mitad de la frecuencIa del cnstal. - Algunas de las patillas del 8085 listadas en la Figura 8.2 realizan funciones de control simila­ res a las observadas en el microprocesador genérico. Las salidas de control de lectura (KD) y escritura (iVR) son utilizadas para infonnar a la memoria o dispositivos de E/S cuando hay qu~ -jUviar o reCIbIr datos vía el busde datos (realmente por el bus de direcciones/datos en esta unidad). La entrada de reinicialización R A IZA 1 N actúa corno la reinicializa­ ción de la" MPU genérica, ya que el contador de programa se pone, a reInICIa Izar, a H. Los buses de datos y direcciones y líneas de control están en el estado de tres estados durante la reinicialización. El contenido de los registros internos también puede ser alterado durante una reinicialización. La patilla REINICIALIZACION OUT está asociada con la operación de reini­ cialización. Cuando la MPU se está reinicializando, la patilla REINICIALIZACION OUT envía • una señal a los penféncos que les mfonna que el SIstema se va a reinicializar. .ha salIda de reloj (CLK) del microprocesador 8085 de la Figura 8.2 op~ igual que la de la MPU genérjea. La entrada de petición de interrupción (lNTR) al 8085 es una interrupción de i ' . ii,1 XI X2 REINIClALIZAClON OUT SOD SID 'TRAP RST7,5 RST 6.5 RST 5,5 ".. , (DIP) En la 15. La "idad :e1-2 y ~. f. t '01: ,;, \ .. ,J.r mes/ cibir jo el (/ ei\al INTR INTA ADO ADI AD2 AD3 AD4 AD5 AD6 AD7 Vss (a) ar 1 2 3 4 5 6 7 8 9 \O II 12 13 14 15 16 17 18 19 20 , 40 39 38 37 3,6 \ "35 '­ 8085 34 33 32 31 30 29 28 27 26 25 24 23 22 21 Vcc (+ 5 V) J ) 1\1Í~," \ HOLD"­ ---~ HLDA CLOCK(OUT) REINICIALlZACION IN READY IOtM SI r.J~ RO ,r-. WR I ' ALE. SO ~ ~""" (/ . AI5 AI4 AI3 AI2 AII AIO A9 A8 Diagrama de patillas de la MPU 8085 - "-j alta ,·,·f.'.' , .f -. ~ Figura 8.2. ~ http://librosysolucionarios.net lí --~, ' " .. f 250 FUNDAMENTOS DE LOS MICROPROCESADORES • SO. SI READY SID SOD HOLD HLDA INTR TRAP RST 5.5 RST 6.5 RST 7.5 INTA I Bidireccional, tres estados Salida. tres estados Salida· Salida, tres estados Salida, tres estados Salida, tres estados Salida Entrada Entrada Salida Entrada Salida Entrada Entrada Bus de direcciones/datos Bus de direcciones Habilitación del cerrojo de dirección Control de lectura Control de escritura E/S o indicador de memoria Indicadores del estado del bus Petición de estado de espera Entrada de datos serie Salida de datos serie Petición de mantenimiento Conocimiento de mantenimiento Petición de interrupción Petición de interrupción no '--...: enmascarable AOO-AD7 A8-A15 ALE RD WR IO/M Peticiones de interrupción hardware de vectorizadas "'. REINICIALlZACION IN REINICIALlZACION OUJ:-­ Xl. X2 CLK Vcc, Vss Conocimiento de interrupción Reinicialización del sistema Reinicialización de los periféricoS­ Conexiones al cristal o RC Señal de reloj Alimentación, tierra bit de dato la instrucc según espe Consíd niente de 1 ~os.Sil, k~tura o e donde pen MPU ente Tipo Descripción Nombre de patilla I Entrada Entrada Entrada Salida Entrada Salida Entrada Salida ~ J - . de tratami Consid de manter otro dispo -¿iones de, las transfe­ .WR e 101 máquina I derecha dí So y S se DespuI • Esta salida es de tres estados en el 8085. pero no en el 8085A. (b) Nombres y funciones de las patillas 8085 tiene estas cara< Figura 8.2. (continuación). I " propósito general como en el microprocesador genérico. Sin embargo, dé forma distinta a la interrupción del microprocesador genérico, la INTR del 8085 puede ser habilitada o inhabilitada por instrucciones software. Además de la petición regular de interrupciones (lNTR), la MPÚ 8085 tiene otras cuatro entradas de interrupción. Estas son las patillas de las entradas TRAP, RST 7.5, RST 6.5 y RST 5:t TRAP es la interrupción de más alta prioridad, seguida QQ.r RST 7.5, RST 6.5, RST 5.5 y finalmente por la interrupción de más baja prioridad, VNTR. TRAP o cualquiera de los tres rearranques (RST 7.5, RST 6.5, RST 5.5) hacen que la MPU salte a una subrutina en una dirección específica de llamada., Las interrupciones de rearranque pueden ser habilitadas e inhabilitadas por software, mientras que la interrupción TRAP no puede ser inhabi· litada de esta form~La Íllterrupción INTR salta a una dirección dictada por una instrucción especial recibida, de un dispositivo periférico, cuando es activada la salida de conocimiento de interrupción (lNTA) de la MPU. . . . _ . _ - _ . El micro rocesador 8085 tiene una entrada serie una salida serie primitivas. Estas son la.s J2atiUas SID (entrada de datos serie) y SOD (salida de datos serie) mostra as en la Figura 8.2. El http://librosysolucionarios.net . í _#~. • Xi' I EL MICROPROCI;iADOR INTEL 8080/8085 • 251 bit de datos de la patilla de entrada SID es cargado en la posición MSB (bit 7) del acumulador por la instrucción RIM del 8085. La patilla de salida SOD se pone en set (1) o reinicialización (O) según especifique la instrucción SIM del 8085. Considerar la entrada READYal microprocesador 8085 de la Figura 8.2. Esta entrada prove­ niente de un dispositivo periférico informa al microprocesador que está listo para enviar o recibir datos. Si la entrada READY del dispositivo periférica está en el nivel BAJO, durante un'Ciclo .kctura o escritura, la MPU lo interpreta como una petición para entrar en el estado de espera, donde permanecerá hasta que las señales periféricas estén listas para transmitir o recibir datos. La MPU entonces procederá con el ciclo de lectura o escritura. La entrada RE4DY es manual Cliarn:to-seutilizalfmemoñas o'penféncOsque son~demasladó íéntos comparados con fa-velocidad dé traiamiento del microprocesador. ... - _.., ..... . Considerar las patillas de entrada HOLD (mantenimiento) y de salida HLDA (conocimiento de mañienimiento) de la MPU 8085 de la Figura 8.2. La entrada HOLD la MPU que otr;(lispositivo quiere utilizar los buses de direccion~s y datos. Esto'puede'üéurrirdurante opera-­ -¿iones de acceso directo a memoria. Después de recibir una entrada HOLD:"IaCPU completará laS-transferencias actuales de datos en los buses. Entonceslas pati11asCJ:edirecclOnes, (tatos, RD, "'W'R e lO/M del 8085 se ponen en alta impedancia para no interfenrcori1as transferenCias de­ datos en los buses. Una salida HLDA indica a un periférico que se ha recibido una petición de .núinten'irIÍiento y que el microprocesador abandonará el control de los buses en el siguiente cicló de' reloj. / ... - _Las saÍidas lO/M, ,~..Q.-t.§'...L..S()n señales de control que notifican a los periféricos el tipo de ciclo máquina que está reahzando la MPU. Los tip9§...<!e_fic;!Q..!lláquina. ªp~recenen la COlumn~_) derecha de la Figura 8.3. La combinación adecuada de las señales de salida de las patillas lO/M, . So y SI se detalla a la izquierda. Después de esta breve visión genera] de las funciones de las patillas, se observa que la MPU 8085 tiene algunas características que no aparecen en el microprocesador genérico. La mayoría de. . estas características y algunos de sus usos se explorarán en las secciones p o s t e r i / de ~ _. J "iI \ ti .\ ¡ noÜficaa , ,. Señales de control del 8085 la :ada \lPU lta a J .~4P. '.: PQr TRAP e a una den ser. '1abi­ rueción ;~tO de 1 lO/M SI O O 1 O I I O O l I O 1 * * * . So I l O O I l O x x x x 1 Status de ciclos de máquÍ«'la Escritura en memoria Lectura de memoria Escritura de E/S Lectura de E/S Búsqueda del código de op Conocimiento de interrupción Alto Mantenimiento Reinicialización • - condición de tres estados. x - no especificadó. son la.:; ,8.2. El Figura 8.3. Ciclos máquina del 8085. http://librosysolucionarios.net ~ \, 're,. j ádU$liSJII1'.a 1I'11tl••UftUbiJ[JEU1Ua:e. .", 252 .~ FUNDAMENTOS DE LOS MICROPROCESAOORES So PROBLEMAS RESUELTOS de 8.1. El lntel 8085 se denomina un microprocesador de _ _ (número) bits porque las pala­ bras del acumulador tienen esta cantidad de bits. 8.8. El lntel 8085 se denomina un microprocesador de 8 bits porque las palabras del acumulador tienen este número de bits. \;f El bus de direcciones/datos se dice que es ___ (decodificado, multiplexado) porque alterna funciones como bus de direcciones y como bus de datos. Solución: ~. pt ~ Solución: 8.2. Ac SI i a • Al El bus de direcciones/datos se dice que es multiplexado porque alterna funciones como bus de direcciones y bus de datos. í .J :! 8.3. ~ t La salida ALE (habilitación del cerrojo de direcciones) la utiliza el microprocesador 8085 pata notificar a los periféricos cuándo se utiliza como bus de direcciones el bus de direcciones/datos. 8.4. Acudir a la Eigura 8.2. El microprocesador 8085 utiliza una fuente de alimentación de _ _ V. Solución: De acuerdo con la Figura 8.2; el microprocesador 8085 utiliza una fuente de alimentación de +5 V. 8.5. Acudir a la Figura 8.2. Si las dos salidas lO/Xl y lVR estuviesen en BAJA, el microproce­ sador estaría _ _ (leyendo, escribiendo) en un(a) ___ (puerto de E/S, posición de memoria). Solución: Si las dos salidas 10/M y WR estuviesen en BAJA, la MPU estaría escribiendo en una posición de memoria. Las barras superiores indican que un nivel BAJO activa la M, o memoria, en la señal lO/M y una escritura en la señal de salida WR. / 4 8.6. Acudir a la Figura 8.2. Si el microprocesador estuviese en un ciclo de lectura y la entrada READYestuviese en el nivel BAJO, la CPU _ _ (terminaría, iría al estado de espera hasta que el dispositivo estuviese listo y entonces terminaría) inmediatamente el ciclo de lectura. . Solución: Si la MPU estuviese en un ciclo de lectura y la entrada READYestuviese en el nivel BAJO, la CPU iría al estado de espera hasta que el dispositivo periférico estuviese listo y entonces finalizaría el ciclo de lectura. 8.7. . i di , Acudir a la Figura 8.2. La salida ___ la utiliza el microprocesador para notificar a los periféricos cuándo se utiliza como bus de direcciones el bus de direcciones/datos. Solución: Acudir a la Figura 8.3. Durante un ciclo de máquina de búsqueda de código de op, las señales de control So= _ _ (O, 1), S¡= _ _ (O, 1) e IOiXl = _ _ (0, 1). http://librosysolucionarios.net , " 8.9. di ~~~ " '-1' 8.3. Al ~; i 1-;0 <1'::.., • ~ La orga1l ra 8.4. El al bus ( (AD 7-AJ xado (Al ALE esa.; Las e 8 bits. L registros unidad 4 L), punl 8 bits. l Figura 8 lNTA ~ aritmé'li tempor. dores & El f' instrua: nes entl deben r periféri control muestr. ) EL MICROPROCESADOR INTEL 8080/8085 253 Solución: De acuerdo con la Figura 8.3, durante un ciclo máquina de búsqueda de código de op, las señales de control So~ 1, SI = 1 e 101M = o. 8.8. Acudir a la Figura 8.2. Listar las patillas de entrada en el el microprocesador 8085 que pueden considerarse interrupciones. Solución: Las patillas de entradas de fa MPU 8085 que se consideran interrupciones son la INTR. TRAP, RST 7.5, RST 6.5 y RST 5.5. Algunas pueden considerar también la entrada de RE/NICIALIZA­ CION IN (reinicialización) como una interrupción porque está provocada por un dispositivo exter­ no y el contador de programa bifurca a un nuevo segmento de programa. 8.9. de Acudir a la Figura 8.2. Las patillas de E/S serie están etiquetadas _ _ y _ _ en el diagrama de patillas del microprocesador 8085. Solución: De acuerdo con la Figura 8.2. las patillas de E/S serie están etiquetadas SID y SOD en el diagrama de patillas del microprocesador 8085. !! t ...... :~ "1 r:'.~ de : ;:e­ de (in 'lal la el J~_ 8.3. ARQUITEcrURA DEL 8085 \ ~ NU La organización interna o arquitectura del microprocesador Intel 8085 se reproduce en la Figu­ ra 8.4. El 8085 tiene un contador de programa y un cerrojo de direcciones de 16 bits que alimenta al bus de direcciones dedicado (AIS-A g) y al bus de direcciones/datos de doble propósito (AD 7 -ADo)' Los datos paralelos entran y dejan la MPU vía el bus de direcciones/datos multiple­ xado (AD 7-ADo)' El bus de direcciones/datos transmite una dirección cuando la línea de control ALE está en ALTA y datos cuando la línea ALE está en BAJA. Las entradas o salidas de datos a la unidad se realizan a través del bus de datos interno de 8 bits. Los datos pueden fluir desde el bus de datos interno al acumulador de 8 bits o a los registros temporales, señalizadores, registro de instrucción, unidad de control de interrupción, unidad de control de E/S serie, cualquiera de los registros de propósito general (B, C, D, E, H Y L), puntero de pila de 16 bits, contador de programa de 16 bits, o buffer de datos/direcciones de 8 bits. Las entradas y salidas serie (SID y SOD) se muestran en la parte superior derecha de la Figura 8.4. Las entradas de interrupción (lNTR, RST 5.5, RST 6.5. RST 7.5 y TRAP) Y la salida 7NTA (conocimiento de interrupción) se muestran en la parte superior izquierda. La unidad aritmético-lógica (ALU) está alimentada por dos registros de 8 bits (registro acumulador y registro temporal) como en el microprocesldor genérico. Los flip-flops señalizadores tienen cinco indica­ dores de status en lugar de dos como en el microprocesador genérico. El registro de instrucción alimenta al decodificador de instrucciones, el cual interpreta la instrucción actual y determina el microprograma que debe seguir. El decodificador de instruccio­ nes entonces instruye a las secciones de control y temporización sobre la secuencia de eventos que deben realizarse. La sección de temporización y control coordina las acciones de procesador y los periféricos. Las líneas de control interno no se muestran en la Figura 8.4, pero las salidas de control y de status sí. Las entradas de REINICIALIZACION, HOLD y READY también se muestran como entradas de la sección de control y temporización del microprocesador 8085. http://librosysolucionarios.net " r:,­ _,.h\ ··t·"· J ~--~ 444 « ,# 254 FUNDAMENTOS DE LOS MICROPROCESADORES Seiializ,ado, Los cinc El señali:a examinado \ flow» (rero actúa como I do si el señ (8) ORODlfKAooR m , H ... o REG.B INSTRl.:('nO~ES REO. CODlFI(AClON DE ("lelOS REQ.H MAQUINA CO~TAOOR 18' REO. e 18, (8) R~EG, E REG L DE PROGRAM<\ PUr-.:TERQ DE P1LA ,.. lIt,¡ ARRA" DE REGISTROS ¡loto) { .... .,. ~y FUENTE DE ALlMENTAC10"l .j ..... OND TEMPORIZAC10N" CONTROL "00_7 BUS DE DATOS/DIRECOONES Figura 8.4. Diagrama funcional de bloques de la MPU 8085. (Cortesla de 'nte' Corporation.) '1 El sem señalizado en el miel' El seri4 después de del dato Il signo a 1 1 Registros Igual que el microprocesador genérico, la MPU 8085 utiliza registros de 8 y 16 bits. El 8085 tiene 8 registros direccionables de 8 bits. Seis de estos registros pueden utílizarse como registros de 8 bits o como registros pares de 16 bits. Además, el 8085 contiene dos registros más de 16 bits. Los registros del 8085 son los siguientes: 1. El acumulador (registro A) es el foco de todas las operaciones del acumulador que inclu­ 2. 3. 4. 5. 1! yen instrucciones aritméticas, lógicas, de carga y almacenamiento y de E/S. Es un registro de 8 bits. Los registros de propósito general BC, DE y HL pueden ser utilizados como seis registros de 8 bits o como tres registros de 16 bits dependÍendo d~ la instrucción que se vaya a ejecutar. Como en el microprocesador genérico, el registró par HL llamado puntero de datos por Intel) puede ser utilizado para apuntar a direcciones. Pocas instrucciones utili­ zan los registros Be y DE como punteros de dirección, ya que normalmente se utilizan como registros de datos de propósito general. El contador de programa (PC) siempre señala la posición de memoria de la siguiente instrucción que se va a ejecutar. Siempre contiene una dirección de 16 bits. El puntero de pila (SP) es un puntero de dirección de propósito especial (o puntero de dato) que siempre apunta a la parte superior de la pila de la RAM. Es un registro de 16 bits. El registro de señalizadores contiene chco señalizadores de 1 bit que contienen informa­ ción del estado de la CPU. Estos señalizadores son utilizados entonces por instrucciones de bifurcación condicional, llamada y vuelta de subrutina. , http://librosysolucionarios.net l·, • Elscñt: dorde la [ dor es util El seri4 un númer embargo. paridad di 00110011 (4). Sin el impar (5\ ,I I I \ Puntero. Elpw pila puec:l micropro la pila y ~ A ~-=A'~~"~"-,~----~,.~---~--.----~--==========~#~-=:~~ , . ", EL' MICROPROCESADOR INTEL 8080/8085 255, I Señalizadores t Los cinco señalizadores encontrados en la CPU del 8085 están representados en la Figura 8.S. El señalizador de arrastre (CY) es puesto a 1 ó O por operaciones aritméticas, y su status es \ examinado por las instrucciones del programa. Como en el microprocesador genérico, un «over­ Iflow» (rebose) de una suma de 8 bits hará que el bit CY se ponga a l. En la resta el señalizador CY actúa como un señalizador de «préstamo», indicando que el minuendo es menor que el sustraen­ do si el señalizador está a 1. ¡,i 1: 11 '" " J,,! i ' s Z AC P CY 1h ' 1 Figura 8.5. Sel'lalizadores del registro de status del.8085. ~ El señalizador de cero (2) se pone a l si el resultado de ciertas instrucciones es' cero. El señalizador de cero está a Osi el resultado no es cero. La acción del señalizador de cero se observó en el microprocesador genérico. El señalizador de signo (S) indica la condición del bit más significativo del acumulador después de la ejecución de instrucciones aritmético-lógicas. Estas instrucciones utilizan el MSB del dato para representar el signo del número contenido en el acumulador. Un señalizador de signo a 1 representa un número negativo, mientras que a O significa un número positivo. El señalizador de arrastre auxiliar (AC) indica un «overflow)) o arrastre del bit 3 del acumula­ dor de la misma forma que el señalizador de arrastre indica un «over.flow) del bit 7. Este señaliza­ dor es utilizado comúnmente en aritmética BCD (decimal codificado binario). El señalizador de paridad (P) examina el número de bits 1 del acumulador. Si éste contiene un número par de 1, se dice que existe paridad par y el señalizador de paridad se pone a 1. Sin embargo, si el acumulador contiene un número impar de 1 (paridad impar), el señalizador de paridad del 808S se pone a O. Por ejemplo, si una instrucción ADD da como resultado la suma 00110011 2 en el acumulador, el señalizador de paridad estará a 1 porque hay un número par de 1 (4). Sin embargo, si la suma fuese 101011102, el señalizador P estaría a O porque hay un número impar (S) de 1 en el acumulador. , tfu­ lIro de nte de de I Puntero de pila la­ I ' El puntero de pila contiene la dirección del último byte introducido en la pila. El puntero de pila puede ser inicializado para utilizar cualquier parte de la RAM como pila. Como en el microprocesador genérico, el puntero de pila se decrementa cada vez que se introduce un dato en la pila y se incrementa cada vez que se saca el dato de la pila. les j '" f \ 1: i '¡¡ ,ijl ;""I'i- ­ ~¡ http://librosysolucionarios.net 1f ...- 'iIbi.",.. 1(1, 3$ " ¿ ~ I 256 FUNDAMENTOS DE LOS MICROPROCESADORES Unidad lIritmético-lógicll I La ALU está muy relacionada con el acumulador, registro de señalizadores y algunos registros temporales que son inaccesibles al programador. Las operaciones aritméticas, lógicas y de despla­ zamiento circular son realizadas en la ALU. Los resultados normalmente se depositan en el acu~ mulador. .I . -. Registro de instrucción y decodificador j Durante una búsqueda de instrucción, el primer byte de la instrucción, el código de oP. es transferido al registro de instrucción de 8 bits. El contenido del registro de instrucción está dispo­ nible al decodificador de inslrucciones. La salida del decodificador, a través de puertas y con señales de temporización, controla los registros, ALU y buffers de datos y direcciones. Las salidas del decodificador de instrucciones y del generador de reloj interno producen las señales de tempo­ rización de ciclo y estado de la máquina. :, ¡ , ¡ l -1 t1 , t 1 i ~4~j Generador interno de reloj La MPU 8085 incorpora un generador completo de reloj en su pastilla. Requiere solamente la adición de un cristal de cuarzo para establecer la temporización de su operación. El8085A puede utilizar un cristal de hasta 6.25 megahertzios (MHz). La versión 8085A-2 del 8085 opera con un cristal de hasta 10 MHz. La patilla de salida CLK es una salida de reloj con buffer que tiene una frecuencia una vez y media la frecuencia del cristal. Las entradas de reloj del 8085AH, 8085AH-2 y 8085AH-I tanlbién pueden ser excitadas con cristales de 6, 10 ó 12 MHz. 1ntelT1lpciones Las cinco entradas de interrupción hardware están listadas por prioridades en la columna izquierda de la Figura 8.6. La interrupción de más alta prioridad es la de la entrada TRAP. Una vez que alcanza el nivel ALTO, la entrada TRAP hará que el 8085 guarde en [a pila el contenido del contador de programa y salte a la posición de memoria 0024H. La entrada TRAP no puede ser inhabilitada y por tanto se denomina interrupción no enmascarable. Las tres siguientes interrupciones hardware listadas en la Figura 8.6 se denominan reinicializa­ doras (para reinicializar el programa en una nueva posición de memoria). La interrupción RST 7.5 hace que el 8085 guarde en la pila el contenido del contador de programa y salte a la posición de memoria 003CH. La siguiente interrupción de prioridad más elevada es la RST 6.5, que hace que el 8085 guarde en la pila el contenido del contador de programa y salte a la posición de memoria 0034H. La interrupción de prioridad más baja RST 5.5 hace que el 8085 guarde en la pila el contenido del contador de programa y salte a la posición de memoria 002CH. La interrupción hardware de más baja prioridad es la entrada INTR. que hace que el procesa­ dor busque una instrucción desde una fuente externa especial. Las cuatro últimas interrupciones pueden ser habilitadas o inhabilitadas por software. 1, ji I! . t. Un SI especial BAJO sa del dato (B6 ) del, LaeJ general. 1 bit. En y SIM". nico RO que el 1 mask). Entradll y slIlidll serie Las patillas de entrada y salida serie del 8085 ayudan a minimizar la cuenta de pastillas en los pequeños sistemas al proporcionar un puerto de interfaz serie. La instrucción especial RIM del 8085 transfiere datos desde la patilla de entrada serie (SID) al bit 7 del acumulador. Esto se ilustra en el ejemplo de la Figura 8.7a, donde se transfiere un nivel ALTO desde la entrada SID a la posición MSB del acumulador. http://librosysolucionarios.net Los I ra 8.8. E veces se El Q( Figura 8 también . ", .. • L, EL MICROPROCESADOR INTEL 8080/8085 ) Nombre Prioridad espla­ ~ acu- iispo­ ~- con aJidas mpo­ 1 • " \ .-~ L. 2 3CH RST6.5 3 34H RST5.s 4 2CH INTR s (2) Figura 8.6. Una mido lUede - _Jn =a la r6.5, .~on '. en ¡:esa­ ones .~ ." t­ .); ": Interrupciones hardware de la MPU 8085. (Cortesía de Intel Corporation.) mask). . .. Flanco de subida AND nivel alto hasta que sea muestreada Flanco de subida (cerrojo) Nivel alto hasta que sea muestreada Nivel alto hasta que sea muestreada Nivel alto hasta que sea muestreada Un solo bit serie puede sacarse vía la patilla de salida serie (SOD) utilizando la instrucción especial SIM del 8085. La operación de salida serie está explicada en la Figura 8.7b. Un nivel BAJO sale a la patilla SOD de la Figura 8.7b vía el cerrojo de salida serie. Observar que la fuente del dato era el bit 7 del acumulador. Para que se produzca la salida ~rie hay que poner a 1 el bit 6 (B6 ) del acumulador. La entrada serie (SID) también puede utilizarse como una entrada de TEST de propósito general, mientras que las patillas de salida serie (SOD) pueden servir como salida de control de 1 bit. En una sección posterior sobre el repertorio de instrucciones del 8085 las instrucciones RIM y SIM'se explicarán con más detalle. Son instrucciones que tienen varios propósitos. El nemotéc­ nico RIM realmente significa máscara de lectura de interrupción (read interrupt mask), mientras que el nemotécnico SIM significa máscara de inicialización de interrupción (set interrupt !L za­ n los [ del IStra a la RST 7.5 Tipo de disparo NOTAS; (1) En el caso de TRAP y RST 5.5-7.5, el contenido del contador de programa se introduce en la pila antes de que ocurra la bifurcación. (2) Depende de la instrucción que suministra al 8085A, el 8259 u otro circuito, cuando se tenga conocimiento de la interrupción. .. "H-2 Dirección (l) a la que se bifurca cuando ocurre la interrupción 24H TRAP L, Dte la )uede )n un e una 257 I Los registros programables de" unidad microprocesadora 8085 están resumidos en la Figu­ ra 8.8. Estos son los registros de principal interés para el programador. Este tipo de diagrama a veces se denomina modelo de programación para la MPU 8085. El acumulador principal de 8 bits se etiqueta con A en el modeló de programación de la Figura 8.8. Los otros registros de propósito general de 8 bits (etiquetados B, C, D, E, H y L) también se denominan, comúnmente, acumuladores secundarios/contadores de datos. Este nom­ 1 t¡ 1 ,­ !! ~ http://librosysolucionarios.net ~ ... [Q+~$ACWl x.... i ;;;Ud. 2 " ¡g14i4JiéAJ?·· ­ \ 258 \ I FUNDAMENTOS DE LOS MICROPROCESADORES MPU Entrada 8085 serie ---+-1 SID 8.10. de Acumulador Antes de la operación (a) RIM 1J :J Después de la operación Instrucción RIM del 8085 para entrada serie ! j MPU 8085 8.11. Cerrojo SOD Salida serie s.j _ - - . 1 O f-------l~ j Acumulador 8.12. Después de la operación Antes de la operación , A.! na SIM (b) Ac (Al Instrucción SIM del 8085 para salida serie ~ Figura 8.7. 8.13. ~ ca s.I bre sugiere su doble uso como acumuladores auxiliares o contadores de datos (o punteros de dirección). El puntero de pila (SP) de 16 bits y el contador de programa (PC) también se mues­ tran en el modelo de programación de la Figura 8.8. L~ Lo! Palabra de status del programa (señalizado res) 8.14. Acumu"lador principal PSW (8) A (8) B (8) C (8) D (8) E (8) H (8) L (8) Sol ""~ Acumuladores secundarios/contadores de datos 8.15. Cit 8~ SeI SP (16) Puntero~e pila PC (16) Contador de programa CCII am 8.16. Figura 8.8. EsI IU Modelo de programación del microprocesador 8085. http://librosysolucionarios.net B4 ser. j • _J P EL MICROPROCESADOR INTEL 8080/8085 259 PROBLEMAS RESUELTOS 8.10. Acudir a la Figura 8.4. El microprocesador 8085 tiene- un contador de programa de (número) - bits que alimenta el cerrojo de direcciones. En el cerrojo de direc­ ciones la dirección es dividida en dos partes y enviada a los periféricos vía el bus de _ _ y el bus de _ _ / _ _ Solución: De acuerdo con el diagrama de la Figura 8.4, el microprocesador 8085 tiene un contador de programa de 16 bits que alimenta el cerrojo de direcciones. En el cerrojo de direcciones la direc­ ción es dividida en dos y enviada a los periféricos vía el bus de direcciones y el bus de direcciones/ datos. 8.11. Acudir a la Figura 8.4. La línea de control de salida ALE estará en el nivel _ _ (ALTO, BAJO) cuando la MPU envíe una dirección al bus de direcciones/datos. i , I Solución: La línea de control de salida estará en ALTA cuando la MPU envíe una dirección al bus de direcciones/datos. Cuando la línea de control ALE alcance el nivel BAJO, el bus de direcciones/ datos se convierte en un bus de datos bidireccional. 8.12. Acudir a la Figura 8.4. Las patillas SID y SOD del microprocesador 8085 están relacio­ nadas con la sección de control de ___ (interrupciones, E/S serie). Solución: De acuerdo con la Figura 8.4, las patillas SID y SOD del microprocesador 8085 están muy relacionadas con la sección de control de E/S serie. 8.13. I fn<; de Solución: Además del acumulador, los seis registros de propósito general de 8 bits son el B. C. D. E, H Y L. Estos pueden utilizarse como registros pares (registros de 16 bits) durante ciertas operaciones. Los registros pares son Be, DE Y HL. ~eS , L Además del acumulador, citar seis registros de propósito general de 8 bits del micropro­ cesador 8085. 8.14. Este registro de 16 bits siempre contiene una dirección y apunta al tope de la pila de la RAM. Solución: El puntero de pila siempre contiene una dirección y apunta 8.15. al tope de la pila de la RAM. Citar cinco indicadores de status del registro de señalizadores del microprocesador 8085. Solución: De acuerdo con la Figura 8.5, los cinco señalizadores, <> indicádores de status, del micropro­ cesador 8085 son el señalizador de signo, el de cero, el de arrastre auxiliar, el de paridad y el de arrastre. 8.16. El contenido del acumulador (la suma) de la Figura 8.9 despuéS de la operación de suma será _ _ (8 bits). http://librosysolucionarios.net t 1l' qi • , • ~ < 260 ~ F1JNDAMENTOS DE LOS MICROPROCESADORES ,,"m","w 111"~.~_ j Antes de la operación Registro B _____ ,/ 0000 1111 I I ADD B 8.22. Acumulador r-r--r"-....--,--;---r---r--, ? ? s Z AC P CY I I I I? I I? I I? I PI "" iIII 51 I Señalizadores 8.23. ~ Solución: Sumar los binarios 11110000 + 00001111 1000 0111. El contenido del acumulador de la Figura 8.9 después de la operación de suma será 00000111 (los 8 bits menos significativos de la suma). 8.18. El señalizador de arrastre auxiliar (AC) estará a _ _ (0, 1) despuéS de la operación de suma de la Figura 8.9. Solución: Las posiciones B3 del acumulador y' del registro B tienen un 1 en la Figu~a 8.9. En binario 1 + 1 = 102, Esto significa que habrá una salida de arrastre de la posición B3 a la posición B4' Debido a este arrastre el señalizador de arrastre auxiliar (AC) se pondrá a 1, despUés de la opera­ ción de suma de la Figura 8.9. 8.20. El señalizador de paridad (P) estará a _ _ (O. 1) después de la operación de suma de la Figura 8.9. Solución: Después de la operación de la Figura 8.9, el acumulador contendrá el binario 00000111. Esta suma contiene tres 1, que no es paridad par. y por tanto el señalizador de paridad estará a O. 8.21. JC 8.24. El señalizador de arrastre (eY) estará a _ _ (0, 1) después de la operación de suma de la Figura 8.9. Solución: Sumar los binarios 11111000 + 00001111 - 100000111. Debido a que el «overflow» (rebose) sobrepasa el límite de 8 bits del acumulador, hay un arrastre en la posición B7' El señalizador de arrastre (eY) se pondrá a 1 después de la operación de suma en la Figura 8.9. http://librosysolucionarios.net M ja , ~í ~" El señalizador de cero (Z) estará a _ _ (O, 1) después de la operación de suma de la Fi­ gura 8.9. Solución: El contenido del acumulador después de la operación de suma en la Figura 8.9 es 00000 111; como no es cero, el señalizador de cero estará a O. 8.19. d El señalizador de signo (S) estará a _ _ (O, 1) después de la operación de suma de la Figura 8.9. Solución: El bit más significativo (bit 7) del acumulador es el bit de signo. Después de la operación de suma el acumulador contiene 00000111 en la Figura 8.9. Por tanto el bit de signo estará a O. Al gil Figura 8.9. 8.17. U t. Después de la operación + ._ , ••• ,,:;,,,,. ; 8.4. Me Como en Estos sOn: Di Di 3. Di 4. Di 5. Di 1. 2. Direccio. El mOl inherente dor de arr o posicior Direccio", Mucw zan estas' ció n de la (registro ( la instrucc es habitWI le Ud, 2, 1¡ EL MICROPROCESADOR INTEL 8080{8085 261 tll l l' ;, 8.22. ¡ La interrupción hardware de prioridad más elevada en el microprocesador 8085 que no : ! puede ser inhabilitada es la _ _ (/NTR, TRAP). Solución: La interrupción hardware de más alta prioridad en el microprocesador 8085 que no puede ser inhabilitada se llama TRAP, 8.23. Acudir a la Figura 8.6. Cuando se activa la interrupción hardware RST 7.5, la CPU guarda el contenido de ______ en la pila y bifurca a la dirección de memo­ ria _ _ (hex). ,¡ ,, .1 Solución: De acuerdo con la tabla de la Figura 8.6, cuando se activa la interrupción hardware RST 7.5, la CPU guarda el contenido del contador de programa en la pila y bifurca a la dirección de memoria 3CH. la le la , 8.24. r: la I Mientras el bus de datos transfiere 8 bits de datos en paralelo, la patilla SID mlilne­ ja _ _ (número) bit(s) cada vez. Solución: • De acuerdo con la Figura 8.7a, la patilla SID (entrada de datos serie) introduce I bit cada vez. de IFt­ 8.4. MODOS DE DIRECCIONAMIENTO Como en el microprocesador genérico, la MPU 8085 utiliza cinco modos de direccionamiento. Estos son: l. , , e la I Direccionamiento implicado. 2. Direccionamiento de registro. 3. Direccionamiento inmediato. 4. Direccionamiento directo. 5. Direccionamiento indirecto de registro. Direccionamiento implicado El modo de direccionamiento de ciertas instrucciones de la MPU 8085 es implicado por (o inherente a) la función de la instrucción. Por ejemplo, la instrucción STC (poner a I el señaliza­ dor de arrastre) está relacionada con el señalizador de arrastre solamente y no con otros registros o posiciones de memoria. Direccionamiento de registro de ~) de = Muchas instrucciones de la MPU 8085 utilizan direccionamiento de registro. Cuando se utili­ zan estas instrucciones, se especifican la fuente del operando y la operación. Considerar la ejecu­ ción de la instrucción ADD e de la Figura 8.10. En este ejemplo, el operando del registro fuente (registro e en este caso) se suma al operando localizado en el acumulador. Una vez que se ejecuta la instrucción ADD C, la suma (00001111 1 en este ejemplo) se deposita en el acumulador. Como es habitual, la operación de suma tambiéñ afecta a los señalizadores del registro de status. http://librosysolucionarios.net ! i 11 1\ I¡ ¡.t í '1 : I 262 FUNDAMENTOS DE LOS MICROPROCESADORES Direcciolf Acumulador Acumulador Laso~ utilizand( El byte \ contiene contiene La iD! instrucci< ción LOJ micropro moria de entonces Señalizadores Z Figura 8.10. La instrucción ADD AC e (modo direccionamiento de registro). La instrucción 'ADD e ilustrada en la Figura 8.10 utilizaba el direccionamiento de registros. Ambos operandos estaban localizados en registros internos de la MPU (registros A y C). Las instrucciones que utilizan el direccionamiento de registro son muy eficientes ya que solamente utilizan un espacio de la memoria de programa de 1 byte. También se ejecutan rápidamente porque no tienen que buscar operandos en memoria. Buscar en memoria es una operación relativamente lenta. Direccionamiento inmediato Las instrucciones que utilizan direccionamiento inmediato tienen los datos inmediatamente a continuación del código de op en la memoria del programa. A título de ejemplo se ilustra la instrucción ADI (suma inmediata) del 8085 en la Figura 8.\1. El microprocesador busca el código de op (C6H en este ejemplo) en la memoria de programa. Después de decodificar, la MPU determina que ésta es una instrucción de direccionamiento inmediato. Por tanto encuentra el dato inmediato en la siguiente posición consecutiva de la memoria de programa después del código de op. Este dato inmediato (0000 1000 2) se suma al contenido del acumulador (0000 1\ 002 ), Después de la operación, la suma (000 101002 ) se coloca en el acumulador. t l Acumulador .. Acumulador ,JI i, i 'J ~ ;; ~ ¡ . :" Señalizadores Memoria de programa Dato inmediato Figura 8.11. La instrucción ADI (moda de direccionamiento inmediato). ~ Las instrucciones inmediatas del microprocesador 8085 utilizan el acumulador como operan­ do implicado, como en la operación ADI mostrada en la Figura 8.\1. La instrucción MVI (trans­ ferir inmediato) del 8085 puede transferir datos inmediatos a cualquier registro o posición de memoria. La instrucción LXI (carga registro par inmediato) del 8085 carga un registro par con un valor de 16 bits y por tanto no afecta al acumulador. http://librosysolucionarios.net ~ , • !JI res de espaCl MPC ción 1 ~ EL MICROPROCESAOOR INTEL 8080/8085 1­ " 263 11 '1 I! Direccio1ltlmie1lto directo Las operaciones que utilizan direccionamiento directo en la MPU del Intel 8085 se especifican utilizando formatos de instrucción de 3 bytes. Este formato está representado en la Figura 8.12a. El byte l contiene el código de op para la instrucción de direccionamiento directo. El byte 2 contiene el byte de orden inferior de la dirección del operando. El byte 3 de la instrucción contiene el byte de orden superior de la dirección del operando. La instrucción LDA (cargar A directo) del 8085 se está ejecutando en la Figura 8.12b. La instrucción de 3 bytes se muestra en la parte inferior del diagrama. El código de op de la instruc­ ción LDA es 3AH. Los 2 siguientes bytes de la memoria de programa son ensamblados por el microprocesador en una dirección de 16 bits (0200H en este ejemplo). Esta dirección de la me­ moria de datos (0200H) es accedida entonces por la MPU y su contenido (1111111 12) es cargado entonces en el 'acumulador, LaS./ Dente Dente ación l. Memoria de programa =Ole a b'a la ódigo MPU " el es del dador fa) ran­ ans­ de lun Código de operación Byte l Byte de orden inferior de la dirección Byte 2 Byte de orden superior de la dirección Byte 3 Formato de instrucción para direccionamiento directo Acumulador Acumulador Después de la operación Antes de la operación Código de operación ------"'f 00 l O0000 0000 I 3AH - t Byte de orde'n inferior de la dír. res 1 ... ,-­ (b) 00000000 • Memoria de programa 00000010 La instrucción de cargar A directo Figura 8.12. ¡ I t ! Las instrucciones que utilizan direccionamiento directo a veces son evitadas por los diseñado­ res de microprocesadores y por los programadores, El direccionamiento directo requiere mucho espacio de la memoria de programa (3 bytes de memoria de programa por una instrucción de la MPU 8085). Las operaciones de direccionamiento directo también requieren un tiempo de ejecu­ ción relativamente largo, debido a los numerosos accesos a memoria que se necesitan. http://librosysolucionarios.net _­ -----,- ........ I ji li ¡ l I 1 !j I .'. , 1.t :,:, 1: ".-41 264 6w; 7 1(.. FUNDAMENTOS DE LOS MICROPROCESADORES 8.26. Direccionamiento indirecto de registro' Las instrucciones de registro indirecto referencian la memoria utilizando el contenido de un registro par para señalar la dirección del operando. Un ejemplo de una operación de registro indirecto se ilustra en la Figura 8.13. La instrucción ADD M (sumar memoria), de la Figura 8.13, suma el contenido del acumulador con el contenido de la posición de memoria indicado por la dirección del registro par HL de la MPU. En este ejemplo, el registro par HL señala la posición de memoria 2050H. El operando en la posición 2050H (0000000 I + 11111111 = I 0000 0000. Los 8 bits menos significativos de la suma se depositan en el acumulador después de la operación ADD M. Los señalizadores apropiados también se ponen a I y O según el resultado de la opera­ ción de suma y se muestran en la Figura 8.13. A,.muJado, 11Illl~ Antes de la operación Memoria de datos (2550H) Reg;"," po' HL ____ /' 0000 000 I . I 'Q.,OH I 8.27. Acumulador + 8.28. ADDM Señalízadores s z e L Figura 8.13. Una instrucción de suma indirecta de registro. i l , '1 Modos de direccionamiento combinados Algunas instrucciones de la MPU 8085 utilizan una combinación de modos de direcciona­ miento. Una instrucción de CALL (LLAMADA) a subrutina, por ejemplo, combina el direccio­ namiento directo e indirecto de registro. El direccionamiento directo en una instrucción CALL especifica la dirección de la subrutina deseada. El direccionamiento indirecto de registro es el del puntero de pila. La instrucción CALL introduce primero el contenido ac;.tual del contador de programa en la posición de memoria especificada por el puntero de pila. A continuación, el procesador carga la dirección directa en el contador de programa. Finalmente, la MPU salta a la subrutina cuya dirección se encuentra ahora en el contador de programa. PROBLEMAS RESUELTOS 8.25. Listar los cinco modos de direccionamiento utilizados por el microprocesador Intel 8085. Solución: El microprocesador Intel 8085 utiliza los modos de direccionamiento implicado, de registro, inmediato, directo e indirecto de registro. http://librosysolucionarios.net - ,/ ., ¡ ···I·····!,! . I 8.29. I EL MICROPROCESAOOR INTEL 8080/8085 8.26. de un gistro 8.13, por la ónde Los8 "ación >pera­ 265 La instrucción CMC (arrastre complementario) del 8085 afecta solamente el señalizador de arrastre y no a otros registros o posiciones de memoria. Por tanto utiliza el modo de direccionamiento _ _ (directo, implicado). Solución: La instrucción CMC (arrastre complementario) utiliza el modo de direccionamiento implicado porque afecta solamente el seiíalizador de arrastre y no utiliza otros registros o posiciones de me­ moria. 8.27. La instrucción MOV B,A del 8085 (transfiere A a B) transfiere el contenido de un regis­ tro a otro. La instrucción MOV B,A por tanto utiliza el modo de direccionamien­ to _ _ (inmediato, de registro). Solución: La instrucción MOV B,A del 8085 (transfiere A a B) ejecuta una operación registro a registro y por tanto utiliza el modo de direccionamiento de registro. 8.28. La instrucción MVI A del 8085 mostrada en la Figura 8.14 utiliza el modo de direcciona­ miento _ _ (implicado, inmediato). dores Solución: En la Figura 8.14 se determina que el dato es transferido desde el segundo byte de la memoria del programa al acumulador. Esto significa que la instrucción MVI A (transfiere inmediato) del 8085 utiliza el modo de direccionamiento inmediato. Acumulador ? Antes de la operación CALL del :lor de :l. el Ita a la ¡ el Dato , Figura 8.14. 8.29. Una instrucción de transferencia inmediata. La instrucción SUB M del 8085 de la Figura 8.15 utiliza el modo de direccionamiento de _ (registro, indirecto de registro). • Acumulador Acumulador Antes de la operación . Memo~~gqdatos . lntel ~stro, Después de la operación Memoria de programa (2050H) ICÍOna­ receio- Acumulador Registro par HL )====:::-:-. ~SUBM 10000 1001 I ~L 1 - 2060H Señalizadores s z AC I Figura 8.15. La instrucción SUB M. http://librosysolucionarios.net p C ce Ca¡¡;:Z 266 ,.~ FUNDAMENTOS DE LOS MICROPROCESADORES Solución: A partir de la Figura 8.1, se determina que el sustraendo proviene de la posición de la memoria de datos señalada por el registro par H L. Esto significa que la instrucción SUB M del 8085 utiliza el modo de direccionamiento indirecto de registro. ~.30. • En la Figura 8.15, el minuendo está localizado en el acumulador mientras que el sus­ traendo se encuentra en la posición ___ (hex) de la memoria de datos. . Solución: '\ En la Figura 8.15, el minuendo está localizado en el acumulador mientras que el sustraendo se \ encuentra en la posición 2060H de la memoria de datos como señala el registro par H L. 8.5. REPERTORIO DE INSTRUCCIONES DEL 8080/8085 Los microprocesadores lntel 8080 y 8085 son utilizados para formar computad,?ras de programa­ almacenado. Las instrucciones del programa son almacenadas como bytes de 8 bits en un área de memoria denominada memoria de programa. El microprocesador Intel 8080/8085 utiliza ins­ trucciones de 1,2 y 3 bytes. El primer byte de la instrucción es siempre el código de op (código de operación), que especifica cuál de las 200 instrucciones del microprocesador debe ejecutarse. La MPU reconoce estos códigos de op cuando están en forma binaria de 8 bits. El conjunto de instrucciones a las cuales responderá la MPU 8080 y 8085 está fijado, permanentemente, en el disefio de las pastillas. El 8085 utiliza los mismos códigos de op que la MPU del 8080. El repertorio de instrucciones del 8085 también contiene dos instrucciones extra, además de las utilizadas por la MPU 8080. Intel Corporation agrupa las instrucciones del microprocesador 8080/8085 en las siguientes categorías funcionales: 1. 2. 3. 4. 5. i , II··~ . ¡ I • ­ Grupo Grupo Grupo Grupo Grupo de transferencia de datos. aritmético. . lógico. de bifurcación. de pila, E/S y de control máquina. El grupo de instrucciones de transferencia de datos transfiere datos. entre registros o entre posiciones de memoria y registros. Entre estas instrucciones se encuentran transferencias, cargas, almacenamientos e intercambios. El grupo aritmético de instrucciones realiza sumas, restas, incrementos o decrementos en datos de registros o memoria. El grupo lógico de instrucciones realiza operaciones ANO, OR Y XOR, comparaciones, desplazamientos circulares o complementaciones de datos en registros o entre memoria y un registro. El grupo de instrucciones de bifurcación indica saltos condicionales o incondicionales, llama­ das, vueltas y reinicializaciones. El grupo de pila, E/S y de control de máquina incluye instruccio­ nes para mantener la pila, leer los puertos de entrada, escribir en los puertos de salida, inicializar y leer máscaras de interrupción e inicializar y borrar sefializadores. Un resumen del repertorio de instrucciones del microprocesador 8080/8085 se detalla en la Figura 8.16. Este es un listado alfabético por nemotécnicos. Se utilizan los nemotécnicos con derecho de copia de Intel junto con los códigos de op únicos del 8080/8085. Los códigos de op http://librosysolucionarios.net 1 .. ..- - ,-.--~ EL MICROPROCESADOR INTEL 8080/8085 Icmoria ltiliza el i ~. \ t el sus- . , i t endo se I \ A ';, IBJ1lma­ área de J iza íns­ idigo de ilf'SC, La Ilnto de :e en el . i). El s de las lUientes J I C I o entre • cargas, I1tO'S en ). OR Y Pstros o " llamaItruccio­ :ializary .tt t " Da en la con de op ICOS )S •'­ D Nemotécnico ADDA ADDB ADDC ADDD ADDE ADDH ADDL ADDM ADI v ADCA ADCB ADCC ADCD ADCE ADCH ADCL ADCM ACI v ANAA ANAB ANAC ANAD ANA E ANAH ANAL ANA M ANI v CALLaa CZaa CNZaa CPaa CM aa CCaa CNCaa CPEaa CPOaa CMA CMC CMPA CMPB CMPC CMPD CMPE CMPH CMPL CMPM CPI v DAA DADB DADD DADH DADSP Código de op (hex) 87 80 81 82 83 84 85 86 C6 8F 88 89 8A 8B 8C 8D 8E CE A7 AO Al A2 A3 A4 A5 A6 E6 CD CC C4 F4 FC DD D4 EC E4 2F 3F BF B8 B9 BA BB BC BD BE FE 27 09 19 29 39 Descripción Suma A a A (doble A) Suma B aA Suma CaA SumaD aA Suma EaA Suma HaA Suma L a A Suma LOC memoria (H & L) a A Suma dato inmediato v a A Suma A a A con arrastre (doble A con arrastre) Suma B a A con arrastre Suma C a A con arrastre Suma D a A con arrastre Suma E a A con arrastre Suma H a A con arrastre Suma L a A con arrastre Suma LOC memoria (H & L) a A con arrastre Suma dato inmediato v a A con arrastre Examina A y borra arrastre ANDBconA ANDCconA ANDD con A ANDE con A ANDHconA ANDL con A AND LOC memoria (H & L) con A AND dato inmediato v con A Call subrutina en dirección aa Si cero, CALL en dirección aa Si no cero, CALL en dirección aa Si más, CALL en dirección aa Si menos, CALL en dirección aa Si arrastre, CALL en dirección aa Si no arrastre, CALL en dirección aa Si paridad par, CALL en dirección aa Si paridad impar, CALL en dirección aa Complementa A Complementa arrastre • Pone a I el señalizador de cero Compara A con B Compara A con C Compara A con D Compara A con E Compara A con H Compara A con L Compara A con LOC memoria (H & L) Compara A con dato inmediato v Ajuste decimal A Suma B & Ca H & L Suma D & E a H & L SumaH & L a H & L (doble H & L) SumaSPa H & L 267 ]1 11 11 '1 Figura 8.16. Resumen del repertorio de instrucciones del microprocesador 8080/8085. (Todos los nemotécnicos tienen derecho de copia © Intel Corporation, 1976,) , http://librosysolucionarios.net t -- I 268 FUNDAMENTOS DE LOS MICROPROCESADORES D / E H Nemotécnico OCRA OCRB DCRe OCRD OCRE OCRH OCRL OCRM OCXB OCXD OCXH I----ÓCXSP DI El HLT IN v INRA INRB INRe INRD INRE INRH INRL INRM INXB INX D INXH J L M INXSP JMPaa JZaa JNZaa JPaa 1M aa JCaa JNCaa lPEaa lPOaa LDAaa LDAXB LDAXD LHLDaa LXI B.vv LXI D,vv LXI H,vv LXI SP.vv MOVA,B MOVA.e MOVA.D MOVA.E MOVA,H MOVA.L MOVA.M Código de op (hex) 3D 05 OD 15 ID 25 2D 35 OB lB 2B 3B F3 FB 76 DB 3C 04 OC 14 IC 24 2C 34 03 13 23 33 C3 CA C2 F2 FA DA D2 EA E2 3A' OA lA 2A 01 11 21 31 78 79 7A 7B 7C 7D 7E -~ Descripción Decrementa A Decrementa B Decrementa e Decrementa D Decrementa E Decrementa H Decrementa L Decrementa LOC memoria (H & L) Decrementa B & e Decrementa D & E Decrementa H & L 1----- Decrementa SP Inhabilita interrupciones Habilita interrupciones Alto hasta interrupción Entrada del dispositivo v Incrementa A Incrementa B Incrementa e Incrementa D Incrementa E Incrementa H Incrementa L Incrementa LOC memoria (H & L) Incrementa B & e Incrementa D & E Incrementa H & L Incrementa SP Salta a dirección aa Si cero, 1MP en dirección aa Si no cero, JMP en dirección aa Si más, JMP en dirección aa Si menos, JMP en dirección aa Si arrastre, JMP en dirección aa Si no arrastre, 1MP en dirección aa Si paridad par, JMP en dirección aa Si paridad impar, JMP en dirección aa Carga A de dirección aa Carga A de LOC memoria (B & C) Carga A de LOC memoria (D & E) Carga H & L de dirección aa Carga B & e con dato inmediato vv Carga D & E con dato inmediato vv Carga H & L con dato inmediato vv Carga SP con dato inmediato vv Transfiere B a A Transfiere e a A Transfiere D a A Transfiere E a A Transfiere H a A Transfiere L a A Transfiere LOC memoria (H & L) a A Figura 8.16. 4 (continuaci6n). http://librosysolucionarios.net JI I ~,-~.~_ I , '~<,­ ~ - - - - - - - - - _ .. Nemotécnico MOV B,A MOV B,e MOV B,D MOV B,E MOV B,H MOVB,L MOV B,M MOV C,A MOV C,B MOV C,D MOVC,E MOVC,H MOV C,L MOV C,M MOVD,A MOV D,B MOVD,e MOV D,E MOVD,H MOV D,L MOV D,M MOV E,A MOV E,B MOV E,e MOV E,D MOV E,H MOV E,L MOV E.M MOV HA MOV H,B MOV H,e MOV H,D MOV H,E MOV H.L MOV H,M MOV L.A MOV L.B MOV L,e MOVL,D MOV L,E MOV L.H MOV L.M MOVM,A MOVM,B MOVM,e MOVM,D MOVM,E MOVM,H MOV M,L MVIA,v MVI B,v MVI e,v MVID,v MVIE,v MVI H.v MVI L,v MVI M.v Código de op (hex) 47 41 42 43 44 45 46 4F 48 4A 48 4C 40 4E 57 50 51 53 54 55 56 5F 58 59 5A 5e 50 5E 67 60 61 62 63 65 66 6F 68 69 6A 68 6C 6E 77 70 71 72 73 74 75 3E 06 OE 16 lE 26 2E 36 269 Descripción Transfiere A a B Transfiere e a B Transfiere D a B Transfiere E a B Transfiere H a B Transfiere L a B Transfiere LOC memoria (H & L) a B Transfiere A a e Transfiere B a e Transfiere D a e Transfiere E a e Transfiere H a e Transfiere L a e Transfiere LOC memoria (H & L) a e Transfiere 4. a D Transfiere B a D Transfiere e a D Transfiere E a D Transfiere Ha D Transfiere L a D Transfiere LOC memoria (H & L) a D Transfiere A a E Transfiere B a E Transfiere e a E Transfiere D a E Transfiere H a E Transfiere L a E Transfiere Loe memoria (H & L) a E Transfiere A a H Transfiere BaH Transfiere e aH Transfiere Da H Transfiere E a H Transfiere L aH Transfiere LOC memoria (H & L) a H Transfiere A a L Transfiere B a L Transfiere e a L Transfiere D a L Transfiere E a L Transfiere Ha L Transfiere Loe memoria (H & L) a L Transfiere A a LOC memoria (H & L) Transfiere B a LOC memoria (H & L) Transfiere e a LOC memoria (H & L) Transfiere D a Loe memoria (H & L) Transfiere E a LOC memoria (H & L) Transfiere H a Loe memoria (H & L) Transfiere L a LOC memoria (H & L) Transfiere dato inmediato va A Transfiere dato inmediato va B Transfiere dato inmediato v a e Transfiere dato inmediato v a D Transfiere dato inmediato v a E Transfiere dato inmediato v a H Transfiere dato inmediato vaL Transfiere dato inmediato va memoria LOC (H &: L) Figura 8.16. " . (continuación) • http://librosysolucionarios.net • ,--~ ÉL MICROPROCESADOR INTEL 8080/8085 M ·.i.' .. _~. 1 .. .. .P- • , «. § ~,------"------------------------------------------------------ 270 FUNDAMENTOS DE LOS MICROPROCESAOORES N O , r I I '1 P R S Nemotécnico NOP ORAA ORAB ORAC ORAD ORA E ORAH ORAL ORAM ORII' OUT v PCHL POPB POPD POPH POPPSW PUSHB PUSHD PUSHH PUSHPSW RAL RAR RLC RRC RIM RET RZ RNZ RP RM RC RNC RPE RPO RSTO RST l RST2 RST3 RST4 RST5 RST6 RST7 SIM SPHL SHLDaa STA aa STAXB STAXD STC Código de op (hex) 00 B7 SO BI B2 B3 B4 B5 B6 F6 D3 E9 CI DI El Fl C5 D5 ES F5 17 IF 07 OF 20 C9 C8 CO FO F8 D8 DO E8 EO C7 CF D7 DF E7 EF F7 FF 30 F9 22 32 02 12 37 Descripción No operación Examina A y borra arrastre 0R Bcon A OR Ceon A OR Deon A OR Feon A OR HeonA OR LeonA OR LOC memoria (H & L) con A OR dato inmediato v con A Saca A a dispositivo v Salta a LOC memoria contenida en (H & L) Saca B & C de pila Saca D & E de pila Saca H & L de pila Saca A y los señalizadores de pila Introduce B & C en pila Introduce D & E en pila Introduce H & L en pila Introduce A y los señalizadores en pila Desplazamiento circular CY + A a la izquierda Desplazamiento circular CY + A a la derecha Desplazamiento circular A a la izquierda y arrastre Desplazamiento circular A a la derecha y arrastre Lee máscara de interrupción (8085 sólo) Vuelve de subrutina Si cero, vuelve de subrutina Si no cero, vuelve de subrutina Si más, vuelve de subrutina Si menos, vuelve de subrutina Si arrastre, vuelve de subrutina Si no arrastre, vuelve de subrutina Si paridad par, vuelve de subrutina Si paridad impar, vuelve de subrutina Rearrancar subrutina en dirección OOH Rearrancar subrutina en dirección 08H Rearrancar subrutina en dirección IOH Rearrancar subrutina en dirección 18H Rearrancar subrutina en direcc1ón 20H Rearrancar subrutina en dirección 28H Rearrancar subrutina en dirección 30H Rearrancar subrutina en dirección 38H Pone a l máscara de interrupción (8085 sólo) Carga SP de H & L Almacena H & L en LOC memoria aa Almacena A en LOC memoria aa Almacena A en LOC memoria (B & C) Almacena A en LOC memoria (D & E) Pone a l seiializador de arrastre Figura 8.16. (continuaci6n). \ t, ! ¡­,1 ! • l' la tiene :...;. ci0la4 la 1lllI!oll: apro:u:: UnCSbl tinuacic http://librosysolucionarios.net m EL MICROPROCESAOOtt INTEL 8080;8085 I ): I I Código de op (hex) Nemotécnico, SUBA SUBB SUBC SUBD SUBE SUBH SUBL , \ ~\ '.'. S . " " SUBM SUI v SBBA SBBB SBBC SBBD SBBE SBBH SBBL SBBM X SBI v XCHG XTHL XRAA XRAB XRAC XRAD XRAE XRAH XRAL XRAM XRI v 97 90 91 92 93 94 95 96 D6 9F 98 99 9A 98 9C 90 9E DE EB E3 AF A8 A9 AA AB AC AD AE EE '. 271 Descripción Borra A Resta B de A Resta Cde A Resta DdeA Resta E de A Resta H deA Resta L de A Resta contenido de LOC memoria (H & L) de A Resta dato inmediato v de A Pone A con arrastre menos Resta B de A con préstamo Resta C de A con préstamo Resta D de A con préstamo Resta E de A con préstamo Resta H de A con préstamo Resta L de A con préstamo Resta LOC memoria (H & L) de A con préstamo Resta dato inmediato v de A con préstamo Cambia D & E con H & L Cambia tope de pila con H & L Borra A OR exclusiva de B con A OR exclusiva de C con A OR exclusiva de D con A OR exclusiva de E con A OR exclusiva de H con A OR exclusiva de L con A OR exclusiva de LOC memoria (H & L) con A OR exclusiva de dato inmediato v con A Figura 8.16. (continuación). están representados en notación hexadecimal en la Figura 8.16. También una breve descripción para cada una de las 239 instrucciones del microprocesador. En la Figura 8.16 se utilizan dos instrucciones exclusivas de la MPU 8085. Estas son las instrucciones RIM y SIM. El repertorio de instrucciones del microprocesador genérico (Cap. 6) es un subconjunto del 8080/8085 y por tanto utiliza los mismos nemotécnicos y códigos de operación. Como la MPU 8080/8085 tiene más registros y funciones que el microprocesador genérico, ésta necesitará más instrucciones. Por ejemplo, el repertorio de instrucciones del microprocesador genérico tiene cuatro instrucciones de suma (ver Fig. 6.4), mientras que las 18 primeras instrucciones listadas en la Figura 8.16 para la MPU del 8080/8085 son instrucciones de suma. El 8080/8085 también tiene cuatro instrucciones más de suma doble (DAD B. DAD D. etc.) para un total de 22 instruc­ ciones de suma. Después de utilizar el repertorio de instrucciones del microprocesador genérico, la mayoría de los estudiantes tendrá un conocimiento razonable de la función que realizan aproximadamente la mitad de las instrucciones del 8080/8085 listadas en la Figura 8.16. Un estudio más detallado del repertorio de instrucciones de la MPU 8080/8085 se dará a con­ tinuación. http://librosysolucionarios.net - I ~ . 272 FUNDAMENTOS DE LOS MICROPROCESADORES PROBLEMAS RESUELTOS 8.31. Acudir a la Figura 8.16. ¿Cuántas instrucciones lógicas AND hay listadas para el micro­ procesador 8080/8085? Solución: El resumen del repertorio de instrucciones del 8080/8085 de la Figura 8.16 listaba nueve opera­ ciones AND diferentes comenzando con ANA A. 8.32. / 8.33. Acudir a la Figura 8.16. El repertorio de instrucciones del microprocesador genérico contiene una instrucción de llamada a subrutina, mientras que la MPU 8080/8085 pue­ de realizar _ _ (número) de operaciones de llamada diferentes. Solución: La MPU 8080/8085 puede realizar nueve operaciones de llamada diferentes empezando con la instrucción CALL aa en la Figura 8.16. Acudir a la Figura 8.16. El repertorio de instrucciones del 8080/8085 lista _ _ (núme­ ro) de operaciones de resta diferentes. Solución: El repertorio de instrucciones del 8080/8085 lista 18 operaciones diferentes de resta empezando con SUB A en la Figura 8.16. No están incluidas operaciones de comparación que utilizan restas internas cuando se comparan datos. 8.34. Acudir a la Figura 8.16. Algunos nemotécnicos del 8080/8085 tienen una X adicional como, por ejemplo, CDX B, INX B. LXI B Y STAX B. Cada vez que aparece la X en estas instrucciones, un ______ (registro par, registro simple) es afectado por la operación. Solución: De acuerdo con las descripciones de la Figura 8.16, cada vez que aparece una X adicional en las instrucciones (como CDX B. INX B, LXI B Y STAX B), un registro par es afectado por la opera­ ción. t 8.6. INSTRUCCIONES DE TRANSFERENCIA DE DATOS DEL 8080/8085 Un resumen de las instrucciones de transferencia de datos del microprocesador 8080/8085 se muestra en la Figura 8.17. Estas instrucciones incluyen operaciones de transferir, intercambiar, cargar y almacenar. La Figura 8.17 da sólo los nemotécnicos y los códigos de op hexadecimales para estas 84 instrucciones. Las instrucciones de transferencia de datos son de las más utilizadas del microprocesador. El grupo de instrucciones de transferencia de datos se detallará en las páginas 275-277 utilizan­ do el formato propio de lntel Corporation. Este grupo de instrucciones transfiere datos a y desde registros y memoria. Los señalizadores de condición no son afectados por cualquier instrucción de este grupo. Acudir a la Figura 8.18 para el significado de las abreviaturas (como por ejemplo rl, DDD, SSS, etc.) utilizadas en las siguientes descripciones del Manual del Usuario de Intel. http://librosysolucionarios.net I • ·$1 ~, ,~~-, ,,> , / L~ EL MICROPROCESADOR INTEL 8080/8085 Transfiere micro- t ~opera " I MOV A,A A,B A,C A.D A.E A,H A.L A.M 7F 78 79 7A 7B 7C 7D 7E MOV B,A B,B B,e B,O B,E B,H B,L B,M 47 40 41 42 43 44 45 46 CA e,B CC CD CE CH e,L CM 4F 48 49 4A 4B 4C 4D 4E O,A O,B o,e 0,0 O,E D,H D,L D,M 57 50 51 52 53 54 55 56 mérico 15 pue- Lb , / I , 1 H 'núme­ I lóL ~85 MOV t i 11 opera­ MOV E,A E,B E,C E,D E,E E,H E,L E,M 5F 58 59 5A 5B 5e 50 5E MOV H,A H,B H,e H,D H,E H,H H,L H,M 67 60 61 62 63 64 65 66 L,A L.B LC L,O L,E L,H L,L L,M 6F 68 69 6A 6B 6C 6D 6E M,A M,B M,e M,D M,E M,H M,L 77 A,byte B,byte Cbyte O.byte E,byte H,byte L,byte M,byte MVI 3E 06 OE 16 lE 26 2E 36 Carga inmediato { LXI BAb~ 01 O,dble 11 H,dble 21 SP,dble 31 earga/Almacena -~stas en las Transfiere inmediato Transfiere (cont) I !, t!e'Zando licional 13 X en JXlr la 273 , MOV MOV LOAXB LOAXO LHLD adr LOA adr OA lA 2A 3A STAXB STAXS SHLO adr STA adr 02 12 22 32 i . MOV XCHG ;~ l 70 71 72 73 74 75 ~ I EB adr - dirección de 16 bits (segundo y tercer bytes de instrucciones de 3 bytes) se ~1 biar, :cimales tilizadas ¡atilizan­ y desde trucción ejemplo :le Intel. Figura 8.17. Resumen de las instrucciones de transferencia de datos del 8080/8085. (Todos los nemotécnicos tienen derecho de copia © de Intel Corporation, 1976,) , i Considerar la instrucción MOV A,B (código de op = 78H) del 8080/8085. MOV A,B puede representar una instrucción que transfiere datos del registro B al acumulador (registro A), Este tipo de instrucción está detallada en la página 275 en la sección «transfiere registro» (MOV rl, r2). Observar que el primer registro (A en este ejemplo) es el destino de la transferencia, mientras que " ¡ http://librosysolucionarios.net l· 214 FUNDAMENTOS DE tos MICROPROCESADORES SIMBOLOS SIGNIFICAOO acumulador addr dato 16 datos byte 2 Registro A Dirección de 16 bits Cantidad de 8 bits Datos de 16 bits El segundo byte de la instrucción rh byte 3 El tercer byte de la instrucción rI puerto Dirección de 8 bits de un dispositivo de E/S Uno de los registros A.B.C,O.E.H,L PC SP DDD.SSS rp , .'...•. ' " RP REGISTRO PAR 00 B-C O-E 01 10 H-L II SP El primer registro (orden superior) de un registro par designado. El segundo registro (orden inferior) de un registro par designado. El contador de programa de 16 bits (PCH y PCL son utilizados para refe­ renciar los 8 bits de orden superior e inferior respectivamente). Registro puntero de pila de 16 bits (SPH y SPL son utilizados para refe­ renciar los 8 bits de orden superior e inferior respectivamente). Bit m del registro r (los bits están nu­ merados de 7 a O de izquierda a dere­ cha). Dirección de 16 bits de subrutina. Los señalizadores de condición: Cero Signo Paridad Arrastre Arrastre auxiliar Contenido de la posición de memoria o registro encerrado en los paréntesis. «Es transferido a» ANO lógica OR exclusiva OR inclusiva Suma Resta en complemento a dos Multiplicación «Se intercambia con,. El complemento a uno (ej., (A» Número de O a 7 Representación binaria de 000 a I11 para los núms. O a 7 respectivamente. RP El patrón de bits designa uno de los registros A.B.C,O.E,H.L (000 a des­ tino. SSS a fuente): DDD o REGISTRO NOMBRE SSS 111 A 000 B 001 C rm ETIQUETA Z 010 O S 011 E P 100 H 101 L Uno de los registros pares: B representa el par B.C siendo B el re­ gistro de orden superior y C el de orden inferior; O representa el par D,E siendo O el registro de orden superior y E el de orden inferior, H representa el par H,L siendo H el registro de orden superior y L el de oro den inferior, SP representa el registro puntero de pila de 16 bits. El patrón de bits designa uno de los registros pares B,O.H,SP: CY AC ( ) <1­ 1\ y V + • _ n NNN cua zad dat! fun, Md (r' '·91 Din .J MOl Figura 8.18. Abreviaturas utilizadas con las descripciones de Intel Corporation. (Cortesía de ¡mel Corporatíon.) el segundo registro (B en este ejemplO) es la fuente del dato. El patrón del código de op general para este tipo de instrucción es OlDDDSSS y puede completarse utilizando la información de la Figura 8.18. El destino es el acumulador que utiliza el patrón de bits I l 1, mientras que la fuente es el registro B, que utiliza el patrón de bits 000. El código de op es entonces 01 III 000 2, ó 78 en la notación hexadecimal. De acuerdo con la información previa de Intella instrucción MOV A,B utiliza un ciclo máquina para ejecutar la transferencia de datos. El ciclo máquina del 8085 utiliza http://librosysolucionarios.net «1 9 ~ fe EL MICROPROCESADOR rNTEL 8080/8085 cuatro estados T. La instrucción MOV A,B utiliza direccionamiento de registro y ningún sefiali­ zador es afectado durante la ejecución de esta instrucción. Cada instrucción de transferencia de datos de la Figura 8.17 encaja una de las categorías más generales y puede analizarse como funciona. o I rior) de mr)de 16 bits refe­ perior e MOV rl, r2 (Transfiere registro) (rl) +- (r2) El contenido del registro r2 es transferido al registro r 1. Da 16 bits refe­ ¡perior e IR Ilán nu­ 1a 275 dere­ 1I'!'~:1loria . ~sis. , ;A 1I o 1 l I D.I D Ciclos: Estados: Direccionamiento: Señalizadores: 1D IS 1 S 1 S MOV M, r 1 O 2 1 O O S S 2 7 indirecto de reg. ninguno I O O dato Ciclos: Estados: Direccionamiento: El contenido del registro r es transferido a la posición de memoria cuya dirección está en los registros H y L. Ciclos: Estados: Direccionamiento: Señalizadores: 1 indirecto de reg. nmguno (Transfiere a memoria) 1 1 1 7 inmediato ninguno MVI M, dato (Transfiere a memoria in­ mediata) «H) (L)) +- (byte 2) El contenido del byte 2 de la instrucción es transferido a la posición de memoria cuya dirección está en los registros H y L. O 7 2 Ciclos: Estados: Direccionamiento: Sefializadores: «H) (L)) +- (r) o O dato MOV r, M (Transfiere de memoria) (r) +- «H) (L)) El contenido de la posición de memoria, cuya dirección está en los registros H y L es transferido al registro r. Ciclos: Estados: Direccionamiento: Señalizadores: O 1 4 (8085), 5 (8080) registro ninguno 10 a 111 nrnente. general )n de la 1 fuente ó 78 en DVA,B 5 utiliza I MVI r, dato (Transferencia inmediata) (r) +- (byte 2) El contenido del byte 2 de la instrucción es transferido al registro r., S Sefializadores: 3 10 inmed./indirecto de reg. ninguno LXI rp, dato 16 (Carga registro par inme­ diato) (rh) +- (byte 3), (rl) +- (byte 2) El byte 3 de la instrucción es transferido al registro de orden superior (rh) del regis­ tro par rp. El byte 2 de la instrucción es http://librosysolucionarios.net 276 I , FUNDAMENTOS DE LOS MICROPROCESADORES transferido al registro de orden inferior (rl) del registro par rp. OIOIRTPlo'O'o' l Ciclos: Estados: Direccionamiento: Señalizadores: u 4 13 directo ninguno e dato de orden inferior dato de orden superior Ciclos: Estados: Direccionamiento: Señalizadores: 3 10 inmediato· ninguno LDA addr (Carga acumulador directo) (A) <E- «byte 3)(byte 2» El contenido de la posición de memoria, cuya dirección está especificada en los bytes 2 y 3 de la instrucción, es transferi­ do al registro A. o I O I l ' 1'110'1'0 dir. orden inferior LULD addr (Carga H y L directo) (L) <E- «byte 3)(byte 2» (H) <E- «b)1e 3)(byte 2) + 1) El contenido de la posición de memoria, cuya dirección está especificada en los bytes 2 y 3 de la instrucción, es transferi­ do al registro L. El contenido de la posi­ ción de memoria en la dirección siguiente es transferido al registro H. 4 13 directo ninguno STA addr (Almacena acumulador directo) «byte 3)(byte 2» <E- (A) El contenido del acumulador es transferi­ do a la posición de memoria cuya direc­ ción está especificada en los bytes 2 y 3 de la instrucción. Of O I 1 I l 'O ' O ' 1 I O dir. orden inferior dir. orden superior g G ] " Dir ..; "l O ' O ' 1'0'1'0'1'0 dir. orden inferior STA] dQl «q dir. orden superior Ciclos: Estados: Direccionamiento: Señalizadores: EI~ all 5 esU .,. 16 directo ninguno dir. orden superior Ciclos: Estados: Direccionamiento: Señalizadores: r. tJ J ----..o:• SULD addr (Almacena H y L directo) «byte 3)(byte 2» <E- (L) «byte 3)(byte 2) + 1) <E- (H) El contenido del registro L es transferido a la posición de memoria, cuya dirección está especificada en los bytes 2 y 3. El contenido del registro H es transferido a la posición de memoria siguiente. 8.35. 4 i ,. J 1 O 'O 1 I 'O ' 0 ' 0 1'0 dir. orden inferior dir. orden superior Ciclos: Estados: Direccionamiento: Señalizadores: http://librosysolucionarios.net 5 16 directo ninguno 8.36. I j EL MICROPROCESADOR INTEL 8080/8085 LDAX rp (Carga indirecto el acumulador) (A) ~ «rp» El contenido de la posición de memoria, cuya dirección está en el registro par rp, es transferido al registro A. Nota: sola­ mente pueden ser especificados los regis­ tros rp = B (registros B y C) o rp = D (re­ gistros D y E). ~ ; :mori~ en los ansferi­ la posi­ iguiente 1 Ciclos: Estados: Direccionamiento: Señalizadores: rp = B (registros B y C) o rp = D (registros D y E). O I O 7 indirecto de reg. ninguno O STAX rp (Almacena indirecto el acumula­ dor) «rp» ~(A) El contenido del registro A es transferido a la posición de memoria cuya dirección está en el registro par rp. Nota: solamente pueden ser especificados los registros R p Ciclos: Estados: Direccionamiento: Señalizadores: XCHG 2 277 O 1O O 2 7 reg. indirecto ninguno (Intercambia H y L con D y E) (H) +-> (D) (L) +-> (E) Los contenidos de los registros H y L son intercambiados con los contenidos de los registros D y E. 1111110 Ciclos: Estados: Direccionamiento: Señalizadores: 10 1 111 1 4 registro ninguno PROBLEMAS RESUELTOS lirecto) 8.35. ~nsferidO dirección • 2 Y 3. El ansferido a 'Ote. la Solución: 1 1 I O o El código de op para la instrucción MOV A.M es _ _ (hex). Esta operación transfiere datos _ _ (de una posición de memoria, del registro A) ~_ (a una posición de memoria, al registro A). La posición de memoria se identifica por el contenido del _ _ (registro par HL. segundo y tercer bytes de la instrucción). La instrucción MOV A,M utiliza _ _ (número) ciclos máquina 'i _ _ (número) estados T. La ins­ trucción MOV A,M utiliza direccionamiento _ _ (directo, indirecto de registro). , 8.36. " De acuerdo con la Figura 8.11 y la descripción de Intel «transfiere de memoria» el código de op para la instrucción MOV A.M es 1EH. Esta operación transfiere datos de una posición de memoria al registro A. La posición de memoria está identificada por el contenido del registro par HL. La instrucción MOV A.M utiliza dos ciclos máquina y siete estados T para su ejecución. La instruc­ ción MOV A,M utiliza direccionamiento indirecto de registro. El código de op para la instrucción MOV M,e es _ _ (binario). Esta operación trans­ fiere datos desde _ _ (una posición de memoria, el registro C). La posición de memer ria está identificada por el contenido del _ _ (registro par HL. segundo y tercer byteS de la instrucción). La instrucción MOV M.e utiliza ___ (número) ciclos máquina y _ _ (número) estados T. La instrucción MOV M,e utiliza direccionamien­ to _ _ (inmediato, indirecto de registro). http://librosysolucionarios.net • 278 FUNDAMENTOS DE LOS MICROPROCESADORES Solución: De acuerdo con la Figura 8.17 y la descripción de Intel «transfiere a memoria», el código de op para la instrucción MOV M,e es 01110001 2, Esta operación transfiere datos desde el registro e a una posición de memoria. La posición de memoria está identificada por el contenido del registro par HL. La instrucción MOV M,e utiliza dos ciclos máquina y siete estados T durante la ejecu­ ción. La Ínstrucción MOV M.e utiliza direccionamiento indirecto de registro. 8.37. El código de op del 8085 para la instrucción MVI H esbozada en la Figura 8.19 es _ _ (binario). M Solución: De acuerdo con la Figura 8.17, el código de op del 8085 para la instrucción MVI H esbozada en la Figura 8.19 es 00 100 1102 Ó 26H. Registro H ¡ 1:; 11111 0000 I I? ~ Antes de la operación " Código de operación " , , ,. ir. ;~ Memoria de programa ~ ~ 8.4 Registro H Después de la 'operación MVIH Datos Figura 8.19. 8.7. 8.38. El contenido del registro H después de la operación MVI H mostrada en la Figura 8.19 es _ _ (8 bits). Solución: La instrucción MVI H utiliza el modo de direccionamiento inmediato. El dato inmediato 0000000 I de la memoria del programa es transferido al registro H durante esta operación de trans­ ferencia. !tr 8.39. I La instrucción MVI H mostrada en la Figura 8.19 utiliza _ _ (número) ciclos máqui­ na y ___ (número) estados T para ejecutar la transferencia de datos. Solución: De acuerdo con la descripción de Intel «transferencia inmediata». la instrucción MVI H mos­ trada en la Figura 8.19 utiliza dos ciclos máquina y siete estados T para ejecutar la transferencia de datos. r 8.40. La instrucción SHLD mostrada en la Figura 8.20 utiliza el modo de direccionamien­ to _ _ (directo, inmediato). Solución: De acuerdo con la descripción de Intel, la instrucción SHLD mostrada en la Figura 8.20 utiliza direccionamiento directo. http://librosysolucionarios.net Un Fqp con P I ..= prq de, pr6 guir AD 'f'- <7 • ¡ "D, , ',' " ' ' EL MICROPROCESADOR INTEL 8080/8085 .Ca 1 pstro 1 leop Registro H 1111 0000 1010 1010 ? Registro L 1010 1010 ? 3103H t ;;ecu- Antes de la operación Ida en Memoria de datos Después de la operación Código de operación Memoria de programa 279 200AH 22H 200BH 02H 200cH 31H SHLD Figura 8.20. 8.41. ~ l Después de la operación de almacenar ilustrada en la Figura 8.20, la posición de la memoria de datos _ _ (hex) contiene 10 10 10 10 2, mientras que la posición 3103H contiene _ _ (8 bits). Solución: La instrucción SHLD utiliza direccionamiento indirecto, así que la dirección de 16 bits es ensamblada con el segundo y tercer bytes de la memoria de programa. Por tanto, después de la operación de almacenar ilustrada en la Figura 8.20, la posición 3103H de la memoria de datos contiene 111100002, mientras que la posición 3102H contiene 101010102, • 8.7. INSTRUCCIONES ARITMETICAS DEL 8080/8085 t Un resumen de las instrucciones aritméticas del microprocesador 8080/8085 se muestra en la Figura 8.21. Estas instrucciones incluyen las operaciones de suma, suma con arrastre, resta, resta con préstamo, incrementación, decrementación y ajuste decimal. Sólo los nemotécnicos y códi­ gos de operación de las instrucciones aritméticas se dan en la Figura 8.21 en la página 283. Como en la sección anterior, el grupo aritmético de instrucciones se detallará utilizando el propio formato de Inte! Corporation. Este grupo de instrucciones realiza operaciones aritméticas sobre datos en registros y memoria. A menos que se indique otra cosa, todas las instrucciones de este grupo afectan a los sefializadores de cero (Z), de signo (S), de paridad (P), de arrastre (eY) y de arrastre auxiliar (AC). Todas las operaciones de resta son realizadas vía aritmética de comple­ mento a 2 y ponen el sefializador de arrastre a 1 para indicar un préstamo y a O para indicar no préstamo. Acudir a la Figura 8.18 para los significados de las abreviaturas utilizadas en las si­ guientes descripciones del Manual del Usuario de lntel. n8.19 mediato de trnns­ .máqui­ ¡Hm~ rencia de ... namien­ .20 utiliza ADD r (Suma registros) (A) <E- (A) + (r) El contenido del registro r es sumado al contenido del acumulador. El resultado se coloca en el acumulador. Ciclos: Estados: Direccionamiento: Sefializadores: 1 4 registro Z,S,P,CY,AC ADD M (Suma memoria) (A) <E- (A) + «H) (L» El contenido de la posición de memoria http://librosysolucionarios.net I f I 280 FUNDAMENTOS DE LOS MICROPROCESÁDORES cuya dirección está contenida en los regis­ tros H y L es sumado al contenido del acumulador. El resultado se coloca en el acumulador / 2 7 indirecto de res. Z,S,P,CY,AC Ciclos: Estados: Direccionamiento: Señalizadores: El contenido del segundo byte de la ins­ trucción es sumado al contenido del acu­ mulador. El resultado se coloca en el acu­ mulador. Aa dato (A) _ (A) + (r) + (CY) Dil (Suma inmediata con arrastre) El contenido del segundo byte de la ins­ trucción y el contenido del señalizador CY son sumados al contenido del acumu­ lador. El resultado se coloca en el acumu­ lador. f 2 7 Ciclos: Estados: Direccionamiento: Señalizadores: ET tru mi mi E Dim f inmediato Z,S,P,CY,AC I SUB r (Resta registro) (A) _ (A) - (r) El contenido del registro r es restado del contenido del acumulador. El resultado se coloca en el acumulador. [ 1 4 registro Z,S,P,CY,AC SUJ (A • ..1 El contenido del registro r y el contenido del bit de arrastre son sumados al conte­ nido del acumulador. El resultado se co­ loca en el acumulador. I G (A) _ (A) + (byte 2) + (CY) AOC r (Suma registro con arrastre) Ciclos: Estados: Direccionamiento: Señalizadores: ( t a a 2 7 indirecto de reg. Z,S,P,CY,AC Ciclos: Estados: Direccionamiento: Señalizadores: O 2 7 inmediato Z,S,P,CY,AC Ciclos: Estados: Direccionamiento: Señalízadores: Sl (A) _ (A) + «H) (L» + (CY) El contenido de la posición de memoria cuya dirección está contenida en los regis­ tros H y L y el contenido del señalizador CY son sumados al acumulador. El resul­ tado se coloca en el acumulador {: ADI dato (Suma inmediata) (A) _ (A) + (byte 2) I AOC M (Suma memoria con arrastre) l I I O I O Ciclos: Estados: Direccionamiento: Señalizadores: I~ I S I S 1 4 registro Z,S,P,CY,AC I S SBDI (A) El, del del eh c= .~ Din , http://librosysolucionarios.net ~ , '.i: -''Ir r '\ f~ ­ . . . ;tU o_ ji•.," '1', ,oc 44= 41V" ,;q;: ,'1 i: 1 281 EL MICROPROCESADOR INTEL 8080/8085 moria regis­ izador resul­ SUB M (Resta memoria) (A) +- (A) «H) (L» El contenido de la posición de memoria cuya dirección está contenida en los regis­ tros H y L es restado del contenido del acumulador. El resultado se coloca en el acumulador SBB M (Resta memoria con préstamo) (A) +- (A) - «H) (L» - (CY) El contenido de la posición de memoria cuya dirección está contenida en los regis­ tros H y L y el contenido del señalizador CY son ambos restados del acumulador. El resultado se coloca en el acumulador 1'0'0'1'1'1'1'0 Ciclos: Estados: Oireccionamiento: Señalizadores: t la ¡ns­ alizador acumu­ ,acumu- SUI dato (Resta inmediata) (A) +- (A) (byte 2) El contenido del segundo byte de la ins­ trucción es restado del contenido del acu­ mulador. El resultado se coloca en el acu­ mulador. : I dato Ciclos: Estados: Oireccionamiento: Señalizadores: I :stado del resultado Ciclos: Estados: Oireccionamiento: Señalizadores: 2 7 indirecto de reg. Z,S,P,CY,AC I O 2 7 indirecto de reg. Z,S,P,CY,AC SBI dato (Resta inmediata con préstamo) (A) +- (A) - (byte 2) (CY) El contenido del segundo byte de la ins­ trucción y el contenido del señalizador CY son ambos restados del acumulador. El resultado se coloca en el acumulador. I 2 7 inmediato Z,S,P,CY,AC SBB r (Resta registro con préstamo) (A) +- (A) - (r) (CY) El contenido del registro r y el contenido del señalizador CY son ambos restados del acumulador. El resultado se coloca en el acumulador, t-1-__I_o_I_~_~_1_1_1_1_1 Ciclos: Estados: Oireccionamiento: Señalizadores: _'_0-1 2 7 inmediato Z,S,P,CY,AC INR r (Incrementa registro) (r) +- (r) + 1 El contenido del registro r es incrementa­ do en uno. Nota: Todos los señalizadores de condición excepto CY están afectados. 0101010101110101 Ciclos: Estados: Oireccionamiento: Señalizadores: 1 4 registro Z,S,P,CY,AC Ciclos: Estados: 'Direccionamiento: Señalizadores: . http://librosysolucionarios.net 1 4 (8085), 5(8080) registro Z,S,P,AC : 282 I FUNDAMENTOS DE LOS MICROPROCESADORES INR M (Incrementa memoria) «H) (L) _ «H) (L» + I El contenido de la posición de memoria cuya dirección está contenida en los regis­ tros H y L es incrementado en uno. Nota: Todos los señalizadores de condición ex­ cepto CY son afectados. Ciclos: Estados: Direccionamiento: Señalizadores: (Decrementa registro) (r)_(r)- l El contenido del registro r es decrementa­ do en uno. Nota: Todos los señalizadores de condición excepto CY son afectados. oloIDIDIDIIIO~ll 1 1 1 1 Ciclos: Estados: Direccionamiento: Señalizadores: mentado en uno. Nota: Ningún seitaliza­ dor de condición es afectado. Ciclos: Estados: Direccionamiento: Señalizadores: 4 (8085), 5 (8080) registro Z,S,P,AC lO I I lO 1: 1 3 10 indirecto de reg. Z,S,P,AC INX rp (Incrementa registro par) (rh) (rl) _ (rh) (rI) + l El contenido del registro par rp es incre­ l 6 (8085), 5 (8080) registro ninguno OCX rp (Decrementa registro par) (rh) (rJ) _ (rh) (rl) - l El contenido del registro par rp es decre­ mentado en uno. Nota: Ningún seitaliza­ dor de condición es afectado. '. Ciclos: Estados: Direccionamiento: Señalizadores: 1 6 (8085), 5 (8080) registro ninguno . "~ I DAD rp (Suma registro par a H y L) (H) (L) _ (H) (L) + (rh) (rl) El contenido del registro par rp es suma­ do al contenido del registro par H y L. El resultado es colocado en el registro par H y L. Nota: Sólo es afectado el seitalizador CY. Se pone a 1 si hay un arrastre en la suma en doble precisión; en cualquier otro caso está en reinicialización. Ciclos: Estados: Direccionamiento: Señalizadores: 3 10 registro CY ---... bJe­ DAA (Ajuste decimal acumulador) El número de ocho bits del acumulador es ajustado para formar dos dígitos Deci­ males Codificados en Binario de cuatro bits, por el siguiente proceso: http://librosysolucionarios.net m 1 l DCR M (Decrementa memoria) «H) (L» _ «H) (L» - l El contenido de la posición de memoria cuya dirección está contenida en los regis­ tros H y L es decrementado en uno. Nota: Todos los señalizadores de condición ex­ cepto CY son afectados. o 10 \ "'. 3 10 indirecto de reg. Z,S,P,AC DcR r Ciclos: Estados: Direccionamiento: Señalizadores: , t .... T--. - I Suma* eilaliza- ~ AOO 87 80 81 82 83 84 85 86 AOC A 8 C O E H L M 8F 88 89 8A 88 8C 80 8E J t es decre­ señaliza- ~ i (8080) Incrementa** A 8 C O E H L M (8080) INR A 8 C O E H L M INX { 8 O H SP \ . es suma­ H y L. El lrO par H l'ializador t5'!re en la Jalquier SUB A 8 C O E H L M 97 90 91 92 93 94 95 96 A 8 C O 9F 98 99 9A 98 9C 90 9E E H L M 11. Doble sumat OAO{ ~ SP 3C 04 OC 14 IC 24 2C 34 03 13 23 33 Decrementa** OCR A 8 C O E H L M 30 05 00 15 ID 25 2D 35 OB INX { 8 O H SP Resta* SUB or) umulador ~tos Deci­ EL MICROPROCESADOR INTEL 8080;8085 18 28 38 Especial DAA* 27 Inmediato ADI byte ACI byte SUI byte S81 byte C6 CE D6 OE 09 19 29 39 byte - expresión constante o lógica/aritmética que evalúa un dato de 8 bits (segundo byte de instrucciones de 2 bytes) • - todos los sei\alizadores le. z. S. p. AC) afectados •• ­ todos los sei\alizadores excepto el de ARRASTRE son afectados (excepción: INX y DXC no afectan a los sei\alizadores) t - sólo CY (ARRASTRE) afectado Todos los nemotécnicos tienen derecho de copia de Intel Corporation 1976 de cuatro Figura 8.21. Resumen de las instrucciones aritméticas del 8080/8085. http://librosysolucionarios.net 283 .-7--­ r 284 FUNDAMENTOS DE LOS MICROPROCESADORES 2. Si el valor de los 4 bits más significati­ Ciclos: Estados: Señalizadores: vos del acumulador es ahora mayor que 9, se suma 6 a los 4 bits más significativos del acumulador. Intel 1 del C( conte ejecU' que II y siet Z,S,P,CY,AC u (A) +- (A) + (r) + (Cn Esto significa que el contenido de r (registro B en este ejemplo) y el contenido del bit de arrastre (CY) son sumados al contenido del acumulador (registro A). La suma es depositada en el acumu­ lador. La descripción de Intel muestra que esta operación utiliza una instrucción de 1 byte. La descripción también muestra que la instrucción ADC B es ejecutada en un ciclo máquina y cuatro estados T. Se utiliza el modo de direccionamiento de registro, y todos los señalizadores (2, r. S, P, CY Y AC) son afectados por la ejecución de esta instrucción. I La instrucción ADC B (suma registro B con arrastre) está ejecutándose en la Figura 8.22. El ! contenido del registro A (10000000 en este ejemplo) se suma al del registro B (10000000) y al del/' bit de arrastre (puesto a I en este ejemplo). El problema puede ser el siguiente: . . . 1000 0000 1000 0000 + 1 registro A registro B bit de arrastre I 0000 000 1 suma 100000001 . . I Acumulador Después de la operación I '--'---I~---L--I.--I--J..-I AC P Figura 8.22. I s z p Registro de status C La instrucción suma con arrastre (ADC 8). La suma es igual a 1 0000 000 l. Los 8 bits menos significativos (0000 000 1) son depositados en el acumulador. Esto se muestra en la Figura 8.22. El overflow (rebose) del acumulador (el bit más significativo de la suma) pone el seftalizador de arrastre (CY) a 1 despuéS de la operación. Los bits de signo, cero, arrastre auxiliar y de paridad par son puestos a O después que se ejecuta la instrucción AOC B en la Figura 8.22. http://librosysolucionarios.net ~ Esto I 4 Considerar la instrucción AOC B (sumar registro B con arrastre) listada en la Figura 8.21. Su funcionamiento se detalla en la sección ADC r (sumar registro con arrastre). lntel Corporation describe esta instrucción en forma simbólica como . ., cJ NOTA: Todos los señalizadores son afec­ tados. l. Si el valor de los 4 bits menos signifi­ cativos del acumulador es mayor que 9 o si el señalizador AC está a 1, se suma 6 al acumulador. ~--~ acum señal; datos (OOOC .'. asa ,~ i ,;~ EL MICROPROCESADOR INTEL 8080/8085 ~ 285 A continuación considerar la utilización de la instrucción del 8085 SBB M (resta memoria con préstamo) del listado de la Figura 8.21. Su funcionamiento se detalla en la sección SBB M. Intel describe esta instrucción en forma simbólica como son afec­ ~ " ~: ;1···.····· (A) +- (A) - «H)(L» - (Cn \ I ~- Esto significa que el contenido de la posición de memoria sefialada por el registro HL es restado del contenido del acumulador. El bit de arrastre (Cn del registro de status es también restado del contenido del acumulador. La diferencia es depositada en el acumulador despuéS de que se ejecuta la instrucción. Intel Corporation también nota que SBB M es una instrucción de 1 byte que utiliza direccionamiento indirecto de registro. Para su ejecución necesita dos ciclos máquina y siete estados T. Todos los señalizado res son afectados por la instrucción SBB M. La instrucción SBB M (resta memoria con préstamo) se está ejecutando en la Figura 8.23b. El acumulador contiene 00000 l 00, el bit de arrastre es 1, Y la posición de la memoria de datos señalada por el registro HL contiene 00000010. La operación de la instrucción SBB M con los datos está detallada en la Figura 8.23a. Los dos sustraendos son sumados primero (00000010 + l = 00000011). El nuevo sustraendo combinado de 000000 11 se convierte entonces a su forma en complemento a 2 (1111110 1). El minuendo (00000 100) se suma entonces al r.AC Ha 8.21. Su :orporation ~~=~ • el acumu­ ~ I byte. La máquina y zadores (Z, + e ara 8.22. El 00) yal del r;:;l 000000 I o I 000000 I I 00000 100 + 1 I I I I JOI Inyiene Memoria de datos (2080H) Bit de arrastre Nuevo sustraendo Acumulador (minuendo) Complemento a dos del sustraendo ~ ....- - - - (1:'0000000 I CY «no préstamo» Overflow Diferencia Solución para el problema de resta con préstamo (a) Acumulador Acumulador mdóa Registro de status I...I-_-_-_­ _ __ - ....I-....J AC Lde status Memoria de datos , J. (l880H) ~L lados en el (el bit más 11. Los bits ejecuta la Registro HL ~ (b) Instrucción de resta con préstamo (SBB M) Figura 8.23. t O Registro de status r.......1......I.........---L--L-..I._....I http://librosysolucionarios.net CY --"""-­ 286 FUNDAMENTOS DE LOS MICROPROCESADORES complemento a 2 del sustraendo (1111110 1), dando 1 0000 000 1. Los 8 bits menos significativos forman la diferencia (00000001 en este ejemplo), mientras que el «overflow» de 1 es invertido por el microprocesador poniendo a O el señalizador de arrastre (el'). El señalizador de reinicializa­ ción significa «no préstamo» o que el minuendo era mayor que los sustraendos combinados en este problema. Las instrucciones de suma con arrastre y resta con préstamo no son utilizadas con la suma o resta regular de un solo byte. Estas son instrucciones especiales utilizadas cuando se suman o restan 2 o más bytes de datos. La forma en que se utilizan estas instrucciones en la programación real se demostrará en el capítulo sobre programación. PROBLEMAS RESUELTOS 8.47. 8.42. El código de op para la instrucción ADD e es _ _ (hex). Esta operación suma el contenido del registro _ _ (letra) al contenido del acumulador. La instrucción ADD e utiliza direccionamiento ___ (de registro, indirecto de registro). Solución: De acuerdo con la Figura 8.21 y la descripción de Intel de <<suma registro», el código de op para la instrucción ADD es 81 H. Esta operación suma el contenido del registro al contenido del acumulador. La instrucción ADD utíliza direccionamiento de registro. e 8.43. e e El código de op para la instrucción INX Hes _ _ (hex). Esta operación _ _ (decre­ menta, incrementa) el registro par _ _ (Be, HL). La instrucción INX H afecta a _ _ (todos, ninguno de los) señalizado res. Solución: De acuerdo con la Figura 8.21 y la descripción de Intel de «incrementa registro par», el código de op para la instrucción INX Hes 23H. Esta operación incrementa el registro par HL. La instruc­ ción INX H no afecta a los señalizadores. . 8.44. El código de op del 8085 para la instrucción DAD B, esbozada en la Figura 8.24, es _ _ (hex). Solución: De acuerdo con la Figura 8.21, el código de op para la instrucción DAD B esbozada en la Figura 8.24 es 09H. 8.45. La instrucción DAD B de la Figura 8.24 suma el contenido de _ _ (8, 16) bits del registro par H L al contenido del registro par _ _ (dos letras). Solución: De acuerdo con la descripción de Intel,la instrucción DAD B utilizada en la Figura 8.24 suma . el contenido de 16 bits del registro par HL al contenido del registro par Be. 8.46. 8.48. DespuéS de la operación DAD B de la Figura 8.24, el registro par HL contendrá _ _ (hex). Solución: Sumar el hexadecimal FFFF + 000 1 .. I OOOOH. Por tanto después de la operación DAD B de la Figura 8.24, el registro par HL contendrá OOOOH. http://librosysolucionarios.net ACI J 1 '1"~"'· EL MICROPROCESADOR INTEL 8080/8085 5 significativos s invertido por :le reinicializa­ ombinados en 287 Registro HL Después de la operación ,, con la! suma o lo se suman o programación ? FFFFH Registro de status s Z AC P CY Figura 8.24. 8.47. ción suma el cciónADDC , Listar la condición de los señalizadores del registro de status después que se haya ejecuta­ do la instrucción DAD B en la Figura 8.24. Solución: Sólo es afectado el señalizador de arrastre por la operación DAD B. Por tanto, las condiciones de los señalízadores de signo, cero, arrastre auxiliar y paridad par de la Figura 8.24 no son predeci­ bles. El señalizador de arrastre (eY) se pondrá a 1 a causa del «overflow» o arrastre durante la suma (FFFF + 000 I ". 1OOOOH). ligo de op para contenido del 8.48. (decre­ IilX H afecta Acudir a la Figura 8.25. ¿Es el número del acumulador antes de la operación DAA un número «legal» BCD (decimal codificado binario 8421)? Solución: El número 0000 1110 no es un número BCD «legal» porque el 1110 no tiene equivalente BCD. 1III.f'», rL el código La ínstruc­ Acumulador ~ I~"~ ---, FIgura 8.24, lazada en la Acumulador Registro de status I L,_ _---1..--1._ Registro de status ' _ _---1 s 16) bits del Z AC P CY Figura 8.25. lS.24 suma 8.49. lt DADBde El contenido del acumulador de la Figura 8.25 después de la operación DAA se­ rá _ _ (BCD), que es igual a _ _ en decimal. Solución: De acuerdo con la descripción lntel de la instrucción DAA (ajuste decimal del acumulador), el contenido del acumulador de la Figura 8.25 después de la operación DAA será 0001 OIOOoco' que es igual a 14 en decimal. Como lllO es mayor que 9, OlIO (6 10) se sumó a este número BCD «ilegai», dando 0001 OIOOoco (14 10), http://librosysolucionarios.net • 288 '~ FUNDAMENTOS DE LOS MICROPROCESADORES •....... ~' 8.50. Listar la condición de los señalizadores' del registro de status después de la operación DAA mosi.¡ada en la Figura 8.25. 1 Solución: En la Figura 8.25 la operación DAA hacía que 0110 se sumase a 0000 1110, dando 00010100. Durante esta operación los señalizadores se afectaron de la siguiente manera: Señalizador de signo (S) ~ O Señalizador de arrastre auxiliar (AC) .. 1 Señalizador de arrastre (eY) ~ O Señalizador de cero (Z) = O Señalizador de paridad par (P) .. l 8.51. La instrucción SUB E de la Figura 8.26 resta el contenido del registro _ _ (letra) del contenido del acumulador. Solucióo: La instrucción SUB E de la Figura 8.26 resta el contenido del registro E del contenido del acu­ mulador. Acumulador 1aa Después de la operación SUBE Registro de status s Z AC P CY Figura 8.26. .... (01'1 sol! 8.52. Después de que se ha ejecutado la instrucción SUB E en la Figura 8.26, el contenido del acumulador será _ _ (8 bits). Solución: La MPU cambia el sustraendo (00000010 en el registro E) a su forma en complemento a 2 (11111110) Ysuma como sigue: 00000001 + 11111110 O 1111 1111 AJIj ( t I minuendo sustraendo en complemento a 2 diferencia Los 8 bits menos significativos de la diferencia (1111 1111) se depositan en el acumulador. En forma decimal, el problema es 1 - 2 = -l. El -1 10 es igual a 1111 Illt en notación de complemen­ to a 2. 8.53. Acudir a la Figura 8.26. Listar la condición de los señalizadores del registro de status después que se haya ejecutado la instrucción SUB E. Solución: DespuéS de la operación SUB E de la Figura 8.26, los señalizadores están en las siguientes con­ diciones: Señalizador de signo (S) - 1 Señalizador de arrastre auxiliar (AC) .. 1 http://librosysolucionarios.net [ 1 EL MICROPROCESADOR INTEL 8080/8085 lCión Señalizador de arrastre (CY) - I Señalizador de cero (Z) = O Señalizador de paridad par (P) = I La MPU cambia el sustraendo (000000 100 en el registro E) a su forma en complemento a 2 (11111110) Y suma como sigue: 1>100. \ del L!· L Den­ :orl. - m CY . En 289 invierte 0000 000 1 minuendo + 1111 1110 sustraendo en complemento a 2 O 1111 llll diferencia Notar que el bit de overflow (bit más significativo) en la diferencia es un O que está invertido y colocad0 en el señalizador de arrastre (eY) del registro de status. Un señalizador de arrastre puesto a 1 despuéS de la operación de resta significa que la diferencia es un número en complemento a 2 y que el sustraendo era mayor que el minuendo. 8.8. INSTRUCCIONES LOGICAS DEL 8080/8085 Un resumen de las instrucciones lógicas del microprocesador 8080/8085 se muestra en la Figu­ ra 8.27. Estas incluyen las instrucciones AND, OR, XOR, comparar, desplazamiento circular y complementación. Solamente los códigos de op y nemotécnicos de Intel están listados para cada instrucción en la Figura 8.27. Como en la sección anterior, el grupo de instrucciones lógicas se detallará utilizando el propio formato de Intel Corporation. Este grupo de instrucciones realiza operaciones lógicas (booleanas) sobre los datos de los registros, memoria y señalizadores. Acudir a la Figura 8.18 para los sig­ nificados de las abreviaturas utilizadas en las siguientes descripciones del Manual del Usuario dellntel. A."iA r (ANO registro) lA) +- (A) A (r) El contenido del registro r realiza la ope­ ración lógica AND con el contenido del acumulador. El resultado se coloca en el acumulador. El señalizador CY es puesto al)" AC al (8085). El señalizador CY es JIIRSlo a O y el AC a 1 para la operación OR. los bits 3 de los operandos (8080). ANA M (ANO memoria) (A) +- (A) A «H) (L» El contenido de la posición de memoria cuya dirección está contenida en los regis­ tros H y L realiza la operación lógica AND con el contenido del acumulador. El resultado se coloca en el acumulador. El señalizador CY es puesto a O y AC a 1 (8085). El señalizador CY es puesto a O y AC a 1 para la operación OR de los bits 3 de los operandos (8080). r -- .. Ciclos: 1 Estados: DiII: lX",miento: ;:. - ilizadores: 4 registro Z,S,P,CY,AC Ciclos: Estados: Direccionamiento: Señalizadores: http://librosysolucionarios.net 2 7 indirecto de reg. Z,S,P,CY,AC 290 FUNDAMENTOS DE LOS MICROPROCESADORES ANI dato (AND inmediato) (A) +- (A) /\ (byte 2) El contenido del segundo byte de la ins­ trucción realiza la operación lógica AND con el contenido del acumulador. El re­ sultado se coloca en el acumulador. El se­ . ñalizador CY es puesto a O y AC a 1 (8085). El señalizador CY es puesto a O y AC a 1 para la OR de los bits 3 de los operandos (8080). dato < Ciclos: Estados: Direccionamiento: Señalizadores: 2 7 inmediato Z,S,P,CY,AC o O 1 , O 2 Ciclos: Estados: Direccionamiento: Señalizadores: 7 indirecto de reg. Z,S,P,CY,AC XRI dato (OR exclusiva inmediata) (A) +- (A) V (byte 2) El contenido del segundo byte de la ins­ trucción realiza la operación OR exclusi­ va con el contenido del acumulador. El resultado se coloca en el acumulador. Los señalizadores CY y AC son puestos a O. .'.'.'0 ' .'1 ' .'0 dato XRA r (OR exclusivo registro) (A) +- (A) V (r) El contenido del registro r realiza la ope­ ración OR exclusiva con el contenido del acumulador. El resultado se coloca en el acumulador. Los señalizadores CY y AC son puestos a O. Ciclos: Estados: Direccionamiento: Señalizadores: XRA M • 4 registro Z,S,P,CY,AC (OR exclusiva memoria) (A) +- (A) V «H) (L» El contenido de la posición de memoria cuya dirección está contenida en los regis­ tros H y L realiza la operación OR exclu­ siva con el contenido del acumulador. El resultado se coloca en el acumulador. Los señalizadores CY y AC son puestos a O. Ciclos: Estados: Direccionamiento: Señalizadores: 2 7 inmediato Z,S,P,CY,AC ORA r (OR registro) (A) +- (A) V (r) El contenido del registro r realiza la ope­ ración OR ind1usiva con el contenido del acumulador. El resultado se coloca en el acumulador. Los señalizadores CY y AC son puestos a O. Ciclos: Estados: Direccionamiento: Señalizadores: • 4 registro Z,S,P,CY,AC ORA M (OR memoria) (A) +- (A) V «H) (L» El contenido de la posición de memoria cuya dirección está contenida en los regís­ http://librosysolucionarios.net ( EL MICROPROCESADOR lNTEL 8080/8085 tros H YL realiza la operación OR inclu­ siva con el contenido del acumulador. El resultado se coloca en el acumulador. Los señalizadores CY y AC son puestos a O. 1 1 0'1 1 1'0 Ciclos: Estados: Direccionamiento: Señalizadores: 1110 2 7 indirecto de reg. Z,S,P,CY,AC ORI dato (OR inmediato) (A) +- (A) v (byte 2) El contenido del segundo byte de la ins­ trucción realiza la operación OR inclusi­ va con el del contenido del acumulador. El resultado se coloca en el acumulador. Los señalizadores CY y AC son puestos a O. dato Ciclos: Estados: Direccionamiento: Señalizadores: 2 7 inmediato Z,S,P,CY,AC CMP r (Compara registro) (A) - (r) El contenido del registro r es restado del acumulador. El acumulador permanece inalterado. Los señalizadores de condi­ ción son inicializados según el resultado de la sustracción. El señalizador Z se pone a 1 si (A) = (r). El señalizador CY se JIOIIe a 1 si (A) < (r). Ciclos: Estados: Din:ccionamiento: Señalizadores: l 4 registro Z,S,P,CY,AC CMP M 291 (Compara memoria) (A) - «H) (L» El contenido de la posición de memoria cuya dirección está contenida en los regis­ tros H y L es restado del acumulador. El resultado permanece inalterado. Los se­ ñalizadores de condición se ponen a 1 se­ gún el resultado de la resta. El señalizador Z se pone a 1 si (A) =«H) (L». El señali­ zador CY se pone a 1 si (A) < «H) (L». Ciclos: Estados: Direccionamiento: Señalizadores: 2 7 indirecto de reg. Z,S,P,CY,AC CPI dato (Comparación inmediata) (A) - (byte 2) El contenido del segundo byte de la ins­ trucción es restado del acumulador. Los señalizadores de condición se ponen a 1 según el resultado de la resta. El señaliza­ dor Z se pone a 1 si (A) =(byte 2). El señalizador CY se pone a 1 si (A) < (byte 2). , l ' 1 ' l , l 1O dato # Ciclos: Estados: Direccionamiento: Señalizadores: 2 7 inmediato Z,S,P,CY,AC RLC (Desplazamiento circular a la IZ­ quierda) (An + 1) +- (A n); (A o) +- (A 7) (CY) +-(A 7) El contenido del acumulador es desplaza­ do a la izquierda una posición. El bit de orden inferior y el señalizador CY contie­ nen ahora el valor del bit de orden más elevado antes de la operación de despla­ http://librosysolucionarios.net 292 FUNDAMENTOS DE LOS MICROPROCESADORES zamiento. Sólo es afectado el seílalizador CY. [o I O I O I Ciclos: Estados: Señalizadores: O I O I 1 I 1 I 1 1 4 CY RRC (Desplazamiento circular a la dere­ cha) (Ah) +- (A n + 1); (A 7) +- (Ao) (CY)+-(Ao) El contenido del acumulador es desplaza­ do una posición a la derecha. El bit de \ orden superior y el señalizador CY con­ tienen ahora el bit de orden inferior del acumulador antes de realizar la operación de desplazamiento. Solamente está afec­ tado el señalizador CY. RAR (Desplazamiento circular a la dere­ cha a través del arrastre) (Ah) +- (A n + ); (CY) +- (Ao) (A 7)+-(CY) El contenido del acumulador es desplaza.; do, circularmente, a la derecha una posi­ ción a través del señalizador CY. El bit de orden superior toma el valor del señaliza­ dor de arrastre y el señalizador de arrastre toma el valor del bit de orden inferior del acumulador antes de realizar la operación de desplazamiento. Solamente es afecta­ do el seílalizador CY. Ciclos: Estados: Señalizadores: 1 4 CY CMA (Complementa el acumulador) Ciclos: Estados: Señalizadores: (A)+-(A) El contenido del acumulador es comple­ mentado (los bits cero se hacen 1, los bits uno se hacen O). Ningún señalizador está afectado. 1 4 CY RAL (Desplazamiento circular a la iz­ quierda a través del arrastre) (An + ) +- (An); (CY) +- (A 7) (Ao) +-(CY) El contenido del acumulador es desplaza­ do a la izquierda una posición, circular­ mente, a través del señalizador CY. El bit de orden inferior toma el valor que tenía el bit de orden superior del acumulador antes de la operación de desplazamiento. Solamente es afectado el señalizador CY. • Ciclos: Estados: Señalizadores: 1 4 ninguno CMe (Complementa arrastre) (CY)+-(CY) El señalizador CY es complementado. Ningún otro seílalizador es afectado. O I O Ciclos: Estados: Seftalizadores: l 4 CY Ciclos: Estados: Señalizadores: http://librosysolucionarios.net 1 4 CY EL MICROPROCESADOR INTEL 8080/8085 ere­ src (Pone a l el arrastre) (CY) +- l El señalizador CY se pone a l. Los demás señalizadores no son afectados. 1 Ciclos: Estados: Señalizadores: .aza­ ;K'Sl­ ,it de lliza­ astre Ir del 293 1 l 4 CY Inmediato A 8 C iletÓn ANA recta­ o E H L M A 8 C XRA o E H L M A 8 C >:':Tlple­ ;: bits Ior está ORA o E H L M A B C CMP o E H L M A7 AO Al A2 A3 A4 A5 A6 AF A8 A9 AA A8 AC AO AE ANI byte XRI byte ORI byte CPI byte E6 EE F6 FE Desplazamiento circular RLC RRC RAL RAR 07 OF 17 lF Especiales CMA STC CMC 2F 37 3F 87 BO 81 82 83 B4 85 B6 8F 88 89 BA BB Be BO BE I mentado. !Ido. ~ ~ Figura 8.27. Resumen de las instrucciones lógicas del 8080/8085. (Todos los nemotécnicos tienen derecho de copia © Intel Corporation. 1976.) Notar el uso por Intel del símbolo A para simbolizar la operación lógica AND en las descrip­ ciones de datos ANA r, ANA M Y ANI. De igual forma, lotel utiliza el símbolo V para denotar la operación lógica OR en las descripciones de datos ORA r, ORA M Y ORI. Además, lotel utiliza http://librosysolucionarios.net 294 FUNDAMENTOS DE LOS MICROPROCESADORES el símbolo "rj para indicar la operación lógica XOR (OR exclusiva) en las descripciones de datos XRA r, XRA M, y XRI. Considerar las cuatro instrucciones de desplazamiento del 8085 de la Figura 8.28. La acción de desplazamiento circular a la izquierda y a la derecha a través del arrastre (RAL, RAR) está esquematizada en la Figura 8.28a y b. Este desplazamiento circular a través del arrastre se ob­ servó cuando se utilizaron las instrucciones de desplazamiento circular en el microprocesador genérico. La acción de las instrucciones de desplazamiento circular a la izquierda ya la derecha (RLC, RRC) está indicada en la Figura 8.28c y d. Esta acción es algo diferente de la observada antes, a causa de que el dato no es desplazado circularmente a través de la posición de arrastre. ! (Instrucción de desplazamiento circular a la ¡-.;- --JrJ ~I izqui~ a travéS del arrastre) ~1..-. CY (a) ___ Acumulador Funcionamiento de la instrucción de desplazamiento circular a la izquierda a través del arrastre ¡-.: __ ~í (Instrucción de desplazamiento circular a la der!~:a través del arrastre) L...Q--1____.. . . .~ CY (b) Acumulador Funcionamiento de la instrucción de desplazamiento circular a la derecha a travéS del arrastre RLC (Desplazamiento circular a la izquierda del acumulador) CY b7 bo Acumulador (e) Funcionamiento de la instrucción de desplazamiento circular a la izquierda del acumulador b7 bo Acumulador (d) Funcionamiento de la instrucción de desplazamiento circular a la derecha del acumulador Figura 8.28. PROBLEMAS RESUELTOS 8.54. El código de op para la instrucción ANA M es _ _ (hex). Esta operación realiza la operación ANO del contenido del acumulador con el contenido de la posición de la memoria de _ _ (datos, programa) señalada por el registro par _ _ (letras). Se trata de una instrucción de ___ (número) bytes. http://librosysolucionarios.net • EL MICROPROCESAOOR INTEL 8080/8085 Solución: De acuerdo con la Figura 8~27 y la descripción «ANO memoria» de Intel, el código de op para la instrucción ANA M es A6H. Esta operación realiza la operación ANO del contenido del acumu­ lador con el contenido de una posición de la memoria de datos señalada por el registro par HL. Se trata de una instrucción de 1 byte. : datos acción R) está se ob­ :esador 295 8.55. (RLC, antes, a I El código de op para la instrucción ORI es _ _ (hex). Se trata de una instrucción de ___ (número) bytes que utiliza direccionamiento ___ (directo, inmediato). El contenido del acumulador realiza la operación OR con el contenido de la memoria de _ _ (datos, programa). Solución: De acuerdo con la Figura 8.27 y la descripción de Inte) de «OR inmediato», el código de op para la instrucción ORI es F6H. Se trata de una instrucción de 2 bytes que utiliza direccionamiento inmediato. El contenido del acumulador realiza la operación OR con el contenido de memoria del programa. 8.56. El contenido del acumulador de Ía Figura 8.29 después de la oper.ación RLC se­ rá _ _ (8 bits). Solución: Según el diagrama de la Figura 8.28c, el contenido del acumulador de la Figura 8.29 después de la operación RLC será 00000001. Acumulador Acumulador Antes de la operación Registro de statús ío! I ----.Io~ Registro de status Cy Cy KUmulador Figura 8.29. 1.57. I ~ .cumulador El señalizador de arrastre estará a _ _ (O, 1) despuéS de la operación de desplazamien­ to circular a la izquierda (RLC) mostrado en la Figura 8.29. Solución: El señalizador de arrastre estará a 1 despUés de la operación de desplazamiento circular a la izquierda (RLC) mostrada en la Figura 8.29. 1..9. NSTRUCCIONES DE BIFURCACION DEL 8080/8085 l'Jn realiza la )5ióón de la traS). Se trata - "- ft.!!IUJIIen de las instrucciones de bifurcación del microprocesador 8080/8085 se muestra en la __ ~ 8.30. Estas incluyen instrucciones de salto, llamada, vuelta y reinicialización. Solamente se _- para cada instrucción los códigos de op y nemotécnicos de Intel en la Figura 8.30. Una http://librosysolucionarios.net 296 FUNDAMENTOS DE LOS MICROPROCESADORES Vuelta Salto '1 JMP adr JNZ adr JZ adr JNC adr JC adr JPO adr JPE adr JP adr JM adr PCHL C3 C2 CA D2 DA E2 EA F2 FA E9 Llamada RET RNZ RZ RNC RC RPO RPE RP RM . C9 CO C8 .~ DO D8 EO E8 FO F8 J [1 ~,. Reinicialización ,,~ ", CALLadr O C7 CD CF CNZadr C4 1 D7 CZadr 2 CC DF CNC adr D4 3 RST E7 CC adr OC 4 CPOadr E4 EF S CPE adr EC 6 F7 CPadr F4 7 FF CM adr FC adr = dirección de 16 bits (segundo y tercer bytes de instrucciones de 3 bytes) .. _ Figura 8.30. Resumen de las instrucciones de bifurcación 8080/8085. (Todos los nemotécnicos tienen derecho de copia © Intel Corporation, 1976.) breve descripción de los nemotécnicos se da en el resumen del repertorio de instrucciones de la Figura 8.16. Como en las secciones anteriores, el grupo de instrucciones de bifurcaci6n se detallará utilizan­ do el formato propio de Intel Corporation. Este grupo de instrucciones altera el flujo secuencial normal del programa. Los dos tipos de instrucciones de bifurcación son la incondicional y la condicional. La incondicional simplemente realiza la operación especificada en el contador de programa. Las transferencias condicionales examinan el status de uno de los cuatro señalizadores de la MPU para determinar si se va a ejecutar la bifurcación especificada. Las condiciones que pueden ser especificadas aparecen en el Manual del Usuario de Intel como sigue: cee CONDIOON NZ ZNC CPO PE PM- no cero (Z .. O) cero(Z= 1) no arrastre (CY = O) arrastre (CY = 1) paridad par (P = O ) . ' paridad impar (P = 1) . más (S=O) menos (S = 1) 000 001 010 011 100 JMP addr (Salto) (PC) ~ «byte 3)(byte 2» El control es transferido a la instrucción cuya dirección está especificada en los bytes 3 y 2 de la instrucción actual. ro 1 1 ' 1 '0'0'0'0'111 110 111 dir. orden inferior dir. orden superior http://librosysolucionarios.net . d EL MICROPROCESADOR INTEL8080/8085 Ciclos: Estados: Direccionamiento: Señalizadores: 3 10 inmediato ninguno Jcondition addr (Salto condicional) Ir (CCC), (PC) +- «byte 3)(byte 2)) Si la condición especificada es cierta, el control es transferido a la instrucción cuya dirección está especificada en los bytes 3 y 2 de la instrucción actual; en cualquier otro caso, el control continúa secuencialmente. airo orden inferior dir. orden superior Ciclos: Estados: t. 16.) bcciones de tallará utilizan­ , secuencial trD<úcional y la el contador de "" señalizadores . jtciones que f ~ .. la la instrucClon . ;;cada en los actual. 1100 TO erior I 1 I Direccionamiento: Señalizadores: 2/3 (8085), 3 (8080) 7/ l O (8085), 10 (8080) inmediato ninguno 1 1 1110 lO 111110 1 dir. orden inferior dir. orden superior Ciclos: Estados: Direccionamiento: Señalizadores: 5 18 (8085), 17 (8080) inmediato/indirec­ to de reg. ninguno Ccondition addr (Llamada condicional) Ir (CCC), «SP) - 1) +- (PCH) «SP) - 2) +- (PCL) (SP) +- (SP) 2 (PC) +- (byte 3)(byte 2) Si la condición especificada es cierta, las acciones especificadas en la instrucción CALL (ver anterior) son realizadas; en cualquier otro caso, el control continúa secuencialmente. l CALL addr (Llamada) (SP) 1) +- (PCH) (SP) - 2) +- (PCL) (SP) +- (SP) 2 (PC) +- (byte 3)(byte 2) Los ocho bits de orden superior de la di­ rección de la siguiente instrucción son uasnferidos a la posición de memoria cuya dirección es una unidad menor que el contenido del registro SP. Los ocho bits de orden inferior de la direcCión de la si­ guiente instrucción son transferidos a la posiCión de memoria cuya dirección es dos unidades menor que el contenido del registro SP. El contenido del registro SP es decrementado en 2. El control es trans­ ferido a la instrucción cuya dirección está especificada en los bytes 3 y 2 de la ins­ b'Ucción actual. 297 I llclClclllOIO . dir. orden inferior dir. orden superior Ciclos: Estados: Direccionamiento: Señalizadores: 2/5 (8085), 3/5 (8080) 9/18 (8085), 11/17 (8080) inmediato/indirec­ to de reg. ninguno RET .~elta) (PCL) +- «SP)); (PCH) +- «SP) + 1); (SP) +- (SP) + 2; El contenido de la posición de memoria cuya dirección está especificada en el re­ http://librosysolucionarios.net 298 FUNDAMENTOS DE LOS MICROPROCESADORES gistro SP es transferido a los ocho bits de orden inferior del registro PC. El conteni­ do de la posición de memoria cuya direc­ ción es una unidad superior al contenido del registro SP es transferido a los ocho bits de orden superior del registro PC. El contenido del registro SP es incrementa­ do en 2. I OI O Ciclos: Estados: Direccionamiento: Sefializadores: 3 10 indirecto de reg. ninguno Rcondition (Vuelta condicional) (CCC), (PCL) ~ «SP» (PCH) ~ «SP) + 1) (SP) ~ (SP) + 2 Si la condición especificada es verdadera, se realiza la acción especificada en la ins­ trucción RET (ver anterior); en cualquier otro caso, el control continúa secuencial­ mente. 1 I C IC IC Ciclos: Estados: Direccionamiento: Señalizadores: I O .transferidos a la posición de memoria cuya dirección es una unidad menor que el contenido del registro SP. Los ocho bits de orden inferior de la dirección de la si­ guiente instrucción son transferidos a la posición de memoria cuya dirección es dos unidades menor que el contenido del registro SP. El contenido del registro SP es decrementado en dos. El control es transferido a la instrucción cuya direc­ ción es ocho veces el contenido de NNN. Ciclos: Estados: Direccionamiento: Señalizadores: 3 12 (8085), 11 (8080) indirecto de reg. ninguno 1514131211109 8 7 6 5 4 3 2 1 O lololololololololololNININlololol Contador de programa despuéS de La instrucción rearrancar I OI O 1/3 6/12 (8085), 5/11 (8080) indirecto de reg. ninguno RST n (Rearrancar) «SP) 1) ~ (PCH) «SP) 2) ~ (PCL) (SP) <E-\ (SP) - 2 (PC) ~\8 • (NNN) Los ocho bits de orden superior de la di­ rección de la siguiente instrucción son PCHL (Salta indirecto H y L - transfiere HyLaPC) (PCH)~(H) (PCL) ~(L) El contenido del registro H es transferido a los ocho bits de orden superior del regis­ tro pc. El contenido del registro L es transferido a los ocho bits de orden infe­ rior del registro pc. Ciclos: Estados: Direccionamiento: Sefializadores: http://librosysolucionarios.net 1 6 (8085), 5 (8080) registro ninguno EL MICROPROCESADOR INTEL 8080/8085 l. 299 Considerar el uso de la instrucción de salto condicional de la Figura 8.31. El código de op se lista como 110010 lOen la Figura 8.31 para la instrucción JZ. La parte 001 del código de op (bits bs' b4 y b3) especifica que la condición para la bifurcación es que el sefializador de cero debe estar a 1 (Z = 1). El sefializador de cero es igual a 1 en la Figura 8.31; por tanto una nueva dirección de 16 bits es transferida al contador de programa (PC). La dirección de orden inferior (00000000) es transferida, seguida por la dirección de orden superior (00 l 0000 1). La nueva dirección del conta­ dor de programa entonces hace que la MPU salte a una nueva posición del programa. )na Que bits l si­ a la 11 es , del ) SP .tes Código de operacíón irec­ ..¡s. 1100 Memoria de programa 10\0 Contador de programa 00000000 00100001 Antes de la operación Después de la operación JZ Registro de status ~~~~~~~~~ s 1 O ~ LdO el regis­ roLes en infe­ (8080) I P CY Figura 8.31. sfiere ~ AC ~ ." ~ J t Instrucción salta si cero. La instrucción CALL es una operación especial de bifurcación utilizada para saltar desde el programa principal a una subrutina. La instrucción CALL combina las operaciones de salto e introducción de datos en la pila. Como en el microprocesador genérico, la instrucción CALL del 8080/8085 introduce primero el contenido de 16 bits del contador de programa (PC) en la pila; después hace que la dirección de 16 bits de la subrutina sea transferida al contador de programa. El microprocesador entonces salta a la subrutina. De forma distinta al microprocesador genérico, los procesadores 8080 y 8085 también tienen instrucciones de llamada condicional. La operación de llamada como se describió antes se ejecu­ tará solamente si se cumple la condición especificada. Como con el microprocesador genérico, las MPU 8080 y 8085 utilizan instrucciones de vuel­ ta Las instrucciones de vuelta indican al procesador la posición correcta de la memoria del programa principal una vez que finaliza una subrutina. De forma distinta al microprocesador genérico, las MPU 8080 y 8085 también tienen instrucciones de vuelta condicional. La operación de vuelta de subrutina se ejecutará solamente si se cumple la condición especificada. Las instrucciones de rearranque son instrucciones de llamada de propósito especial, disefiadas principalmente para utilizarlas con interrupciones. Igual que CALL, la instrucción de rearranque introduce el contenido del contador de programa en la pila y salta a una de ocho direcciones predeterminadas. Esto es diferente porque una instrucción CALL especifica inmediatamente la dirección del salto. Un código de 3 bits (bits bs' b4 y b3) en el código de op de la instrucción RST especifica la dirección del salto. Por ejemplo, una instrucción RST 2 tiene el código de op 1I,OJO,11 1 (D7H). El código de dirección OJO (decimal 2) es multiplicado por 8, dando 16 10, Ó 100002' Esta es la dirección del salto (000000000001 0000 2 en este ejemplo). http://librosysolucionarios.net 298 FUNDAMENTOS DE LOS MICROPROCESADORES gistro SP es transferido a los ocho bits de orden inferior del registro Pe. El conteni­ do de la posición de memoria cuya direc­ ción es una unidad superior al contenido del registro SP es transferido a los ocho bits de orden superior del registro PC. El contenido del registro SP es incrementa­ do en 2. I °~ ° Ciclos: Estados: Direccionamiento: Señalizadores: 3 10 indirecto de reg. ninguno Rcondition (Vuelta condicional) (CCC), (PCL) .... «SP» (PCH) .... «SP) + I) (SP) .... (SP) + 2 Si la condición especificada es verdadera, se realiza la acción especificada en la ins­ trucción RET (ver anterior); en cualquier otro caso, el control continúa secuencial­ mente. Ciclos: Estados: Direccionamiento: Señalizadores: 1/3 6/12 (8085), 5/11 (8080) indirecto de reg. ninguno RST n (Rearrancar) «SP) - 1) .... (PCH) «SP) - 2) .... (PCL) (SP) .... (SP) - 2 (PC) .... 8 ... (NNN) Los ocho bits de orden superior de la di­ rección de la siguiente instrucción son transferidos a la posición de memoria cuya dirección es una unidad menor que el contenido del registro SP. Los ocho bits de orden inferior de la dirección de la si­ guiente instrucción son transferidos a la posición de memoria cuya dirección es dos unidades menor que el contenido del registro SP. El contenido del registro SP es decrementado en dos. El control es transferido a la instrucción cuya direc­ ción es ocho veces el contenido de NNN. 1 I 1 Ciclos: Estados: Direccionamiento: Señalizadores: 3 12 (8085), 11 (8080) indirecto de reg... ninguno 151413121110 9 8 7 6 5 4 3 2 1 O 10101010101010lolololNININlol0loI Contador de programa después de la instrucción rearrancar PCHL (Salta indirecto H y L - transfiere HyLaPC) (PCH) .... ~H) (PCL) .... (L) El contenido del registro H es transferido a los ocho bits de orden superior del regis­ tro Pe. El contenido del registro L es transferido a los ocho bits de orden infe­ rior del registro Pe. Ciclos: Estados: Direccionamiento: Señalizadores: http://librosysolucionarios.net I 6 (8085), 5 (8080) registro ninguno EL MICROPROCESAOOR INTEL 8080/8085 299 Considerar el uso de la instrucción de salto condicional de la Figura 8.31. El código de op se lista como 1100 10 10 en la Figura 8.31 para la instrucción JZ. La parte 001 del código de op (bits bs' b4 y b) especifica que la condición para la bifurcación es que el sefializador de cero debe estar a I (Z = 1). El sefializador de cero es igual a 1 en la Figura 8.31; por tanto una nueva dirección de 16 bits es transferida al contador de programa (Pe). La dirección de orden inferior (00000000) es transferida, seguida por la dirección de orden superior (00100001). La nueva dirección del conta­ dor de programa entonces hace que la MPU salte a una nueva posición del programa. ;a ue ,its 51­ la es del SP ,es Código de operación rec­ ~, 1100 1010 Memoria de programa Contador de programa 00000000 00100001 Antes de la operación Después de la operaclÓft JZ Registro de status ~~~~~~~~~ s Z AC P CY Figura 8.31. nsfiere LSferido ~1 regís­ oLes ro infe­ (8080) / Instrucción salta si cero. La instrucción CALL es una operación especial de bifurcación utilizada para sahar desde el programa principal a una subrutina. La instrucción CALL combina las operaciones de salto e introducción de datos en la pila. Como en el microprocesador genérico, la instrucción CALL del 8080/8085 introduce primero el contenido de 16 bits del contador de programa (Pe) en la pila; después hace que la dirección de 16 bits de la subrutina sea transferida al contador de programa. El microprocesador entonces salta a la subrutina. De forma distinta al microprocesador genérico, los procesadores 8080 y 8085 también tienen instrucciones de llamada condicional. La operación de llamada como se describió antes se ejecu­ tará solamente si se cumple la condición especificada. .. Como con el microprocesador genérico, las MPU 8080 y 8085 utilizan instrucciones de vuel­ ta. Las instrucciones de vuelta indican al procesador la posición correcta de la memoria del programa principal una vez que finaliza una subrutina. De forma distinta al microprocesador genérico, las MPU 8080 y 8085 también tienen instrucciones de vuelta condicional. La operación de vuelta de subrutina se ejecutará solamente si se cumple la condición especificada. Las instrucciones de rearranque son instrucciones de llamada de propósito especial, disefiadas principalmente para utilizarlas con interrupciones. Igual que CALL, la instrucción de rearranque introduce el contenido del contador de programa en la pila y salta a una de ocho direcciones predeterminadas. Esto es diferente porque una instrucción CALL especifica inmediatamente la dirección del salto. Un código de 3 bits (bits bs' b4 y b3 ) en el código de op de la instrucción RST especifica la dirección del salto. Por ejemplo, una instrucción RST 2 tiene el código de op 11.010,111 (D7H). El código de dirección 010 (decimal 2) es multiplicado por 8, dando 16'0' Ó 100002, Esta es la dirección del salto (00000000 00010000 2 en este ejemplo). / http://librosysolucionarios.net 300 FUNDAMENTOS DE LOS MICROPROCESAOORES Considerar el problema ejemplo mostrado en la Figura 8.32 utilizando la instrucción RST 7. Observar que el puntero de pila contiene 2089H antes de la operación RST 7. La instrucción RST 7 introduce la cuenta del programa actual en la pila. Entonces la dirección predeterminada . (8 x 7 = 56 10 == 38H) es transferida al contador de programa (PC). Esto hace que la MPU salte o rearranque en la nueva posición 000000000011 1000 (0038H). La instrucción de rearranque es única, porque rara vez aparece en código fuente en los progra­ mas de aplicación. Con más frecuencia los dispositivos periféricos que buscan servicios de inte­ rrupCión pasan esta instrucción de 1 byte al procesador. Los rearranques se denominan por tanto, a veces, interrupciones software. Pila Puntero de pila 2087H 2088H ...:2~08~9~H..JI·­ ......::2089H: LI Contador de programa Pila Puntero de pila I ' - - _ _--L_ _ _-1 Figura 8.32. 2087H 1 ......----"--_..... Contador de programa Instrucci6n de rearranque (RST 7). PROBLEMAS RESUELTOS 8.58. La instrucción JMP utiliza una instrucción de _ _ (número) byte y direccionamien­ to _ _ (directo, inmediato). Durante la ejecución de la instrucción JMP, 2 bytes de la memoria de programa son transferidos al ______ (contador de programa, puntero de pila). Solución: De acuerdo con la descripción de lntel, la instrucción JMP utiliza una instrucción de 3 bytes y direccionamiento inmediato. Durante la ejecución de la instrucción JMP, 2 bytes de la memoria del programa son transferidos al contador de programa. 8.59. Las instrucciones de llamada y _ _ (reinicialización; vuelta) son utilizadas en pares para localizar y volver de las subrutinas. Solución: Las instrucciones de llamada y vuelta son utilizadas en pares para localizar y volver de las su­ brutinas. 8.60. La operación de _ _ (reinicialización, vuelta) es una forma especial de instrucción de llamada utilizada principalmente con interrupciones. Solución: La operación de reinicialización es una forma especial de instrucción de llamada usada princi­ palmente con interrupciones. http://librosysolucionarios.net EL MICROPROCESADOR INTEL 8080/8085 8.61. lST7. Kclón .ada salte o La instrucción JNC del 8080/8085 es una instrucción de salto _ _ (condicional, ¡n­ condicional) cuyo código de op es ___ en binario. El salto, si no hay operación de arrastre, se especifica con una instrucción de ___ (número) byte(s). La instrucción JNC utiliza el modo de direccionamiento ___ (directo, inmediato). Solución: De acuerdo con la descripción de lntel de «Salto condicional», la instrucción JNC es una . ~ instrucción de salto condicional cuyo código de op es 110 lOO 10 en binario. El salto, si no hay arrastre, se especifica con una instrucción de 3 bytes. La instrucción JNC utiliza el modo de direccionamiento inmediato. .nte­ r tanto, 8.62. 10 301 de pila El nemotécnico para la instrucción de 1 byte del grupo de bifurcación del 8080/8085 que hace que la MPU salte a la posición de memoria OOOOH es _ _ . Solución: ill El nemotécnico para la instrucción de 1 byte del grupo de bifurcación del 8080/8085 que hace que la MPU salte a la posición de memoria OOOOH es RST O. .. 8.63. El nemotécnico para la instrucción del grupo de bifurcación del 8080/8085 que hace que la MPU salte al contenido de la dirección del registro par HL es _ _ . Solución: El nemotécnico para la instrucción del grupo de bifurcación del 8080/8085 que hace que la MPU salte a la dirección contenida en el registro par HL es PCHL. rprograma 8.64. r El nemotécnico del 8080/8085 para la operación de salto condicional mostrada en la Figura 8.33 es _ _ . Solución: El nemotécnico del 8080/8085 para la operación de salto condicional mostrada en la Figu­ ra 8.33 es JP, que significa saltar si más. ionamien­ ~les de la a. puntero Código de operación 2000H ~ de 3 bytes y la memoria 1111 0010 200IH 00000000 2002H OOllOOOO Contador de programa t lIS en pares L ~as de Figura 8.33. su- tIlTUCclon " de t usada princí­ 8.65. Según el registro de status de la Figura 8.33, _ _ (se cumplen, no se cumplen) las condiciones para que ocurra el salto condicional. Solución: El señalizadorde signo es igual a 1 en la Figura 8.33, lo que significa que el núme~o anterior del acumulador es negativo. No existe la condición positivo (más), y por tanto no se realiza el salto a una nueva dirección. http://librosysolucionarios.net 302 F1JNDAMENTOS DE LOS MICROPROCESADORES 8.66. El contenido del contador de programa después de que se ha ejecutado la instrucción de salto condicional en la Figura 8.33 es _ _ (16 bits). Solución: La condición más no se cumplía (S = 1); por tanto el contador de programa incrementa a la siguiente instrucción secuencial en 2oo3H, ó 0010 0000 0000 0011 2 , 8.67. El código de op para la instrucción de rearranque utilizada en la Figura 8.34 se­ rá ___ en binario. Solución: El código de op para la instrucción RST 4 utilizada en la Figura 8.34 será 11100111 en binario, (E7 en hexadecimal). Puntero de pila Puntero de pila 2185H I _-;1 1--..!-_~18::3H~•• 2183H 2184H - - ...l.:_ _--1 185 H ? 184H /--.-.pL- Después de la operación Antes de la operación r---~.......- . . 3 L - -..... Contador de programa Figura 8.34. 8.68. 1I Listar el contenido de las posiciones de la pila 2183H y 2184H después de la operación de reinicialización mostrada en la Figura 8.34. Solución: El contenido del contador de programa es transferido a la pila de la siguiente fonna: Primero, la posición de la pila 2l84H recibe el byte de orden inferior del contador de programa; la posición de la pila 2184H entonces contiene 00000o 10. Segundo, la posición de la pila 2183H recibe el byte de orden inferior del contador de programa; la posición de la pila 2183H entonces contiene 11110000. 8.69. Listar el contenido del contador de programa (Pe) despuéS de la operación de reiniciali­ zación mostrada en la Figura 8.34. Solución: La MPU multiplica el número de reinicialización (decimal 4 en este ejemplo) por 8, dando la dirección de 32 10 (o 20H). El binario 0000 0000 0010 0000 (0020H) es la nueva dirección del contador de programa. La MPU entonces realiza el salto a la posición de memoria oo20H. 8.10. INSTRUCCIONES DE PILA, E/S Y CONTROL DE MAQUINA DEL 8080/8085 Un resumen de la pila, E/S e instrucciones de control máquina del microprocesador 8080/8085 se muestra en la Figura 8.35. Donde se incluyen instrucciones de introducir y sacar, entrar y salir, intercambiar, habilitación e inhabilitación de interrupciones, no operación y alto y lectura multi­ http://librosysolucionarios.net EL MIeROPROCESAOOR INTEL 8080/8085 Ops depila B D PUSH { ~.34 se­ POP{ ~ -=o binario I L ~de ma t Primero, la de be el byte de ~ contiene .. E3 F9 ~ r 8. dando la d:irección del J020H. r 8080/8085 :ntrar y salir, :dura multi- OUT byte IN byte D3 DB PS el DI El FI Control DI F3 El FB 00 76 NOP HLT Nuevas instrucciones RIM 20 SIM 30 Figura 8.35. Resumen de las instrucciones de control de máquina, E/S, pila del 8080/8085. (Todos los nemotécnicos tienen derecho de copia © Intel Corporation, 1976.) propósito e inicialización de máscaras de interrupción. Solamente los nemotécnicos y códigos de op de Intel están listados para cada instrucción en la Figura 8.35. Corno en las secciones anteriores, la pila. E/S y grupo de instrucciones de control máquina se detallarán utilizando el fonnato propio de Intel Corporation. Este grupo de instrucciones realiza entradas y salidas, manipula la pila y altera los señalizadores de control interno. Acudir a la Figura 8.18 para los significados de las abreviaturas utilizadas en las siguientes descripciones del J/anual del Usuario de Intel. 1 posición ~ reiniciali­ es (8085 sólo) XTHL SPHL .tero de pila =? Entrada/salida H ES PSW FS B D H PSW 303 PUSH rp (Introducir) «SP) - 1) <E- (rh) «SP) - 2) <E- (rl) «SP) <E- (SP) - 2 El contenido del registro de orden supe­ rior del registro par rp es transferido a la posición de memoria cuya dirección es una unidad menor que el contenido del registro SP. El contenido del registro de orden inferior del registro par rp es trans­ ferido a la posición de memoria cuya di­ rección es dos unidades menor que el contenido del registro SP. El contenido del registro SP es decrementado en 2. Nota: El registro par rp = SP no puede ser especificado. 1 Ciclos: Estados: Direccionamiento: Señalizadores: 3 12 (8085), 11 (8080) indirecto de reg. ninguno PUSH PSW (Introducir palabra de status del procesador) «SP) - 1) <E- (A) «SP) - 2)0 <E- (CY), «Si» - 2)1 <E- X «SP) - 2)2 <E- (P), «SP) - 2)3 <E- X «SP) - 2)4 <E- (AC), «SP) - 2)s <E- X «SP) - 2)6 <E- (Z), «SP) - 2)7 <E- (S) X: Indefinido. (SP) <E- (SP) - 2 El contenido del registro A es transferido a la posición de memoria cuya dirección es una unidad menor que el registro SP. El contenido de los señalizadores de con­ http://librosysolucionarios.net 304 FUNDAMENTOS DE LOS MICROPROCESADORES dición son ensamblados en una palabra de status de procesador y la palabra es transferida a la posición de memoria cuya dirección es dos unidades menor que el contenido del registro SP. El contenido del registro SP es decrementado en dos. 111111110 Ciclos: Estados: 11 0 1 I 3 12 (8085), 11 (8080) Direccionamiento: Sefializadores: indirecto de reg. ninguno PALABRA SEÑALIZAOORA D7 D6 D5 D4 D3 O2 DI Do I I Ixl Ixl Ixl I S Z AC P procesador) (CY) <E- «SP»o (P) <E- «SP»2 (AC) <E- «SP»4 (Z) <E- «SP»/; (S) <E- «SP»1 (A) <E- «SP) + 1) (SP) <E- (SP) + 2 El contenido de la posición de memoria cuya dirección está especificada por el contenido del registro SP es utilizado para restaurar los sefializadores de condición. El contenido de la posición de memoria cuya dirección es una unidad más que el contenido del registro SP es transferido al registro A. El contenido del registro SP es incrementado en 2. CY X: indefinido POP rp (Sacar) (rl) <E- «SP» (rh) <E- «SP) + 1) (SP) <E- (SP) + 2 El contenido de la posición de memoria, cuya dirección está especificada por el contenido del registro SP, es transferido al registro de orden inferior del registro par rp. El contenido de la posición de me­ moria, cuya dirección es una unidad ma­ yor que el contenido del registro SP, es transferido al registro rp. El contenido del registro SP es incrementado en 2. Nota: El registro par rp =SP no puede ser espe­ cificado. Ciclos: Estados: Direccionamiento: Sefializadores: pop PSW (Sacar palabra de status del 3 JO indirecto de reg. ninguno Ciclos: Estados: Direccionamiento: Sefializadores: 3 JO indirecto de reg. Z,S,P,CY,AC XTHL (Intercambia tope de la pila con H y L) (L) +-+ «SP» (H) +-+ «SP) + 1) El contenido del registro L es intercam­ biado con el contenido de la posición de memoria cuya dirección está especificada por el contenido del registro SP. El conte­ nido del registro H es intercambiado con el contenido de la posición de memoria cuya dirección es una unidad más que el contenido del registro SP. Ciclos: Estados: Direccionamiento: Sefializadores: http://librosysolucionarios.net 5 16 (8085), 18 (8080) indirecto de reg. ninguno EL MICROPROCESADOR INTEL 8080/8085 SPHL (Transferir HL a SP) (SP) ~ (H) (L) El contenido de los registros H y L (16 bits) es transferido al registro SP. oria por el do para !Kiición. !lemoria IS que el rendo al !rO SP es Ciclos: Estados: 1>ireccionamiento: Señalizadores: lila con H L:C:m­ osición de ¡¡pecificada t. El conte­ abiado con e memoria más que el El (Habilita interrupciones) El sistema de interrupción es habilitado después de la ejecución de la siguiente instrucción. Las interrupciones no son re­ conocidas durante la instrucción El. Ciclos: Estados: Señalizadores: 1 4 ninguno NOTA: Está prohibido colocar una instruc­ ción El en el bus en respuesta a INTA du­ rante un ciclo INA (8085). N puerto (Entrar) (A) ~(dato) El dato colocado en el bus de datos bidi­ reccional de 8 bits, por el puerto especifi­ cado es transferido al registro A. puerto le reg. ,,"e l 6 (8085), 5 (8080) registro ninguno 305 Ciclos: Estados: Direccionamiento: Señalizadores: 3 10 Ciclos: Estados: Señalizadores: directo ninguno Ol"T puerto (Salir) ¡dato) ~(A) El contenido del registro A es colocado en el bus de datos bidireccional de ocho bits para que se transmita al puerto especifi­ .:ado. I I O 1 DI (Inhabilita interrupclones) El sistema de interrupciones se habilita inmediatamente después de la ejecución de la instrucción DI. Las interrupciones no son reconocidas durante la instrucción DI. OI O 1 1 1 4 ninguno NOTA: Está prohibido colocar una instruc­ ción DI en el bus en respuesta a INTA du­ rante un ciclo INA (8085). HLT (Alto) El procesador se detiene. Los registros y señalizadores no se afectan. (8080) Un se­ gundo ALE es generado durante la ejecu­ ción de HLT para dar información del status del ciclo Hall. (8085) puerto Do ~ D de reg. Ciclos: Estados: Ilirarionamiento: Señalizadores: 3 10 directo ninguno Ciclos: Estados: Señalizadores: http://librosysolucionarios.net 1 + (8085), 1 (8080) 5 (8085), 7 (8080) ninguno 306 FUNDAMENTOS DE LOS· MICROPROCESADORES NOP (No operación) No se realiza ninguna operación. Los re­ gistros y señalizadores no están afectados. O lO lO lO 10 1 0 1 0 1 0 Ciclos: Estados: Señalizadores: 1 4 ninguno RIM (Lectura de máscaras de interrup­ ción) (solamente 8085) La instrucción RIM carga datos en el acu­ mulador relativos a interrupciones y en­ tradas serie. Este dato contiene la siguien­ te información: • Status actual de la máscara de inte­ rrupción para las interrupciones hardware RST 5.5, 6.5 y 7.5 (1 = máscara inhabilitada). • Status actual del señalizador de habi­ litación de interrupciones (1 = inte­ rrupciones habilitadas) excepto in­ mediatamente despuéS de una interrupción TRAP. (Ver más aba­ jo.) • Interrupciones hardware pendienteS (por ejemplo, señal recibida pero to­ davía no servida), en las líneas RST 5.5, 6.5 y 7.5. • Datos de entrada serie. Inmediatamente después de una interrup­ ción TRAP, debe ser ejecutada la instruc­ ción RIM como parte de la rutina de servi­ cio si se necesita reClíperar más tarde el status de interrupción actual. El bit 3 del acumulador está (solamente en este caso es­ pecial) cargado con el status del señalizador de habilitación de interrupción (lE) que existía antes de la interrupción RST 5.5, 6.5, 7.5 o INTR, el flip-flop del señalizador de interrupciones refleja el status actual de habilitación de interrupción. El bit 6 del acumulador (17.5) es cargado con el status del flip-flop de RST 7.5, que está siempre en set (disparado por flanco) por una entrada en la línea de entrada RST 7.5, aun cuando esa interrupción haya sido previamente en­ mascarada. (Ver instrucción SIM.) o 7 o Código de op. O O O O O O Contenido del acumulador después de RIM Máscaras de interrupción SeñaJizador de habilitación de interrupción Interrupciones pendientes 1...-------DalO5 entrada serie Ciclos: Estados: Señalizadores: 1 4 ninguno SIM (Pone a 1 las máscaras de las inte­ rrupciones) (solamente 8085) La ejecución de la instrucción SIM utiliza el contenido del acumulador (que debe ser cargado previamente) para realizar las siguientes funciones: • Programar las máscaras de interrup­ ciones para las interrupciones hard­ ware RST 5.5, 6.5 y 7.5. • Poner a O el cerrojo de entrada RST 7.5 disparado por flanco. • Cargar el cerrojo de salida SOD. Para programar las máscaras de interrupcio­ nes, primero poner a 1 el bit 3 del acumula­ dor y poner a 1 cualquiera de los bits O, 1 y 2, que inhabilitan las interrupciones RST 5.5, 6.5 y 7.5, respectivamente, Ejecutar en­ tonces una instrucción SIM. Si el bit 3 del acumulador está a O cuando se ejecuta la http://librosysolucionarios.net entrada cuando rote en­ E1 j 65 M5 , .J ~t3SCaras de - :errupción zador de !Í'liltación I interrupción 15 pendientes I 307 EL MICROPROCESADOR INTEL 8080/8085 J cnuada serie le las inte- SIM utiliza ¡que debe realizar las le interrup­ iones hard­ bdaRST aSOD. interrupcio­ el acumula­ lIS bits O, 1 Y ciones RST Ejecutar enel bit 3 del ;e ejecuta la instrucción SIM, el registro de máscaras de interrupciones no cambiará. Si el bit 4 del acumulador está a 1 cuando se ejecuta la instrucción SIM, el cerrojo RST 7.5 está en­ tonces en reinicialización. RST 7.5 se distin­ gue por el hecho de que su cerrojo está siempre en set por un flanco de subida en la patilla de entrada de RST 7.5. aunque el sal­ to a la rutina de servicio esté inhibido por enmascaramiento. Este cerrojo permanece en alta hasta que sea borrado por un REINI­ dALIZACION IN, por una instrucción SIM con el bit 4 del acumulador en alto, o por un conocimiento interno del procesador de una interrupción RST 7.5 posterior a la eliminación de la máscara (por una instruc­ ción SIM). La sefial REINIOALIZACION fS" siempre pone a 1 los tres bits de máscara RST. Si el bit 6 del acumulador está en el nivel 1 cuando se ejecuta la instrucción SIM, el es­ tado del bit 7 del acumulador se carga en el cerrojo SOD y, por tanto, está disponible para conectarse a un dispositivo externo. El cerrojo SOD no es afectado por la instruc- ción SIM si el bit 6 está a O. SOD está siem­ pre en reinicialización por la señal REINI­ CIALIZACION IN. O 7 Código de op.1 O O 7 6 Contenido del acumulador antes de RIM 5 4 O O 3 2 O O O ' - - - - Habilitar colocación de máscara Io------Poner a Oflip-flop RST 7.5 '-------lndefinido ' - - - - - - - - - Habilitar SOD L . . . - - - - - - - - - - D a t o salida serie Ciclos: Estados: Sefializadores: 1 4 ninguno Este grupo contiene instrucciones para introducir o sacar datos de la pila. Como en el micro­ procesador genérico, la pila del 8080/8085 se localiza fuera del microprocesador yen la RAM. La parte superior de la pila está definida poniendo el puntero de pila del 8080/8085 en una dirección seleccionada por el programador. Todas las instrucciones PUSH y POP del 8080/8085 transfieren : b~1es de datos a o desde la pila utilizando una sola instrucción. Las instrucciones PUSH PSWy POP PSW transfieren datos entre la palabra de status del procesador y la pila. La palabra de status del procesador se define cómo la combinación del registro de status de la MPU (sefializado­ :-es) y acumulador. Las instrucciones IN y OUT del 8080/8085 funcionan de forma similar a las del microproce­ -SOr genérico. La operación IN introduce un byte de datos desde el puerto especificado por el :;egundo byte de la instrucción. De forma análoga, la operación OUT transfiere un byte de datos .lesde el acumulador al puerto de salida especificado en el segundo byte de la instrucción. Como !D el microprocesador genérico, estas instrucciones son utilizadas con una técnica de E/S. La operación XTHL es una instrucción de 1 byte para intercambiar el tope de la pila con el ~ntenido del registro par HL. La operación SPHL es una instrucción de transferencia de datos. Transfiere el contenido del registro HL al puntero de pila del microprocesador. Esta instrucción puede utilizarse para inicializar el puntero de pila, definiendo así el tope de la pila de la RAM. La instrucción NOP no realiza ninguna operación, como en el microprocesador genérico. La mstrucción NOP es útil como un retardo de tiempo en un ciclo de temporización. La instrucción HLT detiene el procesador. El contador de programa contiene la dirección de la siguiente instrucción secuencial. Los demás sefializadores y registros no cambian. Una vez en el http://librosysolucionarios.net 308 FUNDAMENTOS DE LOS MICROPROCESAOORES estado de alto, el microprocesador puede ser reinicializado solamente por un evento externo, típicamente una interrupción. La operación HLT se utiliza para detener la MPU cuando está esperando que un dispositivo periférico termine su tarea e interrumpa al procesador. Las acciones del microprocesador pueden ser iniciadas de dos formas. Primero, la acción del microprocesador puede ser iniciada por una instrucción de la memoria del programa. Un segun­ do método de iniciación de la acción de la MPU es utilizar una interrupción externa. Las inte­ rrupciones hardware de la MPU 8080 u 8085 pueden ser controladas por dos instrucciones. Estas son las de habilitación de interrupciones (E/) e inhabilitación de interrupciones (D/). Cuando se ejecuta la intrucción El, se pondrá a 1 un flip-flop de habilitación de interrupción en la CPU. Cuando el flip-flop de habilitación de interrupción está a 1 o habilitado, la MPU 8085 reconocerá y responderá a cualquiera de las cinco posibles interrupciones hardware. La instrucción DI (inhabilitación de interrupciones) hará que el señalizador de habilitación de interrupciones (o flip-flop) se ponga a O. Cuando el señalizador de habilitación de interrupciones está a O, la MPU del 8085 ignorará todas las interrupciones excepto la interrupción TRAP. Esta interrupción no puede ser inhabilitada por ninguna instrucción de programa del 8085. La instrucción El se utiliza frecuentemente como parte de una secuencia de arranque. Cuando se conecta la alimentación, la MPU comienza a intentar ejecutar instrucciones desde algunas direcciones desconocidas. Habitualmente, se aplica una entrada de REINICIALIZAC/ON, for­ zando a que el contador de programa contenga OOOOH. La entrada de REINICIAUZACION también hace que el señalizador de habilitación de interrupciones se ponga a O, inhabilitando todas las interrupciones del 8085 excepto la TRAP. Una de las primeras instrucciones después de la reinicialización es El para habilitar las interrupciones. Las interrupciones, a veces, se referencian como enmascarables o no enmascarables. Una interrupción no enmascarable es la que no puede inhabilitar el sistema. Una interrupción enmas­ carable es la que puede inhabilitar el sistema. En el microprocesador 8085, la interrupción TRAP se considera no enmascarable mientras que las restantes son enmascarables. Las instrucciones El y DI habilitan e inhabilitan todas las interrupciones enmascarables como un grupo. Las interrupciones RST 7.5, RST 6.5 y RST 5.5 pueden ser habilitadas e inhabilitadas individualmente. El mecanismo real para habilitar e inhabilitar selectivamente las interrupciones se denomina máscara de interrupción. Si una interrupción es enmascarada. no es reconocida por el procesador (esto es análogo a un ladrón de bancos enmascarado y por tanto no reconocible). Sin embargo, si se elimina la máscara, la interrupción será reconocida por el procesador. Considerar el ejemplo simplificado de interrupción mostrado en la Figura 8.36. Seguir las acciones de la MPU por los números inscritos en los círculos de la Figura 8.36. t I 1. La entrada RST 5.5 (patilla 9) a la pastilla 8085 se activa con una sefial en ALTA. 2. Para simplificar el ejemplo, se suponen tres cosas. Estas son: (a) No se activa la interrupción de más alta prioridad TRAP. (b) No se activa o enmascara la interrupción de alta prioridad RST 7.5. '(e) No se activa o enmascara la interrupción de alta prioridad RST 6.5. 3. Se comprueba el bit de la máscara de interrupción (Bo) del registro de status de interrup­ ción. Está en reinicialización (a O), o no enmascarado, lo cual satisface la primera condi­ ción para que la interrupción RST 5.5 sea reconocida por la MPU. 4. Se comprueba el señalizador de habilitación de interrupción (BJ) del registro de status de interrupción. Está a 1, 10 que significa que todas las interrupciones están habilitadas. 5. La interrupción RST 5.5 es reconocida por la MPU. El procesador entonces termina su instrucción actual y almacena el contenido del contador de programa en la pila. http://librosysolucionarios.net I EL MICROPROCESADOR INTEL 8080/8085 'é'\temo, ~0 está lIC\.;ón del Jn segun­ , Las Ínte­ lIDes, Estas Cuando se • la CPU. reconocerá 309 MPU8085 ALTO RST5,5 BAJO Sí No .. .::;:iÓn de _pciones . ~-lP. Esta S. Je. , ~.o Cuando algunas ~'. for­ Seilalizador El ;' 4CION ~llitando r.despuésde o !J'3t>les. Una ,; enmas­ p.,ón TRAP Interrupción RST5.5 no reconocida como Jbilitadas -:Ilpciones oonocida por ~;:onocible ). !~t-les Continúa con las instrucciones en el orden secuencial normal ~0r. Seguir las ALTA. de interrup­ rrimera condi­ LS de status de labilitadas. :es termina su a pila. :'O Interrupción RST5.5 reconocida Figura 8.36. .. (2) Salto a la posición de memoria 002CH Pasos en el tratamiento de una interrupción no enmascarada RST 5.5 de la MPU 8085. 6. La pastilla microprocesadora 8085 facilita una señal de conocimiento de interrupción (TNTA) a los periféricos. 7. La MPU entonces bifurca a la posición de memoria 002CH. El cálculo de la posición de memoria de reinicialización es 5.5 x 8 = 4410 = 2C 1ó ' La MPU examinaba la condición de los bits 2 con el registro de status de interrupción de la FIgUra 8.36. Primero durante el paso 3, se comprobó el bit de máscara 5.5 (M 5.5). El bit M 5.5 http://librosysolucionarios.net 310 RJNDAMENTOS DE LOS MICROPROCESADORES estaba a o, o no enmascarado, lo que significaba que la MPU podía reconocer esta interrupción': Segundo, durante el paso 4, se comprobó el señalizador de habilitación de interrupción (señaliza­ dor lE). El señalizador lE de la Figura 8.36 estaba a l (habilitado), lo que significa que la MPU podía reconocer esta interrupción. Algunos de los bits del registro de status de interrupción pueden ser cambiados utilizando la instrucción SIM única del 8085. La instrucción SIM (inicialización de las máscaras de interrup­ ción) colocará el contenido del acumulador en el registro l. Anteriormente se aprendió que la instrucción SIM también se utiliza para sacar un bit de datos al cerrojo SOD (salida de datos serie) de la MPU 8085 (ver Fig. 8.7b). El registro de máscaras de interrupción como lo utiliza la instrucción SIM está esbozado en la Figura 8.37. Los bits de las máscaras de RST 5.5, RST 6.5 y RST 7.5 pueden ser puestos a 1 (enmascarados) o a O (no enmascarados) si el bit 3 (habilitación de la máscara) está habilitado con un l lógico. Un l lógico en la posición del bit 4 pondrá a O el flip-flop de RST 7.5. El bit 5 de la Figura 8.37 no está definido. Los bits 6 y 7 del registro de máscaras de interrupción de la Figu­ ra 8.37 están asociados a la salida serie del procesador (la patilla SOD de la MPU 8085). Habilitar el bit 6 con l permite una transferencia de datos del bit 7 del registro I al cerrojo SOD en la patilla 4 de la pastilla 8085. . I ., " SOD I SOE I X I R7,5 I MSE I M7,5 I M6.5 i I M5,5 L I Máscara RST 5,5 Máscara RST6,5 Máscara RST 7,5 } o- no enmascarado I ~ enmascarado , 4.·1' '1 " Habilitación de máscara I - habilitada O- inhabilitada (No cambio en B2• BI' Bo) Flip-tlop de reset RST7.5 Indefinido 1 - reset del f1ip-flop RST 7,5 O- no teset Habilitación de salida en serie I - salida en serie de 8 7 al cerrojo SOD O- no hay salida serie Datos de salida en serie Figura 8.37. Organización del registro de interrupción como lo utiliza la instrucción SIM del 8085, El registro de status de interrupción como lo lee la instrucción RIM está esbozado en la Figura 8.38. La instrucción RIM transfiere el contenido de los cerrojos internos de la Figura 8.38 al acumulador. La instrucción RIM se utilizó anteriormente en la Figura 8.7 a para entrar datos serie desde la patilla SID de la MPU 8085 al bit 7 del acumulador. El status de otros diversos cerrojos también es visualizado en el acumulador junto con la entrada de datos serie. http://librosysolucionarios.net EL MICROPROCESADOR INTEL 8080;8085 1 :1ón; Jiza­ riPU l SlD I 17.5 I 16.5 I 15.5 l lE t do la rrup­ ue la datos I M7.5 l M6.5 I M5.5 L I Máscara de status RST 5.5 Máscara de status RST 6.5 Máscara de status RST 7.5 Status del señalizador de habilitación de interru pciones len la )S o- no enmascarada 1 - enmascarada I - interrupciones habilitadas O - interrupciones inhabilitadas 5.511 -pendiente la interrupción está a 1 lo con ¡ de la , Figu­ Ibilitar patilla 311 Interrupción pendiente RST Inle rrupción pendiente RST 6.5 Interr upción pendiente RST 7.5 2 - la interrupción no está pendiente Dato de entrada en serie de la patilla SID Figura 8.38. Organización del registro de intemJpCión cuando lee por la instrucción RIM del 8085. .' PROBLEMAS RESUELTOS 8.70. Listar las instrucciones de la Figura 8.35 asociadas a la pila. Solución: Todas las instrucciones PUSH y POP listadas en la Figura 8.35 utilizan la pila. Las instruccio­ nes XTHL y SPHL también están asociadas a la pila ya que cambian los contenidos del puntero de pila. t ~. 8 1, 8 0) 8.71. b7.5 Solución: Las operaciones RIM y SIM son solamente nuevas instrucciones utilizadas por la MPU 8085 que no fueron utilizadas por el procesador más antiguo 8080. 0# •cric de 8 7 oSOD ¡alKla serie 8.72. El contenido del registro par HL después de la operación XTHL de la Figura 8.39 es _ _ (hex). Solución: le' 8085. ado en la ¡gura 8.38 Itrar datos 1$ diversos Listar las instrucciones de la Figura 8.35 que son utilizadas solamente por el microproce­ sador 8085 y no por la MPU más antigua 8080. Según la descripción de Intel de la instrucción «intercambiar tope de pila con H y Ü), el contenido del registro par HL después de la operación XTHL de la Figura 8.39 es 2000H. !."'3. ¿Cuál es el contenido de las posiciones de la pila 2080H y 2081 H después de la operación XTHL de la Figura 8.391 Solución: Los contenidos de la pila después de la operación XTHL de la Figura 8.39 son 21 H para la posición de la pila 2080H y 20H para la posición de la pila 2081 H. http://librosysolucionarios.net 310 FUNDAMENTOS DE LOS MICROPROCESADORES estaba a o, o no enmascarado, lo que significaba que la MPU podía reconocer esta interrupción', Segundo, durante el paso 4, se comprobó el sefializador de habilitación de interrupción (sefializa­ dor lE). El sefializador lE de la Figura 8.36 estaba a 1 (habilitado), lo que significa que la MPU podía reconocer esta interrupción. Algunos de los bits del registro de status de interrupción pueden ser cambiados utilizando la instrucción SIM única del 8085. La instrucción SIM (inicialización de las máscaras de interrup­ ción) colocará el contenido del acumulador en el registro l. Anteriormente se aprendió que la instrucción SIM también se utiliza para sacar un bit de datos al cerrojo SOD (salida de datos serie) de la MPU 8085 (ver Fig. 8.7b). El registro de máscaras de interrupción como lo utiliza la instrucción SIM está esbozado en la Figura 8.37. Los bits de las máscaras de RST 5.5, RST6.5 y RST 7.5 pueden ser puestos a 1 (enmascarados) o a O(no enmascarados) si el bit 3 (habilitación de la máscara) está habilitado con un 1 lógico. Un I lógico en la posición del bit 4 pondrá a O el flip-flop de RST 7.5. El bit 5 de la Figura 8.37 no está definido. Los bits 6 y 7 del registro de máscaras de interrupción de la Figu­ ra 8.37 están asociados a la salida serie del procesador (la patilla SOD de la MPU 8085). Habilitar el bit 6 con 1 permite una transferencia de datos del bit 7 del registro I al cerrojo SOD en la patilla 4 de la pastilla 8085. I SOD I SOE I x I R7.5 I MSE I M7.5 I M6,5 I M5.5 I r L Máscara RST 5.5 Máscara RST65 Máscara RST 7.5 Habilitación de máscara .. } o- no enmascarado I - enmascarado I - habilitada O - inhabilitada (No cambio en B 2• BI' BO) Flip-f1op de reset RST 7.5 Indefinido 1 - reset del llip-f1op RST 7.5 O- no reset Habilitación de salida en serie 1 - salida en serie de B7 al cerrojo SOD O - no hay salida serie Datos de salida en serie Figura 8.37. Organización del registro de interrupción como lo utiliza la instrucción SIM del 8085. El registro de status de interrupción como lo lee la instrucción RIM está esbozado en la Figura 8.38. La instrucción RIM transfiere el contenido de los cerrojos internos de la Figura 8.38 al acumulador. La instrucción RIM se utilizó anteriormente en la Figura 8.7a para entrar datos serie desde la patilla SID de la MPU 8085 al bit 7 del acumulador. El status de otros diversos cerrojos también es visualizado en el acumulador junto con la entrada de datos serie. http://librosysolucionarios.net EL MICROPROCESADOR INTEL 8080/8085 .. !nupción~ tseñaliza­ e la MPU I SID I 17.5 /6.5 I /5.5 I lE 1 M7.5 I M6.5 I M5.5 L • lizando la : interrup­ dió que la a de datos I Máscara de status RST 5.5 Máscara de status RST 6.5 Máscara de status RST 7.5 Status del señalizador de habilitación de interru pclOnes ~doenla a l ·.ado con 101t 5 de la de la Figu­ 1). Habilitar en la patilla I . 311 o - no enmascarada I - enmascarada I - interrupciones habilitadas O- interrupciones I inhabilitadas 5.5)1 -la interrupción está 6.5 pendiente Interrupción pendiente RST loterrupción pendiente RST lnte rrupción pendiente RST 7.5 . -lOS 2 - la interrupción no está pendiente Dato de entrada en serie de la patilla SID Figura 8.38. Organización del registro de interrupción cuando lee por la instrucción RIM del 8085. PROBLEMAS RESUELTOS 8.70. Solución: Todas las instrucciones PUSH y POP listadas en la Figura 8.35 utilizan la pila. Las instruccio­ nes XTHL y SPHL también están asociadas a la pila ya que cambian los contenidos del puntero de pila. ~do .-anOO • :!'.t-=. :~ B2• BI' Bol 1.71. del p ..ilop RST 7.5 El <'10 SOD serie 1..72. ~ del 8085. I sbozado en la lb Figura 8.38 la entrar datos : otrOS diversos lerie. Listar las instrucciones de la Figura 8.35 que son utilizadas solamente por el microproce­ sador 8085 y no por la MPU más antigua 8080. Solución:, Las operaciones RIM y SIM son solamente nuevas instrucciones utilizadas por la MPU 8085 que no fueron utilizadas por el procesador más antiguo 8080. • reset ,.~ en serie de B1 • :..7' 'salida Listar las instrucciones de la Figura 8.35 asociadas a la pila. .;~ i. "13. El contenido del registro par HL después de la operación XTHL de la Figura 8.39 es _ _ (hex). Solución: Según la descripción de Intel de la instrucción «intercambiar tope de pila con H y ü>, el contenido del registro par HL después de la operación XTHL de la Figura 8.39 es 2000H. ¿Cuál es el contenido de las posiciones de la pila 2080H y 2081 H después de la operación XTHL de la Figura 8.39? Solución: Los contenidos de la pila después de la operación XTHL de la Figura 8.39 son 21H para la posición de la pila 2080H y 20H para la posición de la pila 2081 H. http://librosysolucionarios.net 312 FUNDAMENTOS DE LOS MICROPROCESADORES Pila 2080H Figura 8.39. 8.74. La instrucción El afectará ¿a qué bit del registro de status de interrupción mostrado en la Figura 8.38? Solución: La instrucción El (habilita interrupciones) pondrá B3 a 1 (el señalizador de habilitación de inte­ rrupciones). 8.1S. La instrucción HLT tiene un código de op de _ _ (hex). Afecta _ _ (a todos, a ningún} (los) sefializador(es). Una vez en el estado alto, el procesador puede rearrancar sólo por un evento tal como _ _ (interrupción, instrucción NOP). Solución: La instrucción HLT tiene un código de op de 76H. No afecta a los señalizadores. Una vez que está en el estado alto, el procesador puede rearrancar sólo por un acontecimiento externo como por ejemplo una interrupción. i ! 8.76. La instrucción OUT utiJiza el modo de direccionamiento _ _ (directo, de registro). La dirección del puerto de salida se encuentra en la memoria de _ _ (datos, progra­ ma). Solución: La instrucción OUT utiliza el modo de direccionimiento directo. La dirección del puerto de salida se encuentra en la memoria de programa. 8.77. La instrucción RIM puede ser utilizada para _ _ (recibir, enviar) datos serie vía la patilla _ _ (SID. SOD) del microprocesador 8085. Este simple bit de datos finaliza en el bit _ _ (número) del acumulador. Solución: Según la descripción Intel de la operación «leer máscaras de interrupción», la instrucción RIM puede ser utilizada para recibir datos serie vía la patilla SID del microprocesador 8085. Este bit de datos finaliza en el bit 7 del acumulador. 8.78. Si una entrada tal como la interrupción RST 6.5 está enmascarada, está _ _. (inhabili­ tada, habilitada). Solución: Si una entrada tal como la interrupción RST 6.5 está enmascarada, está inhabilitada. http://librosysolucionarios.net EL MICROPROCESADOR INTEL 8080/8085 f de pita ~~ 8.79. ::080H ] 313 Acudir a la Figura 8.40. Después de la operación SIM, listar el contenido de la posición de cada bit del registro l. • ~ .UiIeI de la operación Después de la operación ' SIM I I I )( ? ? SOD SOE I ., I ? I ., 1., ? I Registro 1 R7.5 MSE M7.5 M6.5 M5.5 Figura 8.40. do en la ',ti ilación de inte­ _ (a todos, a de rearrancar tuna,." que i"' Solución: El registro 1 de la Figura 8.40 contendrá lo siguiente después de la operación SIM: SOD (datos salida serie) - I SOE (habilitación salida serie) - O R 7.5 (tlip-flop RST 7.5 en reinicialización) = O MSE (habilitación de máscara) - 1 M 7.5 (máscara RST 7.5) = O M 6.5 (máscara de RST 6.5) = O M 5.5 (máscara RST 5.5) = O como por Acudir a la Figura 8.40. ¿Estará la salida de datos serie encerrada en el cerrojo SOD de la MPU del 8085? l(datos, de registro). progra­ Solución: El bit de habilitación de salida serie del registro 1 de la Figura 8.40 está inhabilitado. Por tanto los datos de la salida serie no serán transferidos y encerrados en el cerrojo SOD de la MPU 8085. I.'IrmO .... 8..81. 00 del puerto de • Listar las interrupciones que quedarán no enmascaradas después de la instrucción SIM de la Figura 8.40. Solución: Las interrupciones RST 7.5. RST 6.5 y RST 5.5 Quedarán no enmascaradas después de la instrucción SIM de la Figura 8.40. I ¡tos serie vía la latos finaliza en PROBLEMAS SUPLEMENTARIOS mstrucción RIM • )85. Este bit de i.n. Res. ---'- (inhabili- abilitada. lntel Corporation introdujo el primer microprocesador, el 4004 de 4 bits, en _ _ (año). l.IJ. 1971. Acudir a la Figura 8.2. Las patillas 12 a 19 de! 8085 tienen el doble propósito de líneas del bus de _ _ / _ . Res. direcciones/datos. http://librosysolucionarios.net / 314 FUNDAMENTOS DE LOS MICROPROCESADORES 8.84. Acudir a la Figura 8.2. La entrada READYa la MPU 8085 está más asociada con el estado de _ _ (alto, espera) del procesador. Res. espera. 8.85. Acudir a la Figura 8.2. ¿Qué dos patillas en la MPU 8085 (una de entrada y otra de salida) están más relacionadas con un acceso directo a memoria? Res. entrada HOW, salida HLDA (conocimiento de mantenimiento). 8.86. Acudir a la Figura 8.3. Las señales de control del 8085 son /O/M = O, SI = I Y S2 = O. Esto significa que el microprocesador está realizando ¿qué tipo de ciclo máquina? Res. lectura de memoria (ver Fig. 8.3). 8.87. Este registro de 16 bits siempre contiene una dirección y señala a la siguiente instrucción que va a ser ejecutada. Res. contador de programa (PC). 8.88. El señalizador de signo en reinicialización (O) después de una operación aritmética en el 8085 significa que el resultado del acumulador es _ _ (negativo, positivo). Res. positivo. 8.89. El señalizador de cero en reinicialización (O) después de una operación aritmética en el microproce­ sador 8085 significa que el resultado del acumulador es _ _ (no cero, cero). Res. no cero. . 8.90. La entrada TRAP del 8085 es una interrupcióD _ _ (enmascarable, no enmascarable) y por tanto no puede ser inhabilitada. Res. no enmascarable. 8.91. Acudir a la Figura 8.6. Cuando se activa la interrupción hardware RST 6.5 del 8085, la CPU guarda el contenido del__ _ _ en la pila y bifurca a la dirección de memoria _ _ (hex). Res. contador de programa (PC), 34H. 8.92. Los acumuladores secundarios (BC, DE y. HL) del 8085 pueden utilizarse como acumuladores o como _ _ _ _ . Res. contadores de datos (punteros de dirección). 8.93. El microprocesador 8085 utiliza _ _ (número) señalizadores que contienen información de status. Res. cinco. 8.94. La instrucción MOV A,L del 8085 (transfiere L a A) transfiere el contenido de un registro a otro. Por tanto utiliza el modo de direccionamiento de _ _ . Res. registro. 8.95. La instrucción MVI L del 8085 transfiere datos del segundo byte de la instrucción al regis­ tro _ _ (letra). Utiliza el modo de direccionamiento _ _ . Res. L. inmediato. http://librosysolucionarios.net 1 EL MICROPROCESADOR INTEL 8080;8085 315 estado 8.96. Cada una de las instrucciones de direccionamiento indirecto de registro del 8085 utiliza _ _ (1, 3) byte(s) de la memoria de programa. Res. 1. están 8.97. Cada una de las instrucciones de direccionamiento directo del 8085 utiliza _ _ (1, 2 ó 3) bytes de la memoria de programa. Res. 2 Ó 3. ; '< L) l ¡¡jgnifica f . que va a I I icroproce- , por tanto ::pu guarda bex). Duladores o Lación de i I listro a otro. :ión al regis- 8.91. Intel clasifica la operación del 8080/8085 «almacenar A en memoria» como una instrucción de _ _ (bifurcación, transferencia de datos). Res. transferencia de datos. ...". Intel clasifica la operación de «desplazamiento circular» del 8080/8085 como una instruc­ ción _ _ (de transferencia de datos, lógica). Res. lógica. 1.100. Intel clasifica una operación de «llamada» del 8080/8085 como una instrucción _ _ (de bifurca­ ción, lógica). Res. bifurcación. 8.101. Acudir a la Figura 8. 16. Algunos nemotécnicos del 8080/8085 contienen una I adicional como ADI v, ANI v, y MVI A, v. Cada vez que aparece la 1 adicional en estas instrucciones, se especifica el modo de direccionamiento _ _ . Res. inmediato. I.J02. Acudir a la Figura 8.16. Listar los nemotécnicos para dos instrucciones utilizadas por el 8085 pero no por el microprocesador 8080. Res. RIM, SIM. 1.103. En la instrucción MOV D,E del 8080/8085, el registro _ _ (letra) es la fuente de datos mientras que el registro _ _ (letra) es el destino. Res. E, D. 1.184. En la instrucción MVI A del 8080/8085. la fuente del dato es __ ' _. Res. el segundo byte de la instrucción encontrada en la mem0ria de programa. 1.115. La instrucción MOV R,M del 8080/8085 utiliza direccionamiento _ _ • Res. indirecto de registro, 1.116. La instrucción STA del 8080/8085 utiliza direccionamiento _ _ . Res. directo. 1..17. La instrucción MOV A,L del 8080/8085 utiliza direccionamiento _ _ . Res. de registro. 1..1.. La instrucción ADD M del 8080/8085 suma el contenido de la posición de memoria señalada por el registro par _ _ (dos letras) al contenido del registro _ _ (letra). La suma se deposita en el re­ gistro _ _ (letra). Res. HL, A, A. http://librosysolucionarios.net - 316 8.109. 8.110. FUNDAMENTOS DE LOS MICROPROCESADORES' El código de op para la instrucción INX H mostrado en la Figura 8.41 es _ _ (hex). Res. 23H. Puntero, I 208C La instrucción INX H de la Figura 8.41 utiliza direccionamiento _ _ . Res. de registro. 8.111. Listar el contenido de los registros H y L desputs de la operación de incrementación mostrada en la Figura 8.41. Res. registro H == 00000oo 1, registro L == 00000000. Contadl Registro H 00000000 Registro H Registro L IIII IIII Registro L '. .Des,. de ADtes de la operación J>fOII la operación INXH 8.119. I .~ . Figura 8.41. lUlO. ' ¡ 8.112. El símbolo V es usado por Intel para describir la operación lógica _ _ (ANO, ORlo Res. ORo 8.113. Las instrucciones CALL están más relacionadas con las subrutinas, mientras que las instrucciones de reinicialización están más próximas a las _ . Res. interrupciones. 8.114. La instrucción JPE del 8080/8085 es una operación de salto _ _ (condicional, incondicional). Res. condicional. 8.115. La instrucción RNZ del 8080/8085 comprueba el status del señalizador de _ _ antes de ejecutar la operación de vuelta. Res. cero (2). 8.116. La instrucción RP del 8080/8085, mostrada en la Figura 8.42, es una instrucción de _ _ (núme­ ro) byte(s) con un código de op _ _ (hex). Res. 1, FO. 8.117. El contador de programa del 8080/8085 contendrá _ _ (hex) después de la operación «vuelta de subrutina si más» ilustrada en la Figura 8.42. Res. 2004H. 8.118. El puntero de pila del 8080/8085 contendrá _ la Figura 8.42. Res. 2082H. (hex) después de la operación RP mostrada en http://librosysolucionarios.net .~ •.121. j .. ~ 1.122. • iones t nal). EL MICROPROCESADOR INTEL 8080/8085 317 Puntero de pila Después ele la operachSn Registro de r-""=r-..,.-..,--,--r-,-....,.-.., status '--"'---'--.......0-1--'----'----'----' Contador de '---_ _ _ 20A_ 1H_ _ _-' programa ? Contador del programa Figura 8.42. 1.119. Las operaciones PUSH y POP del 8080/8085 están especificadas con instrucciones de _ _ (1, 3) bytes y utilizan el direccionamiento _ _ . Res. 1, indirecto de registro. 1.111. Las operaciones IN y OUT del 8080/8085 están especificadas con instrucciones de _ _ (l, 2) bytes y utilizan direccionamiento _ _ . Res. 2, directo. U21. Al ejecutar la instruCción DI del 8085 ¿qué interrupciones se inhabilitarán? Res. INTR, RST 5.5. RST 6.5 y RST 7.5. un. ¿Qué tres funciones pueden ser realizadas por la instrucción SIM del 8085? Res, programar la máscara de interrupciones para las interrupciones hardware RST 5.5, 6.5 Y 7.5; poner a O (reinicialización) el cerrojo de la interrupción disparada por flanco RST 7.5 y cargar el cerrojo de salida SOD. ~' ecutar , núme­ 1 ¡elta de ~. rada en http://librosysolucionarios.net I - -~ --~ Capítulo 9 PROGRAMACION DEL MICROPROCESADOR 8080/8085 9.1. INTRODUCaON Para el programador, la microcomputadora básada: en el 8080/8085 consta del repertorio de instrucciones, memoria, registro de propósito general, contador de programa, puertos de entrada/ salida, sefializadores, puntero de pila y pila. Todo ésto, excepto la memoria y entradas y salidas paralelo, forman parte del microprocesador. Por conveniencia, el resumen del repertorio de instrucciones del microprocesador 8080/8085 se reimprime en la Figura 9.1. El repertorio de instrucciones se detalló en el Capítulo 8. El modelo de programación del 8080/8085 se reproduce en la Figura 9.2a. Lista los registros que conciernen al programador. El registro de status se muestra con mayor detalle en la Figu­ ra 9.2b. Una breve descripción de cada uno de los cinco sefializadores del registro de status también se da en la Figura 9.2b. Los programas fuente se escribirán en lenguaje ensamblador. El formato utilizado por lntel divide cada línea del lenguaje ensamblador en los siguientes campos: Etiqueta Código de op Operando Comentarios Estos campos son similares a los utilizados en la programación en lenguaje ensamblador del Capítulo 6. La entrada del campo de etiqueta es opcional y representa el «nombre» de la línea. Generalmente las líneas que son el destino de saltos o bifurcaciones tendrán entradas en el campo de etiqueta. El campo de código de op contiene el nemotécnico del código de operación de la instrucción del 8080/8085 que se va a ejecutar. El campo de operando da el dato con el que va a operar el código de operación especificado. El campo de operando a veces se denomina argumen­ to. El campo de comentarios puede contener información útil para explicar la función de la instrucción. Los comentarios son opcionales, pero su uso es extremadamente importante para documentar el programa. Una línea de programa en lenguaje ensamblador para el 8080/8085 podría ser: DATA MOV A,M ; Entrar dato al acumulador Cada uno de los cuatro campos tiene una entrada en este ejemplo. Se explican como sigue: l. Campo de etiqueta: Contiene la entrada DATA. Este es el «nombre» de esta línea. Proba­ blemente es el destino de una instrucción de bifurcación posterior (o anterior). 318 http://librosysolucionarios.net .-A___·~_,,'____ _ _ _ _ _ _7_ _ PROORAMACION DEL MICROPROCESADOR 8080/8085 ulo9 - \ A repertorio de de entrada/ Idas y salidas lIS DI' 8080/8085 llo 8. a los registros le en la Figu­ 5trO de status !arlo por lntel Lblador del .,. de la línea. IS en el campo peración de la UD el que va a C I a argumen­ ¡ción de la :1ante para ~: ~ L sigue: 111 linea. Proba­ rior). O Nemotécnico ADDA ADDB ADDC ADDD ADDE ADDH ADDL ADDM ADlv AOCA AOCB AOCC AOCD AOCE AOCH AOCL AOCM ACI v ANA A ANAB ANAC ANAD ANA E ANAH ANAL ANA M ANI v CALLaa CZaa CNZaa CPaa CM aa CCaa CNCaa CPEaa CPOaa CMA CMC CMPA CMPB CMPC CMPD CMPE CMPH CMPL CMPM CPh DAA DADB DADD DADH DADSP Código de op (hex) 87 80 81 82 83 84 85 86 C6 8F 88 89 8A 8B 8C 80 8E CE A7 AO Al A2 A3 A4 AS A6 E6 CD CC C4 F4 FC DO 04 EC E4 2F 3F BF B8 B9 BA BB se BD BE FE 27 09 19 29 39 Jii 319 Descripción Suma A a A (doble A) Suma B a A Suma CaA Suma DaA Suma E aA Suma HaA Suma L aA Suma LOC memoria (H & L) a A Suma dato inmediato v a A Suma A a A con arrastre (doble A con arrastre) Suma B a A con arrastre Suma C a A con arrastre Suma D a A con arrastre Suma E a A con arrastre Suma H a A con arrastre Suma L a A con arrastre Suma LOC memoria (H & L) a A con arrastre Suma dato inmediato v a A con arrastre Examina A y borra arrastre ANDB conA ANDCconA ANDD con A ANO E con A ANDHconA ANDL con A ANO LOC memoria (H & L) con A ANO dato inmediato v con A CaJl subrutina en dirección aa Sí cero, CALL en dirección aa Si no cero, CALL en dirección aa Si más, CALL en dirección aa Si menos. CALL en dirección aa Si arrastre. CALL en dirección aa Si no arrastre, CALL en dirección aa Si paridad par, CALL en dirección aa Si paridad impar, CALL en dirección aa Complementa A Complementa arrasve Pone a 1 el señalizador de cero Compara A con B Compara A con C Compara A con D Compara A con E Compara A con H Compara A con L Compara A con LOC memoria (H & L) Compara A con dato inmediato v Ajuste decimal A Suma B & Ca H & L Suma D & E a H & L Suma H & L a H & L (doble H & L) SumaSPa H&L l. " Figura 9.1. Resumen del repertorio de instrucciones para el microprocesador 8080/8085. (Todos los nemotécnicos tienen derecho de copia © de http://librosysolucionarios.net Intel Corporation, 1976.) ) "" 320 ) , FUNDAMENTOS DE LOS MICROPROCESADORES O E H I J L M Nemoté:-nico OCRA OCRB OCRe OCRD OCRE OCRH OCRL OCRM OCXB OCXD OCXH OCXSP DI El HLT IN v INRA INRB INRe INRD INRE INRH INRL INRM INXB INXD INXH INXSP JMPaa JZaa JNZaa JPaa JMaa JCaa JNCaa JPEaa JPOaa LOA aa LOAXB LOAXD LHLOaa LXI B,vv LXID,vv LXIH,vv LXI SP,vv MOVA,B MOVA,e MOVA,D MOVA,E MOVA,H MOVA,L MOVA,M Código de op (hex) 3D 05 00 15 ID 25 20 35 OB lB 2B 3B F3 FB 76 OB 3C 04 OC 14 IC 24 2C 34 03 13 23 33 C3 CA C2 F2 FA DA 02 EA E2 3A OA lA 2A 01 11 21 31 78 79 7A 78 7C 7D 7E Descripción Decrementa A Decrementa B Decrementa e Decrementa D Decrementa E Decrementa H Decrementa L Decrementa LOC memoria (H & L) Decrementa B & e Decrementa D & E Decrementa H & L Decrementa SP Inhabilita interrupciones Habilita interrupciones Alto hasta interrupción Entrada del dispositivo v Incrementa A Incrementa B Incrementa e Incrementa D Incrementa E Incrementa H Incrementa L Incrementa LOC memoria (H & L) Incrementa B & e Incrementa D & E Incrementa H & L Incrementa SP Salta a dirección aa Si cero, JMP en dirección aa Si no cero. JMP en dirección aa Si más, JMP en dirección aa Si menos, JMP en dirección aa Si arrastre, JMP en dirección aa Si no arrastre, JMP en dirección aa Si paridad par, JMP en dirección aa Si paridad impar, JMP en dirección aa Carga A de dirección aa Carga A de LOC memoria (B & C) Carga A de LOC memoria (D & E) Carga H & L de dirección aa Carga B & e con dato inmediato vv Carga D & E con dato inmediato vv Carga H & L con dato inmediato vv Carga SP con dato inmediato vv Transfiere B a A Transfiere e a A Transfiere D a A Transfiere E a A Transfiere H a A Transfiere L a A Transfiere LOC memoria (H & L) a A Figura 9.1. (continuaCión). http://librosysolucionarios.net ~~ 'SS' I PROGRAMACION OEL MICROPROCESADOR 8080/8085 M Nemotécnico MOV B,A MOV B,e MOV B,D MOV B,E MOVB,H MOV B,L MOV B,M MOVe,A Move,B MOVC,D Move,E Move,H Move,L Move,M MOV D,A MOVD,B MOVD,e MOVD,E MOVD,H MOVD,L MOVD,M MOVE,A MOVE,B MOVE,e MOVE,D MOVE,H MOV E,L MOVE,M MOVH,A MOVH,B MOVH,e MOVH,D MOVH,E MOVH,L MOVH,M MOV L,A MOV L,B MOV L,e MOV L,D MOV L,E MOVL,H VL,M MOV M.A MOVM,B MOVM,e MOVM,D MOVM,E MOVM,H MOVM,L MVIA,v MVIB,v MVI C,v MVID,V MVIE,v MVIH,v MVIL,v ~ Código de op (hex) 47 41 42 43 44 45 46 4F 48 4A 48 4C 40 4E 57 50 51 53 54 55 56 5F 58 59 5A 5e 50 5E 67 60 61 62 63 65 66 6F 68 69 6A 68 6C 6E 77 70 71 72 73 74 75 3E 06 OE 16 lE 26 2E Ñgura 9.1. 321 Descripción Transfiere A a B Transfiere e a B Transfiere D a B Transfiere E a B Transfiere Ha B Transfiere L a B Transfiere LOC memoria (H & L) a B Transfiere A a e Transfiere B a e Transfiere D a e Transfiere E a e Transfiere H a e Transfiere L a e Transfiere Loe memoria (H & L) a e Transfiere A a D Transfiere B a D Transfiere e a D Transfiere E a D Transfiere H a D Transfiere L a D Transfiere Loe memoria (H & L) a D Transfiere A a E Transfiere B a E Transfiere e a E Transfiere D a E Transfiere H a E Transfiere L a E Transfiere LOC memoria (H & L) a E Transfiere A a H Transfiere BaH Transfiere e a H Transfiere D a H Transfiere E a H Transfiere L a H Transfiere LOC memoria (H & L) a H Transfiere A a L Transfiere B a L 11 Transfiere e a L Transfiere Da L Transfiere E aL Transfiere Ha L Transfiere LOC memoria (H & L) a L Transfiere A a LOC memoria (H & L) Transfiere B a Loe memoria (H & L) Transfiere e a Loe memoria (H & L) Transfiere D a Loe memoria (H & L) Transfiere E a Loe memoria (H & L) Transfiere H a LOC memoria (H & L) Transfiere L a Loe memoria (H & L) Transfiere dato inmediato v a A Transfiere dato inmediato va B Transfiere dato inmediato va e Transfiere dato inmediato v a D Transfiere dato inmediato v a E Transfiere dato inmediato va H Transfiere dato inmediato vaL } (continuación). http://librosysolucionarios.net i .~ ~.'---------=~-'~-~"--~-----"-'_.------------._!~------------~ 322 FUNDAMENTOS DE M N O t :f ORAH ORAL ORA M ORI v OUT v PCHL POPB POPD 1. ,f Nemotécnico MVIM,v NOP ORA A ORAB ORAC ORAD ORA E POPH P : 't.,' i ~ ti ;~ R S POPPSW PUSHB PUSHD PUSHH PUSHPSW RAL RAR RLC RRC RIM RET RZ RNZ RP RM RC RNC RPE RPO RSTO RST I RST2 RST3 RST4 RST5 RST6 RST7 SIM SPHL SHLDaa STA aa STAXB STAXD STC ­ LOS MICROPROCESADORES Código de op (hex) 36 00 87 BO 81 82 83 54 85 86 F6 D3 E9 CI DI El FI C5 D5 E5 F5 17 IF 07 OF 20 C9 C8 CO FO F8 D8 DO E8 EO C7 CF D7 DF E7 EF F7 FF 30 F9 22 32 02 12 37 Figura 9.1. Descripción Transfiere dato inmediato va memoria LOC (H & L) No operación Examina A y borra arrastre OR Bcon A OR Ccon A OR DconA OR EconA OR H con A OR LconA OR LOC memoria (H & L) con A OR dato inmediato v con A Saca A a dispositivo v Salta a LOC memoria contenida en (H & L) Saca B & C de pila Saca D & E de pila Saca H & L de pila Saca A y los señalizadores de pila Introduce B & C en pila Introduce D & E en pila Introduce H & L en pila Introduce A y los señalizadores en pila Desplazamiento circular CY + A a la izquierda Desplazamiento circular CY + A a la derecha Desplazamiento circular A a la izquierda y arrastre Desplazamiento circular A a la derecha y arrastre Lee máscara de interrupción (8085 sólo) Vuelve de subrutina Si cero, vuelve de subrutina Si no cero, vuelve de subrutina Si más, vuelve de subrutina Si menos, vuelve de subrutina Si arrastre, vuelve de subrutina Si no arrastre, vuelve de subrutina Si paridad par, vuelve de subrutina Si paridad impar, vuelve de subrutina Rearrancar subrutina en dirección OOH Rearrancar subrutina en dirección 08H Rearrancar subrutina en dirección IOH Rearrancar subrutina en dirección 18H Rearrancar subrutina en dirección 20H Rearrancar subrutina en dirección 28H Rearrancar subrutina en dirección 30H Rearrancar subrutina en dirección 38H Pone a I máscara de interrupción (8085 sólo) Carga SP de H & L Almacena H & L en LOC memoria aa Almacena A en LOC memoria aa Almacena A en LOC memoria (B & C) Almacena A en LOC memoria (D & E) Pone a I señalizador de arrastre . " (continuaciÓn). http://librosysolucionarios.net , 1­ m , PROGRAMACION DEL MICROPROCESADOR 8080/8085 Nemotécnico I S X SUBA SUBB SUBC SUBD SUBE SUBH SUBL SUBM SU! v SBBA SBBB SBBC SBBD SBBE SBBH SBBL SBBM SBIv XCHG XTHL XRAA XRAB XRAC XRAD XRAE XRAH XRAL XRAM XRIv Código de op (hex) 97 90 91 92 93 94 95 96 D6 9F 98 99 9A 9B 9C 90 9E DE EB E3 AF A8 A9 AA AB AC AD AE EE 323 Descripción Borra A Resta B deA Resta CdeA Resta D de A Resta E de A Resta H deA Resta L de A Resta contenido de LOC memoria (H & L) de A Resta dato inmediato v de A Pone A con arrastre menos Resta B de A con préstamo Resta C de A con préstamo Resta D de A con préstamo Resta E de A con préstamo Resta H de A con préstamo Resta L de A con préstamo Resta LOC memoria (H & L) de A con préstamo Resta dato inmediato v de A con préstamo Cambia D & E con H & L Cambia tope de pila con H & L Borra A OR exclusiva de B con A , OR exclusiva de C con A OR exclusiva de D con A OR exclusiva de E con A OR exclusiva de H con A OR exclusiva de L con A OR exclusiva de LOC memoria (H & L) con A OR exclusiva de dato inmediato v con A Figura 9.1. (continuación). 2. Campo código de op: Contiene la entrada MOV. Esta dice a la CPU que es una instruc­ ción de transferencia de datos. La CPU entonces busca el siguiente campo de operando para encontrar la fuente y destino de la transferencia del dato. 3. Campo de operando: Contiene la entrada A,M. A (acumulador) es el destino del dato mientras que la memoria (Al) es la fuente. La posición de memoria está indicada por el registro par HL en esta instrucción de registro indirecto. 4. Campo comentario: Contiene la entrada «; Entrar datos al acumulador». Este campo describe qué ocurre cuando se ejecuta la instrucción. En este caso, el dato es introducido en el acumulador desde una posición de memoria señalada por el registro par HL. El punto y coma (;) se utiliza como delimitador para separar el campo del operando del campo de comentario. Los campos de código de op y operando deben rellenarse, pero los campos'de etiqueta y comenta­ rio son opcionales. Algunas instrucciones inherentes requieren una entrada en el campo de códi­ go de op y ninguna en el campo de operando. Recordar del Capítulo 6 que los diagramas de flujo, programas fuente en lenguaje ensambla­ dor y ensambladores son todos ayudas en la programación de un sistema basado en microproce­ sador. El listado del programa objeto ensamblado es el resultado final deseado utilizado por la mi­ crocomputadora. http://librosysolucionarios.net 324 FUNDAMENTOS DE LOS MICROPR()CESAOORES Señalizadores (8) A (8) B (8) C (8) D (8) E (8) H (8) L (8) Registro de status S I z I I } "'"m"rodo", ~,_rio~oon_ d, d,.. SP (16) Puntero de pila PC (16) Contador de programa Modelo de programación para el microprocesador 8080 (a) I Acumulador principal I AC I p I I Cy L I Registro de status CY - I si hay arrastre P - 1 si la paridad es par AC - I si hay arrastre auxiliar del bit 3 al bit 4 Z - I si el resultado es O s- MSB (bit más significativos) del resultado igual al bit del signo si S - O, el numero es positivo si S - 1, el numero es negativo (b) Señalizadores del registro de status del 8080/8085 Figura 9.2. 9.2. PROGRAMAS LINEALES Considerar el diagrama de flujo funcional de la Figura 9.3a. Representa un programa lineal ya que no contiene bifurcaciones. El diagrama de flujo también representa un programa que carga un número binario, lo convierte a su forma en complemento a 2 y finalmente almacena la representación en complemento a 2 en memoria. Recordar que los diagramas funcionales como el de la Figura 9.3a son una descripción general de la solución del problema. Un diagrama detallado para el mismo problema se muestra en la Figura 9.3b. Este diagrama se completó con las funciones de un microprocesador espeCífico -la MPU 8080(8085 en este caso-o Del diagrama detallado de la Figura 9.3b, puede obtenerse un programa en lenguaje ensamblador, el cual aparece en la Figura 9.4a. Observar que cada instrucción del programa tiene http://librosysolucionarios.net 1,' ...... * .. ::a~ I a • PROORAMACION DEL MICROPROCESADOR 8080/8085 C Inicio ) Inicia el programa + Cargar el registro HL con 2020H _de datos ( Inicio t ) t Cargar número binario de memoria + Complementar número binario a la forma de complemento a uno Cargar el registro B con OIH Cargar el acumulador desde la posición de memoria 2020H td bit 3 al bit 4 t~ .0 del resulta~o ( t Alto Complementar el acumulador Sumar BaI acumulador Forma el complemento a dos t ) ( Diagrama para el programa binario -a-complemento-a-2 Forma él complemento a uno t Almacenar el acumulador en la posición de memoria 2020H (a) Carga el número binario t + Almacenar el resultado del complemento a dos en memoria Inicializa el registro B t + Sumar + I a la forma de complemento a uno para formar el complemento a dos Inicializa el registro HL (h) + Alto ) Almacena el complemento a dos Fin del programa Diagrania detallado para el programa binario -a-complemento-a-2 Figura 9.3. a lineal ya -:a que carga !le almacena la lCÍonales como Este diagrama "085 en este Da en lenguaje programa tiene un bloque rectangular comparable en la Figura 9.3b. Como ejemplo, el primer bloque rectangular de la Figura 9.3b, que dice «cargar el registro par HL con 2020H», se corresponde con la senten­ cia del programa ensamblador «LXI H, 2020H» en la Figura 9.4. El siguiente paso será traducir el programa fuente en lenguaje ensamblador de la Figura 9.4a a su equivalente en lenguaje máquina. Este «ensamblamiento» o proceso de traducción puede hacerse utilizando un programa especial de computadora denominado ensamblador o puede hacerse manualmente. El repertorio de instrucciones de la Figura 9.1 puede ser utilizado para / http://librosysolucionarios.net 326 FUNDAMENTOS DE LOS MICROPROCESADORES Etiqueta Código op LXI Comentarios Operando H,2020H ~ MVI B,Om MOV A,M tradu. lasdiJ cadai ; Inicializa registro par HL con 2020H el coo ; Inicializa registro B con 01H ¡nstru 01 etiquc tanto ; Transfiere número binario de posición de memoria 2020H al acumulador ; Complementa acumulador CMA 9.1. ADD B MOV M,A ; Transfiere número complemento a 2 del acumulador a posición de memoria 2020H 9.2. ; Detiene la MPU HLT (a) ; Suma B a A para fonnar complemento a 2 Programa en lenguaje ensamblador para el problema binario-a-complemento-a-2 '. Dirección (hex) Contenido (hex) Etiqueta 2000 2001 2002 2003 2004 2005 21 20 20 06 01 7E t;., 2006 2007 2F 80 t' 2008 77 .. Código op Operando Comentarios LXI H.2020H ; Inicializa registro par HL con 2020H MVI B,OIH MOV A,M CMA ADD MOV M,A :t 2009 76 HLT ; Inicializa registro B con 01 H . ; Transfiere número binario de posición de memoria 2020H al acumulador ; Complementa acumulador ; Suma B a A para fonnar complemento a 2 ; Transfiere número complemento a 2 de acumulador a posición de memoria 2020H ; Detiene la MPU . (b) Programa objeto para el problema binario-a-complemento-a-2 Figura 9.4. http://librosysolucionarios.net ,.3. .~ I fA. • "W I • sr I ,1 PROORAMAClON DEL MICROPROCESADOR 8080/8085 327 traducir manualmente el programa en lenguaje ensamblador. El programa de la Figura 9.4b tiene las direcciones de la memoria de programa y el listado del código máquina hexadecimal para cada instrucción y operando. La sección no sombreada a la izquierda de la Figura 9.4b representa el código máquina tal como puede aparecer en la memoria de programa. Observar que el programa listado en la Figura 9.4b no contiene entradas en el campo de etiqueta. Esto es porque las etiquetas se utilizan habitualmente para mostrar el destino de una instrucción de bifurcación. El programa de la Figura 9.4 representa un programa lineal y por tanto no contiene saltos. ( [)20H PROBLEMAS RESUELTOS 9.1. El listado de la Figura 9.4 es un ejemplo de programa _ _ (de bifurcación, lineal). Solución: El listado de la Figura 9.4 es un ejemplo de programa lineal. 9.2. Acudir a la Figura 9.5. El resultado encontrado en la memoria de datos después de correr el programa listado en la Figura 9.4 será _ _ (8 bits). Este resultado será la representa­ ción en complemento a _ _ (1, 2) de 00000o 102, Solución: El resultado que se encuentre en la memoria de datos de la Figura 9.5 después de correr el programa será 11111110. Este resultado es la representación en complemento a 2 de 00000o 102, f Después de la operación Antes de la operación 20:!OH L-_ _....I.-Direcci-·--·ó-n...l I Memoria de datos Rgura9.5. :posición 9.3. Acudir a la Figura 9.5. La dirección de la memoria de datos donde se depositará el resulta­ do despuéS de la ejecución del programa será _ _ (hex). Solución: El registro par HL apuntará todavía a la posición 2020H después del programa. Por tanto la dirección en la memoria de datos de la Figura 9.5 donde el resultado se depositará después de la ejecución del programa será 2020H. 9.4. El diagrama de la Figura 9.6 representa un segmento de programa que introduce un número ASCII y enmascara los 4 bits ___ (menos, más) significativos. El resultado es el equivalente _ _ (BCD, binario) del número ASCII. http://librosysolucionarios.net ,11 t:!____ m._;q_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _~_. . . . . .~ , 328 '\ ruNDAMENTOS DE LOS MICROPROCFSAOORES ( Inicio ) Comienzo del programa t Entrar desde el puerto número OIH Entra número ASCII t Enmascara los 4 bits más significativos. El resultado es el equivalente BCD de los números AND del acumulador con la máscara I 0000 1111 ASCII (0-9) + Almacenar acumulador en posición de memoria 2040H .~ I l' " j + C ~ Alto ) Figura 9.6. " , ~' Almacena número BCD en memoria Operación de alto Diagrama detallado del problema. ,1 I ; Solución: ~ ' , El diagrama de la Figura 9.6 representa un segmento de programa que introduce un número ASCII y enmascara los 4 bits más significativos. El resultado es el equivalente BCD del número ASCII. ;~ J!, ~':: , 9.5. I'j Basándose en el diagrama detallado en la Figura 9.6, completar las líneas 2 y 3 del seg­ mento de programa del 8080/8085 mostrado más abajo. 1.; Etiqueta ~ LINEA LINEA LINEA LINEA n~ I, ,", ,1 , 4 () !, ,1 ;1 ~ ~~ '1 01H 4 HLT ; Entrada número ASCII desde puerto 01 H ; AND acum. con 00001111 (OFH) ; Almacenar acum. en posición 2040H ; Parar MPU 9.6. . ~ .E;!Ii mL~ r Un posible segmento de programa que realice la tarea detallada en la Figura 9.6 es el siguiente: " ;~, IN 2 3 Comentarios Solución: ,l 1 1 Código de op Operando Etiqueta Código de op LINEA LINEA LINEA LINEA IN ANI 1 2 3 4 STA HLT Operando OIH OFH 2040H Comentarios ; Entrada número ASCII desde puerto 01 H ; AND acum. con 00001111 (OFH) ; Almacenar acum. en posición 2040H ; Parar MPU Listar el código máquina hexadecimal del 8080/8085 requerido para ejecutar el programa del Problema 9.5. El programa comenzará en la posición de memoria 2000H como sigue: t, http://librosysolucionarios.net e:­ ... .". ~ ~"'" u a~ ~ él VII PROORAMACION DEL MICROPROCESADOR 8080/8085 Posición de memoria (hex) 2000 2001 2002 2003 2004 329 Contenido (hex) BD 1 } instrucción de entrada O Soludón: Acudir al repertorio de instrucciones de la Figura 9.1 para los códigos de op. Lo que sigue es un listado en código máquina 8080/8085 que ejecutará el programa del Problema 9.5: Posición de memoria (hex) 2000 2001 2002 2003 2004 2005 2006 2007 Contenido (hex) BO 01 E6 OF 32 40 20 76 un número D del número 9.3. PROGRAMAS CICLICOS ~ y 3 del seg­ l .. puerto 01H ¡:u) _ . .+OH L" , ",,"cnte: Ide puerto 01 H 'FH) ,,:.2040H ~ el programa 2000H como Considerar el diagrama de bloques de la Figura 9.7a de un sistema microcomputador basado en el 8080/8085. Suponer que el visualizador de 8 bits binario cuenta de forma ascendente empezan­ do en OOOOOOOOr La Figura 9.7b muestra un diagrama detallado que resuelve el problema de cuenta binaria. Un segmento del programa en el lenguaje ensamblador 8080/8085 que realizará la función de cuenta binaria está en la Figura 9.7c. El primer bloque rectangular del diagrama de la Figura 9.7b muestra que el acumulador se inicializa con OOH. El segundo bloque representa la transferencia de la cuenta del acumulador al puerto de salida 02H. El tercer bloque muestra que la cuenta se incrementa en l por el acumula­ dor. A continuación el programa vuelve a enlazar al bloque de salida. El programa visualizará a gran velocidad, en binario, la salida de la cuenta ascendente. El programa en el lenguaje ensamblador 8080/8085 de la Figura 9.7c realizará la función de cuenta binaria representada en el diagrama anterior. La instrucción XRA A borra el acumulador. La instrucción OUT transfiere el contenido del acumulador al puerto de salida 02H. La cuenta en el acumulador es incrementada en l utilizando la instrucción INR A. La instrucción JMP hace que la MPU bifurque, hacia atrás, a la instrucción con la etiqueta simbólica LOOP. El programa entonces está en un ciclo continuo a través de la secuencia OUT, INR A Y JMP. En la práctica actual, el programa representado en la Figura 9.7 contará mucho más rápido de lo que una persona pueda observar. Debido al rápido secuenciamiento, las lámparas de visualiza­ ción de la salida binaria parecerán que están luciendo continuamente. Para ralentizar el proceso de cuenta, es habitual afiadir un retardo de tiempo en el programa. El diagrama de la Figura 9.8a representa un programa de cuenta binaria que incluye un retardo de tiempo. http://librosysolucionarios.net <lrmmIZ;;!; In Uti" ~~~~--------------------~-------------------------330 1 FUNDAMENTOS DE LOS MICROPROCESADORES J ( Borrar el acumulador OOH Microcomputadora basada en el 8080/8085 1--- Puerto 02H B, O Inicializa acumulador + . ". .... ./ -1 ) + ,­ /"" / Inicio Saca cuenta al puerto Sacar el acumulador al puerto 02H 02H ./ B6 O B5 O 128 64 B4 O BJ O B2 BI O O 32 16 8 4 t Ciclo Do O 2 Incrementar acumulador 1 Visualizador de salida binario Incrementa cuenta I (a) Diagrama de bloque simplificado del sistema para visualizar una cuenta bancaria Etiqueta LOOP Código op Operando XRA A OUT 02H INR A JMP LOOP (e) (b) Diagrama detallado para el problema de cuenta binaria Comentarios ; Borra el acumulador ; Saca el acumulador al puerto 02H ; Incrementa acumulador ; Salta hacia atrás al comienzo del...ciclo (dirección simbólica - LOOP) Programa en lenguaje ensamblador para el problema de cuenta binaria Figura 9.7. I El diagrama detallado de la Figura 9.8b representa el programa de cuenta binaria con un retardo de tiempo. Los cinco bloques de la parte inferior del diagrama representan el segmento de retardo de tiempo del programa. El retardo de tiempo se genera al repetir el lazo de retardo 65.535 (FFFFH) veces. El programa en lenguaje ensamblador para el programa de cuenta con el retardo de tiempo se muestra en la Figura 9.8c. Observar que cada bloque en el diagrama de flujo detallado (Fig. 9.8b) se implementa con una simple instrucción de lenguaje ensamblador. El ciclo del retardo lo da la http://librosysolucionarios.net ~ ......., ·If, 'J": ! ' 1 .. 11 Ii 57 -­ PROGRAMAcrON DEL MICROPROCESADOR 8080/8085 331 a acumulador IiC1lta al puerto ( Inicio Sacar el acumulador al puerto 02H ) Ciclo de cuenta ... Borrar el acumulador OOH menta cuenta I ". Sacar el acumulador al puerto 02H Cargar registro HL conFFFFH t Incrementar acumulador ~t ~ Retardo de tiempo , Segmento de retardo de tiempo I ón binaria con un el segmento de lazo de retardo l do de tiempo se liado (Fig. 9.8b) 1retardo lo da la (11) Diagrama para el problema de cuenta binaria con un retardo de tiempo adicional (b) Diagrama detallado para el problema de cuenta binaria con retardo de tiempo Figura 9.8. http://librosysolucionarios.net ./332 FUNDAMENTOS DE LOS MICROPROCESADORES .. I Etiqueta Código op Operando Comentarios ~ para XRA A ; Borra el acumulador OOH rq ::::L'V CaUNT DELAY I~ (e) OUT 02H INR A MOV B,A : Saca el acumulador al puerto 02H L ; Incrementa acumulador ; Guarda cuenta en registro B LXI H,FFFFH DCX H MOV A,L ORA H JNZ DELAY ; Carga registro HL con FFFFH ; Decrementa registro HL ; Transfiere registro L al acumulador para examen .."'. ; Operación lógica OR del registro H con el acumulador; pone el señalizador Z a I si el registro H y A contienen ceros MOV A,B JMP COUNT ; Si el señalizador Z - 0, entonces salta a posición DELA Y (ciclo de retard'»; en otro caso continuar ,.1. ; Restaura cuenta (transferir de B al acumulador) ; Salta a posición COUNT (ciclo de cuenta) Programa en lenguaje ensamblador para el problema de cuenta binaria.ron retardo de tiempo Figura 9.8. l : ~OII (continuación). dirección simbólica o etiqueta DELAYen el programa de la Figura 9.8c. El ciclo mayor de cuenta lo da la dirección simbólica COUNT. El programa realizará ciclos a través del lazo de retardo 65.536 veces cada vez a través del ciclo de cuenta. Las instrucciones DCX H, MOV A,L, ORA H y JNZ en conjunto consumen unos 24 ~s cuando utilizan la MPU 8085. Como el ciclo de retardo se repite 65.536 veces, el tiempo de retardo es 24 ~s x 65.536 "" 1.572.864 ~s El segmento de retardo de tiempo del programa produce un retardo de 1.6 s aproximadamente. El programa visualiza la primera cuenta, se retarda 1.6 s, visualiza la segunda cuenta, se retarda 1.6 s, etc. http://librosysolucionarios.net ..1 , PROGRAMACION DEL MICROPROCESADOR 8080/8085 333 t El propósito de las instrucciones MOV A,L y ORA H en el programa en lenguaje ensambla­ dor de la Figura 9.8c puede no parecer claro de inmediato. Estas dos instrucciones están incluidas para poner a l el señalizador Z cuando el registro par HL sea finalmente decrementado a OOOOH. Desgraciadamente, la operación previa «decrementar registro par HL» (instrucción DCX H) no tiene efecto en ninguno de los señalizadores, por lo que se han añadido las instruciones MOV A,L yORAH. Las rutinas de retardo de tiempo son comúnmente utilizadas en los programas de micro­ computadora. Están basadas en la idea de que cada instrucción del procesador utiliza una canti­ dad espeCífica de tiempo para su ejecución. Las técnicas de programación disponibles permiten generar retardos de tiempo mayores que el de 1.6 s, generado en el último ejemplo. Considerar el 4so de dos ciclos en el programa representado en la Figura 9.8b. Un ciclo está contenido en el otro. Esta técnica de programación se denomina anidamiento. El ciclo de retardo de la Figura 9.8b se dice que es el anidado, o ciclo interior. El proceso de repetir instrucciones hasta que se cumpla una condición, como en el ciclo anidado, se denomina iteración. ~ PROBLEMAS RESUELTOS ~ l leO 9.7. mulador, atienen ceros ! La última instrucción del programa de la Figura 9.7c es JMP. ¿A qué dirección debe saltar el programa debido a esta instrucción? Solución: La instrucción «.JMP LOOP» de la FIgUra 9.7c indica al procesador que salte a la dirección simbólica LOOP que corresponde a la instrucción OUT de este ejemplo. ón DELAY . ~ 9.8. ) Listar las cinco instrucciones de la Figura 9.8c que forman el segmento de retardo de tiempo del programa. Solución: Las instrucciones LXI H; OCX H; MOV A,L; ORA H; Y JNZ de la Figura 9.8c forman el seg­ mento de retardo de tiempo del programa. Este segmento está específicamente identificado en el diagrama detallado de la Figura 9.8b. 9.9. El ciclo de retardo de tiempo representado en el diagrama de la Figura 9.8b los programa­ dores lo denominan ciclo ___ (infinito, anidado). ." Ldecuenta l~o de retardo t.L,ORAH ciclo de retardo I roximadamente. IeDta, se retarda I • M:r Solución: El ciclo de retardo de tiempo representado en el diagrama de la Figura 9.8b se denomina ciclo anidado. 9.10. Acudir a la Figura 9.8c. La primera vez que el procesador 8080/8085 se encuentra la instrucción JNZ en este programa, el señalizador Z estará a _ _ (O, 1). Después de ejecutar la instrucción JNZ, el procesador salta entonces a la siguiente instrucción, que es ___ . Solución: La primera vez que se encuentra la instrucción JNZ en la Figura 9.8c, el seftalizador Z estará a O. El procesador entonces salta a la siguiente instrucción, que es DCX H (a la posición con la dirección simbólica DELAY). http://librosysolucionarios.net .:i '. 334 FUNDAMENTOS DE LOS MICROPROCESADORES 9.11. Acudir a la Figura 9.8c. Cuando el registro par HL ha sido decrementado a OOOOH por la instrucción DCX H, el sefializador Z está a _ _ (O, 1) por la operación ORA H. Basán· dose en la condición de este sefializador, la instrucción JNZ es seguida por la opera­ ción _ _ . ..... 11 1000f El aIII. ~ Solución: Cuando el registro par HL de la Figura 9.8c ha sido decrementado a OOOOH por la instrucción OCX H, el señalizador Z está a I por la operación ORA H. Basándose en esta condición del señali­ zador, la instrucción JNZ es seguida por la operación MOV A,B. 9.12. Listar el código máquina hexadecimal 8080/8085 requerido para ejecutar el programa de la Figura 9.8c. El programa comenzará en la posición de memoria 2000H como sigue: Posición de memoria (hex) 2000 2001 2002 Contenido (hex) AF ..............,. borra acumulador Solución: Acudir al repertorio de instrucciones de la Figura 9.1. Lo que sigue es un listado del código máquina 8080/8085 que ejecutará el programa de la Figura 9.8c: Posición de memoria (hex) Contenido (hex) 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 200A 2008 200c 200D 200E 200F 2010 2011 I, AF D3 02 3C 47 21 FF FF .. 2B 7D B4 .... C2 08 20 78 C3 01 20 2 http://librosysolucionarios.net -= ­ -=;;I!!!!!I!I" -__ .. • , PROGRAMAOON DEL MICROPROCESADOR 8080/8085 335 9.4. PROGRAMAS MATEMATICOS por la Basán­ opera­ Considerar el problema de sumar los números decimales 1.110.527 y 192.514 utilizando un sistema basado en el 8080/8085. Convertir estos números a hexadecimales, la solución manual a este problema de suma puede ser como la de la Figura 9.9a. La suma hexadecimal de IOFI FF + 02FOO2 = I3E20 116 , El acumulador del microprocesador 8080/8085 maneja solamente datos de 8 bits (un byte) cada vez. El procesador probablemente podría manipular este problema si el programador divi­ diese el número hexadecimal en grupos de longitud-de-un-byte. Cada grupo, más pequeño, de longitud-de-un-byte puede entonces ser sumado separadamente. Un ejemplo de esta técnica se muestra en la Figura 9.9b (FF + 02 - O116 más un arrastre). A continuación, se suman los bytes intermedios (arrastre 1 + FI + FO = E216 más un arrastre). Finalmente, se suman los bytes más significativos (arrastre 1 + 10 + 02 - 13 16 ), Observar que en las dos últimas sumas, los arrastres de los bytes menos significativos deben ser considerados al calcular la suma. El microprocesador 8080/8085 tiene instrucciones especiales de «suma con arrastre» para este propósito. rucción ! señali­ gue: ~ Ior 111 1.110.527 111'"0-'-he-xad"TeCJ-'-m-'ai--+t 10 FI FF 192.514 10 • +02F002 13E201 16 Byte Byte más Byte menos significativo intermedio significativo Arrastres Primer número Segundo número Suma I .. Arrastre I "Arrastre I 10', FI"', FF +02 '- FO \.02 - -_ ......_-_... -.¡­ 13 'E2 01 16 código = (a) (b) Ejemplo de suma hexadecimal Primer número Segundo número Suma Suma de 24 bits agrupada en bytes tal y como la ejecuta un microprocesador de 8 bits Figura 9.9. El procedimiento para realizar la suma de 24 bits (suma de 3 bytes) puede ser como sigue: l. Sumar el byte menos significativo del primer número con el byte menos significativo del segundo número. 2. Registrar la suma parcial menos significativa. ., 3. Sumar el arrastre de la suma previa, el byte intermedio del primer número y el byte intermedio del segundo número. 4. Registrar la suma parcial intermedia. 5. Sumar el arrastre de la suma anterior, el byte más significativo del primer número yel byte más significativo del segundo número. 6. Registrar la suma parcial más significativa. En el problema de suma, suponer que el primero y segundo núm~ros tienen asignadas las posiciones de memoria que se indican en la Figura 9.1 Oa. La posición del resultado de la suma de 24 bits también está detallada en el mapa de memoria de la Figura 9. lOa. Utilizando estas posi­ ciones de la memoria de datos, el programa lineal en lenguaje ensamblador de la Figura 9.1 Ob se desarrolló para resolver este problema de suma de 3 bytes. Observar que la primera instrucción http://librosysolucionarios.net enrUllIr ; "n: ... 'h~í . .­ . Ir . I · .... ............................~--~------------~ ~ --"" ~ 336 ....................--.. ,,~-- R.1NDAMENTOS DE LOS MICROPROCESADORES ADD M es una operación de suma sin arrastre. Sin embargo, las instrucciones segunda y tercera ADC M son operacivnes de suma con arrastre. La suma de números mayores requiere el uso de suma multibyte. En este ejemplo los núme­ ros sumados eran de 3 bytes. A este tipo de suma se denomina suma en triple precisión. PROBLEMAS RESUELTOS 9.13. El programa listado en la Figura 9.lOb es un ejemplo de suma en _ _ (doble, triple) precisión. Soluci6n: El programa listado en la Figura 9.lOb es un ejemplo de suma en triple precisión. 9.14. Suponer que 10FIFFI6 se va a sumar a 02FOO2, como en la Figura 9.9b. Listar los conteni­ dos de las posiciones de la memoria de datos 2020 a 2025H en la Figura 9.l0a antes de que se ejecute el programa de suma multibyte. Memoria de datos Dirección (hex) Contenido 2020 Byte menos significativo del primer número 2021 Byte menos significativo del segundo número 2022 Byte intermedio del primer número 2023 Byte intermedio del segundo número 2024 Byte más significativo del primer número 2025 Byte más significativo del segundo número 2026 Byte menos significativo 2027 Suma Byte intermedio } 2028 (a) Byte más significativo ""'" Mapa de memoria de datos para el programa de suma de 24 bits Figura 9.10. http://librosysolucionarios.net \ ,.. · .3 - I PROGRAMACION DEL MICROPROCESADOR 8080/8085 nda Y tercera Etiqueta Lo los núme­ Código op Operando Comentarios H,2020H ; Inicializa registro par HL con 2020H (registro par HL utilizado como puntero) MOV A,M ; Carga byte menos significativo del primer número de la posición de memoria LOC 2020H en acumulador INX H ; Incrementa puntero HL a 2021H ADD M ; Suma posición de memoria 2021 H al acumulador (suma byte menos significativo) STA 2026H ; Almacena suma parcial menos significativa en posición de memoria LOC 2026H INX H MOV A,M INX H ; Incrementa puntero HL a 2023H ADC M ; Suma posición de memoria 2023H, acumulador y arrastre ('suma bytes intermedios con arrastre) STA 2027H INX H MOV A,M INX H ; Incrementa puntero HL a 2025H ADC M ; Suma posición de memoria 2025H, acumulador y arrastre (suma bytes más significativos con arrastre) STA 2028H ; Almacena suma parcial más significativa en posición de memoria 2028H LXI , isión. [doble, triple) lr los conteni­ ',lOa antes de !Jero r HLT (b) Incrementa puntero HL a 2022H ; Carga byte intermedio del primer número de la posición de memoria 2022H en acumulador ; Almacena suma parcial intermedia en posición de memoria 2027H ; Incrementa puntero HL en 2024H ; Carga byte más significativo del primer número de la posición de memoria 2024H en acumulador ; Alto la MPU Programa en lenguaje ensamblador para la suma de 24 bits Figura 9.10. (continuación), http://librosysolucionarios.net 1'·:·' ¡ , J: . • 7,e mm 337 ,,------------------------­ 338 FUNDAMENTOS DE LOS MICROPROCESAOORES Solución: Los contenidos de la memoria de datos de la Figura 9. lOa antes de ejecutar el programa para sumar IOF l FF 16 + 02FOO2 16 son los siguientes: Dirección (hex) Contenido (hex) 2020 2021 2022 2023 2024 2025 FF 02 FI FO 10 02 • .n. 9.15. Listar los contenidos de las posiciones de memoria 2026H, 2027H Y 2028H en la Figu­ ra 9.10 después que el programa se haya ejecutado sumando 1OF I FF Y02F002. Solución: Las posiciones de la memoria de datos de la Figura 9.10 «<suma») contienen lo siguiente después que el programa se haya ejecutado (IOFI FF + 02FOO2 - 13E20 116): Contenido (hex) Dirección (hex) 2026 2027 2028 01 E2 13 (byte de la suma menos significativo) (byte intermedio de la suma) (byte más significativo de la suma) 9.16. Acudir a la Figura 9.lOb. El registro par HL es utilizado como registro _ _ (de propósi­ to general, puntero) en este programa de suma. Solución: El registro par HL es utilizado como puntero de dirección en el programa de suma de la figu­ ra 9.lOb. 9.17. La instrucción ADDM mostrada en la Figura 9.lOb es una operación de _ _ (suma, suma con arrastre). Solución: La instrucción ADD M mostrada en la Figura 9.1 Ob es una operá'ción de suma. 9.18. La instrucción STA 2027H de la Figura 9.lOb hace que el contenido del regis­ tro _ _ (A, B) sea almacenado en la posición de memoria _ _ (hex). Solución: La instrucción STA 2027H de la Figura 9.IOb hace que el contenido del registro A (acumulador) sea almacenado en la posición de memoria 2027H. 9.19. Acudir a la Figura 9.11. El primer número que se va a sumar está almacenado en ¿qué posiciones de memoria cuando se utiliza este programa? Solución: De acuerdo con el mapa de memoria de la Figura 9.1 la, el primer número de 4 bytes que se va a sumar se almacena en las posiciones de memoria 2020H a 2023H. http://librosysolucionarios.net r $ m . Iiii· J.UIlF' ,.12. ~ I rama para PROORAMACION DEL MICROPROCESADOR 8080/8085 339 9.20. Después que se ejecute el programa de suma multibyte de la Figura 9.11 ¿en qué cuatro posiciones de memoria se almacena la suma? SoluciÓD: La instrucción STAX D almacena las sumas parciales en las posiciones de memoria señaladas por el registro par DE. La suma se almacena por tanto en las posiciones de memoria 2020H a 2023H después de que se haya ejecutado el programa. 9.21. ¿Cómo debe cambiarse la instrucción MVI e de la Figura 9.llb para realizar la suma de 24 bits en lugar de la de 32? lla Figu­ !le después Solución: La instrucción debe ser «MVI C.03H» si el programa de la Figura 9.1 lb va a realizar una suma de 24 bits. El operando de la instrucción MVI e (03H en este caso) es el número de bytes que se va a sumar. 9.22. Acudir a la Figura 9.11. Listar el contenido de las siguientes posiciones de memoria cuan­ do se sumen 12FOC3FF '6 y OIB4D503 16 • Memoria de datos ~propósi- Dirección (hex) Contenido 2020 J Byte menos significativo 2021 la Figu­ [fe •_(suma, Primer número 2022 2023 Byte más significativo 2030 Byte menos significativo t 2031 r " Segundo número 2032 2033 Byte más significativo ..­ o~ en ¿qué (o) ............ Mapa de memoria de datos para el programa de la suma de 32 bits Figura 9.11 . http://librosysolucionarios.net • '1....:' ~ \v s 340 -72 FUNDAMENTOS DE LOS MICROPROCESADORES Etiqueta Código op Operando Comentarios MVI C,04H ; Inicializa registro e con número de bytes que se van a sumar LXI D,2020H ; Inicializa puntero DE a posición del byte menos significativo del primer número LXI H,2030H ; Inicializa puntero HL a posición del byte menos significativo del segundo número XRA A ; Borra señalizador de arrastre A j LDAX D ; Carga byte del primer número en el acumulador ADC M ; Suma byte del segundo número, acumulador y bit de arrastre LOOP STAX D ; Almacena suma parcial en posición de memoria señalada por el registro DE DCR e ; Decrementa registro JZ END 4 •, '.23. e -"'4 ; Si señalizador Z - 1, entonces salta a dirección simbólica etiquetada END INX D ; Incrementa puntero DE INX H ; Incrementa puntero HL JMP LOOP ~ -, .~ ; Salta siempre a dirección simbólica etiquetada LOOP ~ ,~. END ; Alto la MPU HLT (b) ) Programa en lenguaje ensamblador para el problema-ejemplo Figura 9.11. (continuación). ( '>0 1 ~ , Posición de memoria (hex) 2020 2021 2022 2023 2030 2031 2032 2033 http://librosysolucionarios.net . Contenido (hex) FF .~ , p. PROORAMACION DEL MICROPROCESADOR 8080/8085 p 341 Solución: Antes de sumar 12FOC3FFI6 a 0184D503i6' la memoria de datos mostrada en la FIgUra 9.11 debe ser cargada con los siguientes datos: ,', Posición de memoria (hex) . ' Contenido (hex) 2020 2021 2022 2023 FF C3 2030 2031 2032 2033 03 D5 B4 01 FO 12 9.23. ¿Cuál es el resultado de sumar l2FOC3FF '6 y 01 B4D503 16? Listar los contenidos y posicio­ nes donde se almacenará esta suma multibyte una vez que se ejecute el programa de la Fi- . gura 9.11. Solución: La suma hexadecimal 12FOC3FF + 01 84D503 .. 14A5990216" El resultado (suma) del programa de la Figura 9.11 será almacenado como sigue en la memoria de datos: Posición de memoria (hex) 2020 2021 2022 2033 Contenido (hex) 02 99 (byte menos significativo de la suma) AS 14 (byte más significativo de la suma) '9.24. Acudir a la Figura 9.11 b. Si el señalizador Z = O, entonces la instrucción _ _ será eje­ cutada después de la instrucción JZ en este programa. Solución: Si el señalizador Z - O en la Figura 9.11 b, entonces la instrucción INX D será ejecutada después de la instrucción JZ en este programa. PROBLEMAS SUPLEMENTARIOS '.25. Para el programador, la microcomputadora basada en el 8080/8085 consta de memoria, puertos de entrada/salida, señalizadores, pila, puntero de pila, contador _ _ , repertorio y registros de propósito general. Res. de programa, de instrucciones. ,.26. Citar los cuatro campos de una línea de instrucción de lenguaje ensamblador. Res. etiqueta, código de op (operación), operando, comentarios. http://librosysolucionarios.net ~. , 342 FUNDAMENTOS DE LOS MICROPROCESADORES 9.27. El campo de operando se denomina a veces _ _ . Res. argumento. 9.28. Las sentencias en lenguaje ensamblador contienen, habitualmente, entradas en los campos _ _ y _ _ , mientras que los campos de etiqueta y comentarios son opcionales. Res. código de op (operación), operando. 9.29. El programa del 8080/8085 representado en la Figura 9.12 carga los números ASCII de las posiciones de memoria _ _ (hex) y _ _ (hex), enmascara los 4 bits _ _ (menos, más) significativos, suma los números, ajusta en decimal la suma y almacena la suma _ _ (BCD, binaria) en la posición de memoria 2032H. Res. 2030H, 2031 H, más, BCD. 9.30. La función representada por el bloque 1 de la Figura 9.12b podría producirse por ¿qué instrucción del 8080/8085? Res. LXI H, 2030H. 9.31. La función representada por el bloque 2 de la Figura 9.12b podría producirse por ¿qué instrucción del 8080/8085? Res. MOV A.M. 9.32. La función representada por el bloque 3 de la Figura 9.12b podrfa producirse por ¿qué instrucción del 8080/8085? Res. ANIOFH. 9.33. La función representada por el bloque 4 de la Figura 9.12b podrfa producirse por ¿qué instrucción del 8080/8085? Res. MOV B,A. 9.34. La función representada por el bloque 5 de la Figura 9. 12bpodrfa producirse por ¿qué instrucción del 8080/8085? Res. INXH. Memoria de datos Dirección (hex) Contenido (hex) 2030 BS Representación ASCII del número 5 BCD 2031 B9 Representación ASCII del número 9 BCD 2032 .......... +-Suma BCD ...,.¡.....-" (a) ........ Mapa de memoria de datos para el problema ejemplo Figura 9.12. http://librosysolucionarios.net .... ~ _1' ~ ~ j 1 r E PROGRAMACION DEL MICROPROCESADOR 8080/8085 ( Inicio) t Cargar registro par HL con 2030H los campos l Transferir 2 memoria LOC(HL) al acumulador posiciones Carga acumulador con primer número ASCII desde 2030H f o;ignificativos, .lria) en la 3 Operación AND del acumulador con'OFH 4 Transferir acumulador a B S Incrementar registro par HL J Enmascara los cuatro bits más significativos del acumulador t lié instrucción Guarda número BCD en registro B + J. lUé instrucción ~, instrUCción Incrementa registro par HL a 203\ H t . qué instruccIón .~. Transferir 6 memoria LOC (HL al acumulador Carga acumulador con segundo número ASCII desde 2031H ,­ 7 Operación AND de acumulador con OFH Enmascara los cuatro bits más significativos del acumulador 8 Sumar acumulador a B Suma números BCD en los registros A y B 9 Ajuste decimal del acumulador 10 Incrementar registro par H L + tnstrUcelón del + j.f.',..:: Ajusta la suma en A para que sea igual al número BCD " , .. Incrementa registro par HL a 2032H Transferir 11 acumulador a memoria LOC(HL) ) t> ¡ 12 ( ~ ~. Almacena la suma BCD en posición de memoria 2032H t Alto ) (b) r ~ t r- L, Inicializa registro par HL con 2030H Diagrama detallado para el problema ejemplo Figura 9.12: {continuaci6n}. http://librosysolucionarios.net 343 344 FUNDAMENTOS DE LOS MICROPROCESAOORES 9.35. La función representada por el bloque 8 de la Figura 9.12b podría producirse por ¿qué instrucción del 8080/8085? Res, 9.36. ADDB. La función representada por el bloque 9 de la Figura 9.12b podría producirse por ¿qué instrucción del 8080/8085? Res, DAA. 9.37. La función representada por el bloque 11 de la Figura 9.12b podría producirse por ¿qué instrucción del 8080/8085? Res. MOV M,A. 9.38. La función representada por el bloque 12 de la Figura 9.12b podría producirse por ¿qué instrucción del 8080/8085? Res. HLT. 9.39. Escribir un programa en lenguaje ensamblador 8080/8085 para el problema representado en la Figu­ ra 9.12. .. ~ Código de op LXI MOV ANI MOV INX MOV ANI ADD DAA INX MOV HLT 9.40. - '-40t0 ! ftICI t'.SÜ: :mq Res. Etiqueta .... Operando H,2030H A,M OFH B,A H A,M OFH B H M,A Comentarios . ;'lnicializa registro HL ; Carga A con primer número ASCII ; Enmascara 4 bits más significativos de A ; Guarda número BCD en B ; Incrementa registro HL a 2031 H ; Carga A con segundo número ASCII ; Enmascara 4 bits más significativos de A ; Suma número BCD en A y B ; Ajusta suma en A para que sea igual al número BCD ; Incrementa registro HL a 2032H ; Almacena suma BCD en posición de memoria 2032H ; Detiene MPU Después que el programa de la Figura 9.12 ha sido ejecutado, la suma BCD _ _ (BCD) será depositada en la posición _ _ de la memoria de datos (hex). Res. 0001 OlOOBCD' 2032H. .. http://librosysolucionarios.net 6SH( f3hic Á..liIHC .. . \ I EPR( .le g I El dprñ ~rq ~'O! 3!' 3': ~( Capítulo 10 cción cción EL MICROPROCESADOR MOTOROLA 6800 cción cción Figu­ BCD 32H será r. 10.1. INTRODUCCION Motorola Corporation introdujo su microprocesador 6800 de 8 bits en la década de los aftos setenta. Motorola ha desarrollado desde entonces «la familia 6800» con nuevas pastillas que generalmente son una extensión software y hardware compatible con la MPU 6800. El 6800, 6802 (6800 con reloj interno y alguna RAM) y el más potente 6809 son microprocesadores de 8 bits que son fáciles de utilizar. Versiones especializadas de la família 6800, como las 6801, 6804, 68HC04, 6805, 68HC05 y 68HC 11 se describen como computadoras de una sola pastilla. El fabricante las denomina unidades microcomputadoras (MCU). Una pastilla MCU, tal como la 68HC11, puede incluir una unidad microprocesadora de 8 bits (como el 6800), un temporizador, ROM, RAM, un conversor A/D, un oscilador, líneas de E/S programables e incluso una EPROM. El 68HC 11 podría compartir el repertorio de instrucciones del 6800. MCU en pastillas de 8 bits son populares en los sistemas computadoras dedicadas de bajo costo. En 1980, Motorola introdujo su microprocesador avanzado de 16 bits: el 68000. El 68000 fue el primer microprocesador que introdujo una arquitectura interna de 32 bits y grandes conjuntos de registros de propósito generaL Otros miembros de la familia 68000 son el 68HCOOO (CMOS), 68008,68010,68020 Y 68030. Las características de la MPU 68000 son una arquitectura interna de 32 bits con un bus externo de datos de 16 bits, y 16 megabytes (M bytes) de direcciones de memoria. La MPU 68008 tiene la misma arquitectura interna de 32 bits con un bus de datos externo de 8 bits. El 68010 es una MPU de memoria virtual mejorada de 16 bits externos/32 bits internos. El muy popular 68020 es una MPU de memoria virtual de 32 bits internos/32 bits externos. Más recientemente, Motorola ha sacado su más potente microprocesador de 32 bits mejorado: el 68030. Las MPU de la serie 68000 no son compatibles con la familia más antigua de microprocesadores: la 6800 de 8 bits. .. La memoria virtual es una característica de MPU avanzadas, tales como la 68010, 68020 Y 68030. El término memoria virtual significa que un programador puede escribir programas como si la capacidad de memoria fuese ilimitada. La técnica de memoria virtual permite programas mayores que la capacidad de la memoria principaL La parte «extra» del programa se almacena en memoria secundaria (como por ejemplo discos), pero es accedida como si estuviese en memoria principal. El microprocesador 6800 se usa normalmente en un sistema microcomputador. Una configu­ ración mínima de sistema se ilustra en la Figura 10.1. El microprocesador 6800 requiere una fuente de alimentación de +5 V y un reloj externo de dos fases (no se necesita reloj externo en la MPU 6802). La entrada de rearranque a la MPU 6800 mostrada en la Figura 10.1 es una inte­ rrupción hardware conectada a la patilla de REINICIALIZACION de la pastilla y se utiliza para 345 http://librosysolucionarios.net , "dumnnnl 'IIIILI·· 346 1 FUNDAMENTOS DE LOS MICROPROCESADORES J IRearranquel 1'IdI ....-~ Bus de direcciones - + Reloj ...... ~ ) ROM y , _ v' Bus de datos ~ I\ Líneas de datos_ ..... RAM ......... PIA 6820 t .,,­ ~ ~J Bus de control ----,1 :So .iI"II .-.... l ~ ~ t- Fuente de alimentación de +5 V -.-. -~ ........ MPU 6800 Líneas de control Dispositivos de E/S t ....,- .:1 ,-- - f-- Líneas de datos .. f Figura 10.1. i. ( Diagrama de bloques de un sistema mínimo basado en el 6800. inicializar el sistema. La MPU 6800 tiene 16 líneas de dirección y 8 lineas de datos bidirecciona­ les. Las líneas de control están etiquetadas como el bus de control de la Figura 10.1. A la MPU en la Figura 10.1 se le ha añadido la memoria en forma de ROM y RAM. La interfaz entre la MpU y los dispositivos de entrada/salida en la Figura 10.1 se hace con el adaptador de interfaz de periféricos 6820 (PIA) especial de Motorola. Observar que la PIA 6820 proporciona dos caminos de datos de 8 bits que pueden ser utilizados como puertos de entrada o de salida. La PIA tiene también 4 líneas de control entre la PIA y los dispositivos periféricos. La PIA 6820 tiene registros internos que la pueden hacer programable y permite almacenamiento http://librosysolucionarios.net ...s .. .11 EL MICROPROCESADOR MOTOROLA 6800 347 temporal de datos para simplificar la transferencia de datos. Observar, en la Figura 10.1, que los pulsos de interrupción pueden ser enviados desde la PIA, vía el bus de control, a la MPU 6800. En resumen, la PIA 6820 forma un enlace de comunicación de dos direcciones y un dispositivo de almacenamiento temporal entre el microprocesador y los dispositivos periféricos. Motorola también produce otros dispositivos especiales compatibles con el microprocesador 6800. Algunos son el adaptador de interfaz de comunicaciones asíncronas 6850 (ACIA) que se . utiliza para transmisión asíncrona de datos serie, las pastillas de reloj de la serie 6870 de Motorola que pueden ser utilizadas para proporcionar los pulsos de reloj de dos fases que requiere la MPU, y el controlador de acceso de memoria directa 6844 que proporciona, a los sistemas basados en el 6800, la lógica para soportar cuatro canales de acceso directo a memoria (DMA). Otras muchas pastillas de soporte están disponibles para las series de microprocesadores 6800 y 68000. 10.2. FUNCIONES Y DIAGRAMA DE PATILLAS DEL 6800 El microprocesador de 8 bits Motorola 6800 está ubicado en un encapsulamiento de doble línea de 40 patillas (DIP). El diagrama de patillas de la MPU 6800 se ilustra en la Figura 1O.2a. En la Figura 10.2b hay una tabla que resume los nombres y descripciones de las patillas. La patilla estándar MPU MC6800 opera con una frecuencia de reloj de 1,0 MHz. Existen versiones más rápidas de la MPU 6800. El MC68AOO es el mismo procesador pero opera con una frecuencia de reloj de 1,5 MHz, mientras que el MC68BOO opera con 2,0 MHz. Las entradas y salidas de la MPU 6800 pueden agruparse como entradas de reloj, entradas de alimentación, entradas/salidas del bus de datos, salidas del bus de direcciones y entradas/salidas de control. Las flechas en el diagrama de patillas de la Figura 10.2a muestran la dirección del flujo de sefiales. La función de cada patilla del microprocesador 6800 está descrita brevemente en los párrafos que siguen. En cada párrafo, acudir a la Figura 10.2 para la localización de cada patilla y un resumen de sus funciones. Tie"a (V.. ) (patillas 1 y 21) Estas patillas están conectadas a la parte negativa de la fuente de alimentación de 5 V d.c. Alto (1lAU') (patilla 2) Cuando la entrada HArT está activada por un nivel BAJO, la MPU 6800 entra en el modo alto. En este modo las líneas de tres estados van a su estado de alta impedancia y el procesador se detiene. Esta entrada puede utilizarse para «ir paso a paso» en el proceso de depuración de un programa. Muchas veces la entrada HALT se inhabilita al conectarla a +5 V. ¡;jona­ PUen con el • 6820 rada o os. La niento Reloj (01 Y 02) (patillas 3 y 37) Estas patillas de entrada reciben sefiales de reloj no solapadas de la circuitería de reloj externa al sistema . Línea de petición de interrupción (11fQ) (patilla 4) Cuando la entrada IRQ es activada con un nivel BAJO, el microprocesador 6800 completará la instrucción actual, introducirá todos los registros en la pila, pondrá a 1 el sefializador 1, y http://librosysolucionarios.net • - (.....:: z11I1I1í1l..iI........................................--~-----------348 . -~ ~ FUNDAMENTOS DE LOS MICROPROCESADORES Vss HALT 01 IRQ VMA NMI BA~ V __ 1 2 3 4 5 6 7 , 8 REINICIALIZACION TSC ce ~ .,­1 I AO Al A2 A3 A4 AS A6 A7 A8 A9 AIO All 9 10 MC6800 11 12 13 14 15 16 17 18 19 20 R/W DO DI D2 D3 D4 D5 D6 D7 A15 AI4 AI3 ~ -~ :"1.:­ ~ ~ A12 V. Diagrama de patillas de la MPU 6800 (a) Descripción Nombres de las patillas ·AO-AIS ·DO-D7 ·HALT ·TSC *R/W ·VMA *DBE 'loBA ·IRQ REINICIALIZACION NMI 01,02 V... Va: ff-BtL 02 DBE 1 , ia.':&.-ia Lineas de dirección Lineas del bus de datos Alto Control de tres estados Lectura/escritura Dirección válida de memoria Habilitación bus de datos Bus disponible Petición de interrupción Reinicialización Interrupción no enmascarable Señales de reloj Alimentación .. Estas señales se conectan al bus del sistema. (b) Nombres de las patillas y funciones Figura 10.2. Tipo Salida, tres estados Bidireccional. tres estados Entrada Entrada Salida, tres estados Salida Entrada Salida Entrada Entrada Entrada Entrada LB cionaI ddÍ ~ La" etce: : una lo:mI tu.ra. 'Ii.' 1 , http://librosysolucionarios.net EL MICROPROCESAOOR MOTOROLA 6800 349 saltará a la rutina de servicio de interrupción seí\alada por las posiciones de memoria FFF8H y FFF9H. La interrupción IRQ puede ser enmascarada. Dirección pálida de memoria (JI'MA) (patilla 5) Cuando la salida VMA va al nivel ALTO, indica a otros dispositivos del sistema que la dirección en el bus de direcciones es válida. 4 Interrupción no enmascarable (NMI) (patilla 6) Cuando la entrada NMl va al nivel BAJO, la respuesta del microprocesador 6800 es similar a su respuesta cuando la entrada IRQ alcanza el nivel BAJO. La interrupción NMI es no enmasca­ rable y su vector de direcciones se encuentra en las posiciones de memoria FFFCH y FFFDH. Los contenidos de FFFCH y FFFDH apuntan entonces al comienzo de la rutina de servicio de in­ terrupción. Bus disponible (BA) (patilla 7) Cuando la salida HA alcanza el nivel ALTO indica a los dispositivos externos que el micropro­ cesador 6800 ha dejado de ejecutar instrucciones. La MPU 6800 cesa de ejecutar instrucciones debido a una instrucción de espera (WAI) o a una entrada hardware HALT. La línea de control HA proporciona un método de decir a los dispositivos externos que los buses de direcciones y datos de la MPU 6800 están en el estado de tres estados y pueden ser utilizados para cosas como, por ejemplo, operaciones DMA. Alimentación (JI'ce) (patilla 8) La parte positiva de la fuente de alimentación de 5 V d.c. se conecta a la patilla 8 del CI microprocesador 6800. Líneas de dirección (Ao-A I !!) (patillas 9-20, 22-25) Las 16 salidas de dirección de la MPU 6800 (Ao-A ,s ) están conectadas al bus de direcciones del sistema. Estas líneas son utilizadas para direccionar dispositivos como ROM, RAM Y de E/S. • Líuas IR .tol (Do-O,) (patillas 26-33) Las ocho patillas de datos (Do-D7 ) de la MPU 6800 están conectadas al bus de datos bidirec­ cional del sistema. Las líneas del bus de datos están para transferir datos a y desde memoria o dispositivos de E/S. Control de lectura/escritura (R/W) (patilla 34) La salida R/Wes una línea de control que indica a un dispositivo externo (RAM, ROM, PIA, etcétera) si la MPU 6800 está leyendo o escribiendo. Una salida ALTA de la línea R/W indica una lectura, mientras que una salida BAJA indica que se está realizando una operación de escri­ tura. http://librosysolucionarios.net • , :;:::sr a 350 iR. . . . FUNDAMENTOS DE LOS MICROPROCESAOORES Habilitación del bus de datos (DBE) (patilla 36) La entrada DBE controla las excitaciones del bus de datos del microprocesador 6800. Una entrada ALTA en la patilla DBE habilita las líneas de datos, mientras que una entrada BAJA inhabilita, o pone en tres estados, a las líneas de datos. Debido a que las transferencias de datos entre memoria y E/S ocurren cuando el reloj 02 está en el nivel ALTO, la patilla DBE está muchas veces conectada a la línea 02 del reloj. Control de tres estados (rSC) (patilla 39) Cuando la patilla de entrada TSC está excitada en ALTO por un dispositivo externo, todas las líneas de dirección y la línea de E/Westarán en tres estados. La línea TSC se utiliza con configu­ raciones DMA. Cuando no se utiliza DMA la patilla TSC puede conectarse a tierra. Línea de reinicialización (REINICIALIZACION) (patilla 40) - , I \ :i I.j Cuando la patilla de REINICIALlZACION pasa del nivel ALTO al BAJO, el microprocesa­ dor 6800 pone el señalizador 1 a 1 y salta a la rutina de servicio de interrupciones de reinicializa­ ción señalada por FFFEH y FFFFH. La entrada de REINICIALIZACION se utiliza típicamente para inicializar o reinicializar el sistema. PROBLEMAS RESUELTOS 10.1. Solución: 1 El Motorola 6800 es un microprocesador de 8 bits. Su acumulador es de 8 bits, y transfiere datos en grupos de 8 bits vía el bus de datos. ;~ ,~ ! El Motorola 6800 es un microprocesador de _ _ (8, 16) bits. 10.2. iti f ~ Una sencilla fuente de alimentación de _ _ -V se utiliza para alimentar el micropro­ cesador 6800. En la Figura 10.2a, la parte positiva de la fuente de alimentación está conectada a la patilla ___ , mientras que la negativa va a las patillas etiqueta­ das _ _ . Solución: Se utiliza una fuente de alimentación de 5 V para alimentar el mi~roprocesador 6800. En la Figura 1O.2a, la parte positiva de la fuente de alimentación está conectada a la patillas etiqueta­ das V" (patillas 1 y 21). 10.3. El microprocesador 6800 utiliza _ _ (número) patillas como líneas de dirección y _ _ (número) patillas como líneas de datos bidireccionales. Solución: El microprocesador 6800 utiliza 16 patillas como líneas de dirección y 8 patilIas como líneas de datos bidireccionales. 10.4. Las tres interrupciones hardware del microprocesador 6800 son las de REINICIAliZA­ <:JlJN, _ _ y _ _ . Solución: Las tres interrupciones hardware del microprocesador 6800 son las de REINICIALIZACION. NMI (interrupción no enmascarable) e IRQ (petición de interrupción). 1 • http://librosysolucionarios.net -.. 3 :1 = EL MICROPROCESADOR MOTOROLA 6800 10.5. ). Una BAJA ~ datos rE está ~ 10.7. unente 10.8. ")1, Acudir a la Figura 1O.2a. La patilla 34 en la MPU 6800 está etiquetada _ , que significa _ _ / _ _ . Cuando esta salida de control está en ALTA, el prOcesador está ___ (leyendo, escribiendo), y cuando está en BAJA, está ___ (leyendo, escri­ biendo). Solución: Según la información de la Figura 10.2 la patilla 34 de la MPU 6800 está etiquetada R/W. que significa lectura/escritura. Cuando esta salida de control está en el nivel ALTO, el procesador está leyendo, y cuando está en el nivel BAJO, está escribiendo. ~aliza­ r La MPU 6800 utiliza un reloj de _ _ -fases sin solapamiento. Solución: La MPU 6800 utiliza un reloj de dos fases sin solapamiento. ' ~ rocesa­ -f' Activar la patilla de entrada _ _ en el 6800 hará que el procesador se detenga y todas las líneas de tres estados vayan a su estado de alta impedancia. Solución: Al activar la patilla de entrada HALT en el 6800 hará que el procesador se detenga y todas las líneas de tres estados vayan a su estado de alta impedancia. 10.6. das las mfigu­ 351 Acudir a la Figura 1O.2a. La patilla 5 de la MPU 6800 está etiquetada _ _ ,-lo cual significa _________ . Solución: Según la información de la Figura 10.2, la patilla 5 de la MPU 6800 está etiquetada VMA, lo cual significa dirección válida de memoria. ansfiere ~ rropro­ ón está iqueta­ Un diagrama de bloques de la organización interna del microprocesador Motorola 6800 se mues­ tra en la Figura 10.3. El 6800 tiene un bus de datos, con buffers de tres estados, que contiene 8 bits (Do-D7 ). Los números próximos a cada entrada o salida de la Figura 10.3 son los números de • O. En la :tiqueta- Lcción 10 10.3. ARQUITECfURA DEL 6800 líneas «LIZA­ ~ ACION, patilla. En la parte superior de la Figura 10.3 está el bus de direccio!1es con buffers de 16 bits (Als-Ao)' La MPU 6800 contiene un contador de programa de 16 bits, un puntero de pila de 16 bits, un registro índice de 16 bits, dos acumuladores de 8 bits (A y B) y un registro de códigos de condición de 8 bits. Las nueve señales de control se muestran a la izquierda de la Figura 10.3. Son las entradas de reinicialización, de interrupción no enmascarable, de continúa/alto, de petición de interrupción, control de tres estados y habilitación del bus de datos y las salidas de bus disponible, dirección de memoria válida y lectura/escritura. Las entradas de reloj 01 y 02 también se muestran a la izquierda en la Figura 10.3. La sección de la unidad aritmética-lógica (ALU) realiza las operaciones lógicas y aritméticas, mientras que el registro de códigos de condición asociado contiene los seis señalizadores. El registro de instrucción alimenta al decodificador de instrucciones y al bloque de control. El decodificador de instrucciones interpreta la instrucción y determina el procedimiento que se va a ~uir para su ejecución. El decodificador de instrucciones dirige al control para generar las señales internas y externas, adecuadas, para completar la instrucción. Las líneas de control inter­ !lO que coordinan la operación del microprocesador no se muestran en la Figura 10.3. http://librosysolucionarios.net , .' 9 4 352 ¡ F1JNDAMENTOS DE LOS MICROPROCESADORES ,.0.15 ,.0.14 ,.0.13 ,.0.12 ,.0.11 ,.0.10 ,.0.9 25 24 23 22 20 19 18 tt t ,.0.8 17 ,.0.7 ,.0.6 16 15 A5 14 ,.0.4 13 ,.0.3 12 ,.0.2 11 Al 10 ,.0.0 9 2. El al de la de pI 3. El p& conti MPl El r~ para 5. El re, señal 4. 3 Reloj. 02 37 Reloj. 01 RElNICIALlZACION 40 Interrupción no enmascarable 6 HALT Petición de interrupción 2 4 Señalizado" Control de tres estados 39 Habilitación del bus de datos 36 Bus disponible 7 Dirección válida de memoria 5 lectura/escritura. La MPL' están repre511 denomina re ciones de 1M bifurcación. R(W 34 I J vcc • Patilla 8 v.. _ Patillas 1.21 26 07 27 D6 28 05 29 D4 30 03 31 02 32 01 33 DO Figura 10.3. Diagrama de bloque funcional de la MPU 6800. (Cortesra de Motorola, Ine.} Como e! Registros El diagrama de bloques de la MPU 6800 de la Figura 10.3 hace que esta unidad parezca más simple que la 8085. Esto se debe principalmente al uso de solamente dos acumuladores. La MPU 6800 se considera a veces como un procesador orientado a memoria porque normalmente hace muchas transferencias con memoria. El 6800 también utiliza E/S de mapa de memoria. Las entradas y salidas son tratadas como posiciones de memoria. Los registros del microprocesador 6800 son los siguientes: l. Los dos acumuladores de 8 bits (ACCA y ACCB) son el foco de muchas de las operaciones del microprocesador. Las operaciones del acumulador incluyen las aritméticas, lógicas, de carga y almacenamiento, entrada y salida y otras. El segundo acumulador (ACCB) no es exactamente un registro de propósito general, sino un acumulador real, ya que todas las operaciones que pueden realizarse en el acumulador A también pueden realizarse en el acumulador B. http://librosysolucionarios.net de a"a5("~ del acumua Cal. Els~ indica un O' MSB (B.l di decomplm de los num señalizadt:W Cor. enla~ Estos núme produce en: número nq , EL MICROPROCESAOOR MOTOROLA 6800 353 El contador de programa (PC) es un registro de 16 bits que siempre contiene la dirección de la siguiente instrucción que se va a ejecutar. Tiene el mismo propósito que el contador de programa de los microprocesadores genéricos 8080 y 8085. El puntero de pila (SP) es un registro de propósito especial de 16 bits. El puntero de pila contiene una dirección de 16 bits que define la parte superior de la pila en la RAM. Las MPU del 8080;8085 y genérica también contienen punteros de pila. El registro índice (IX) es un registro de propósito especial de 16 bits. Su uso principal es para apuntar y modificar direcciones. El registro de códigos de condición (CCR) es un registro de 8 bits que contiene los seis señalizadores utilizados por la MPU 6800. Señalizadores La MPU 6800 utiliza seis bits de código de condición o señalizadores. Estos seis señalizadores están representados en la Figura 1004, Y se agrupan en un solo registro de 8 bits que Motorola denomina registro de códigos de condición (CCR). Como en otros microprocesadores, las instruc­ ciones de bifurcación examinan los señalizadores para determinar si existe o no una condición de bifurcación. H 1 N z v Ie la, Ine.} I parezca más res. La MPU almente hace temoria. Las ¡':ones lógicas, de ACCB) no es que todas las alizarse en el ilS. - Figura 10.4. Seftalizadores del registro de código de condición del 6800. Como en el microprocesador genérico, yen los microprocesadores 8080 y 8085, el seña/izador de arrastre (C) se pone a 1 siempre que se genera un arrastre (o «préstamo») en el MSB del acumulador. Una suma mayor que la capacidad del acumulador de 8 bits pone el señalizador Cal. El señalizador de «overflow» (VJ del registro de códigos de condición, de la MPU del 6800, indica un overflow de complemento a 2. Cuando se trata con números con signo en el 6800, el MSB (B, ) del (de los) acumulador(es) es el bit de signo. Los 7 bits restantes se escriben en forma de complemento a 2 y contendrán números comprendidos entre +127 10 y -128 10 , Este es el rango de los números con signo. Si el resultado de una operación aritmética excede este rango, el señalizador de overflow (VJ se pone a l. Esto avisa al usuario que se ha producido un error. Considerar la suma de los números positivos 79 10 y 64 iO • El decimal +79 es igual a 01001111 en la notación en complemento a 2. El decimal +64 es igual a 01000000 en complemento a 2. Estos números en complemento a 2 son sumados en la Figura lO.5a. Debido al arrastre que se produce entre las posiciones B6 y B 7 , el bit de signo del resultado ha cambiado al, indicando un número negativo, lo cual es un error. El procesador 6800 en la Figura 1O.5b se utiliza para sumar http://librosysolucionarios.net t = 354 FUNDAMENTOS DE LOS MICROPROCESADORES Bit de signo . '\. 0100 1111 - Número positivo + 01000000 - Número positivo 10001111 ' - - - Error - El bit de signo debería indicar un número positivo (a) Positivo Suma en complemento a 2 mostrando el efecto sobre el bit del signo Complemento a2 Acumulador A Acumulador A Después de la operación 11 1 Acumulador B Registro de códigos de condición V 1, I 2'":___".;­ (b) . Efecto en el señalizador de overflow Figura 10.5. los mismos números positivos (en la notación en complemento a 2) utilizando los acumuladores A y B. La suma (10001111 en este ejemplo) se deposita en el acumulador A después de la operación de suma. El sefializador de overflow (V) se pone al, indicando que la suma es mayor que +127'0 (suma = 79 10 + 64 10 - 143 10 en este ejemplo). Considerar la suma de dos números negativos como -79'0 y -64'0' El decimal-79 es igual a 10110001 en la notación en complemento a 2 y el-64 es igual a i 1000000. Como la mayoría de los bits significativos de ambos números en complemento a 2 son 1, representan números negati­ vos entre -1 y -128. Estos números en complemento a 2 se suman en la Figura 1O.6a. El resultado es 101110001. El bit de signo debe permanecer a I (para los negativos), pero ha cambiado. El resultado es erróneo porque excede el límite del rango de -128'0' La tarea de sumar los números negativos -79'0 (10 110001 en complemento a 2) y -64'0 (11000000 en complemento a 2) utilizando la MPU 6800 se muestra en la Figura 1O.6b. Los números en complemento a 2 están en los acumuladores A y B. La suma aparece en el acumula­ dor A después de la operación de sumar. La suma es errónea a causa de un problema de overflow. El sefializador de overflow (V) se pone al, avisando al usuario que se ha excedido el rango del procesador 6800. El señalizador de arrastre (e) también se pone 1, indicando el arrastre fuera de la posición B7' Esto se muestra en la Figura 1O.6a. El señalizador de cero (2) del registro de códigos de condición de la MPU 6800 se pone a I siempre que el contenido del acumulador sea cero como resultado de una operación o de transfe­ rencia de datos. Si el señalizador de cero se pone a O, significa que el contenido del acumulador no es cero. http://librosysolucionarios.net • , , 1---..._,__ ,,' EL MICROPROCESADOR MOTOROLA 6800 355 Bit de signo '\. , 10110001 = Número negativo + 11000000 = Número negativo 101110001 '--­ (a) .. Negativo AcumuladorA Error -El bit de signo debería indicar un número negativo Suma en complemento a 2 mostrando el efecto sobre el bit del signo Complemento a2 Positivo - Error G[~ Acumulador A ~ ........,....-----=-,~ Desp. de la opención Antes de la opención Acumulador B iI5 de condición Negativo 11 11 1 Registro de códigos de condición 1I 11000000 1 /Co~nto V C a2 (b) Efecto en el señalizador de overflow . Figura 10.6. muladores lespués de la lID3 es mayor ~ 79 es igual a la mayoría de meros negati­ ~ 10.6a. El vos), pero ha a 2) Y -64'0 11'3 10.6b. Los D el acumula­ 1 de overflow. ) el rango del astre fuera de , O se pone a 1 de transfe­ i acumulador 1o El señalizador negativo (N) del registro de códigos de condición de la MPU 6800 se utiliza para indicar un resultado negativo. Tiene el mismo propósito que el señalizador de signo en el procesador 8080/8085. El bit de signo es B7 en el acumulador. Si el resultado de la última operación aritmética, lógica o de transferencia de datos fuese negativo, el señalizador N se pondrá a l. Sin embargo, si el resultado fuese positivo, el señalizador se pondrá a O. El señalizador N estará igual que el MSB del acumulador. ~ El señalizador de máscara de interrupción (1) del registro de códigos de condición en la MPU 6800 inhibe todas las interrupciones IRQ cuando se pone a l. Si el señalizador 1 está a O, en la patilla de entrada IRQ de la pastilla del procesador 6800 habrá un nivel BAJO. Algunas instruc­ ciones especiales afectan al señalizador de máscara de interrupción. Estas instrucciones se detalla­ rán en una sección posterior. El señalizador de semiarrastre (H) en el registro de códigos de condición de la MPU 6800 indica un arrastre de BJ a B 4 , en el acumulador, durante una operación de suma. El señalizador H se pone a 1 si hay un arrastre de BJ a B4 y a O en el caso contrario. Los dos bits más significativos del registro de códigos de condición mostrado en la Figura lOA no se utilizan como señalizadores. Siempre se ponen a 1 en el microprocesador 6800. Unidad aritmético-lógica La unidad aritmético-lógica (ALU) debe ser considerada el corazón del microprocesador 6800. Realiza todas las operaciones aritméticas y lógicas. Los resultados de estas operaciones son http://librosysolucionarios.net .. .. ......__________________________________ ~ .... ~ .. 'r'i ~I~~J: ~7.;.7"7.q¡ __ ltf~..., ., 356 FUNDAMENTOS DE LOS MICROPROCESADORES :j almacenados en uno de los acumuladores. La ALU realiza operaciones como sumar, restar, comparar, AND, OR Y XOR. Decodificador de instrucciones El decodificador de instrucciones representado en la Figura 10.3 interpreta las entradas del registro de instrucciones. Basándose en estas entradas, el decodificador de instrucciones dirige a la sección de control para que ejecute la instrucción actual. Reloj del sistema Considerar ejecutar una in op, (2) decodif para la instruo Figura 1O.7b. I instrucción. D círculos de la f realizando la e 1. En la El microprocesador 6800 requiere un reloj de dos fases sin solapamiento. La circuitería del reloj está localizada fuera de la pastilla 6800 y alimenta las patillas de entrada 01 y 02 mostra­ das en la Figura 10.3. El reloj sincroniza las operaciones internas del microprocesador. También sincroniza los dispositivos externos. Las formas de onda se muestran en la Figura 10.7. En la Figura 10.7 a se identifica un ciclo de reloj. La duración del ciclo puede variar de l a 10 I-ls para el microprocesador estándar 6800. El ciclo de reloj no puede ser ralentizado a menos de 10 Jls por ciclo. Si opera muy lentamente, algunos de los registros internos dinámicos pueden perder sus datos. Observar en la Figura 10.7 a que cuando la fase 1 (01) está en ALTA, la fase 2 (02) está siempre en BAJA. Lo opuesto también es cierto. 2. 3. 4. I~lciclO~ ~s I Fase 1 (01) --.J' \ es típico) . Y 5. 1 contOO nivel A direccic en un ( En la t cambia el regís En la I el céIdÍI datos. En la t:l transfie procesa inmedi fue leid En la t con~ Fase 2 (02) \ ' - -_ _---'/ (a) \_-_/ '---­ Formas de onda de dos fases de reloj sin solapamiento .. 6. 7. En la t:l En la t operaDI 8. En la U transfic: Los ocho piI .1or estándar 6 ~SOO mientras :ontrolar apeo Reloj 01 Reloj 02 IlIIt!mqcio~ 1+----.- primer ciclo----I"...I - - t - - - segundo ciclo --....:,.--. (b) Temporización de la instrucción «cargar inmediato acumulador Alt El micropr ción. interru¡x única instrucc: Cuando la BAJO durante S«Uencia espe Figura 10.7. http://librosysolucionarios.net El señalizador -¡ ¡' • '1) '" EL MICROPROCESADOR MOTOROLA 6800 :tar, del ala del itra­ :>ién n la ra el por . sus está ~ 357 Considerar el diagrama de tiempos de una instrucción cuando se utiliza la MPU 6800. Para ejecutar una instrucción, cualquier microprocesador realiza tres pasos: (1) búsqueda del código de op, (2) decodificación y (3) ejecución de la instrucción. El ejemplo esbozado en la Figura 1O.7b es para la instrucción «cargar el acumulador A inmediato». Durante el primer ciclo mostrado en la Figura 10.7 b, la MPU 6800 realizará la búsqueda del código de op y la decodificación de la instrucción. Durante el segundo ciclo, se ejecutará la instrucción. Los números inscritos en los círculos de la Figura 10.7 b permiten que se siga la secuencia de eventos cuando la MPU 6800 está realizando la operación cargar el acumulador A inmediato. 1. 2. 3. 4. S. 6. 7. 8. En la transición L a H (ALTA a BAJA) del reloj .01, la dirección es transferida del contador de programa al bus de direcciones. Las patillas VMA y RjW del 6800 van al nivel ALTO. Una línea VMA en ALTA indica, a la memoria, que la dirección del bus de direcciones es válida. Una línea RjW ALTA señala a la memoria que el procesador está en un ciclo de lectura. ' En la transición H a L del reloj .01, se incrementará el contador de programa. Este no cambiará la dirección actualmente sobre el bus de direcciones porque está almacenada en el registro de direcciones de memoria . En la transición L a H del reloj .02, la MPU 6800 indica a la memoria que coloque el código de op para la instrucción de «cargar inmediato el acumulador A» en el bus de datos. En la transición H a L del reloj .02, la MPU acepta el código de op del bus de datos, lo transfiere al registro de instrucciones y decodifica la instrucción. Una vez decodificada, el procesador determina que durante el segundo ciclo se ejecute la instrucción de «cargar inmediato el acumulador A». Durante el primer ciclo de la MPU el código de operación fue leído de memoria (buscado) y decodificado. En la transición L a H del reloj 01, la dirección del operando es transferida desde el contador de programa al registro de direcciones de memoria y al bus de direcciones. En la transición H a L del reloj 01, se incrementa el contador de programa. En la transición L a H del reloj 02, el procesador indica a la memoria que coloque el operando (dato a ser cargado en el acumulador A) en el bus de datos. En la transición Ha L del reloj 02,Ia MPU 6800 acepta el operando del bus de datos y lo transfiere al acumulador A. Los ocho pasos anteriores se realizan normalmente en 2 IlS cuando se utiliza un microprocesa­ dor estándar 6800. Observar que los eventos que ocurren durante el reloj 01 están en la MPU 6800 mientras que el reloj .02 está aplicado a dispositivos externos. El reloj .02 se utiliza para controlar operaciones de memoria en este ejemplo. Interrupciones El microprocesador 6800 tiene tres tipos de interrupciones hardware. Son las de reinicializa­ ción, interrupción no enmascarable y petición de interrupción. La MPU 6800 también tiene una única instrucción de interrupción software (SWI). Cuando la patilla de interrupción REINlCIALlZACION en la MPU del 6800 está en el nivel BAJO durante un tiempo y después va al nivel ALTO, el procesador salta automáticamente a una secuencia especial de interrupción de reinicialización. Esta secuencia se detalla en la Figura 10.8a. El señalizador de la máscara de interrupción ([) se pone primero al, Y después el contador de http://librosysolucionarios.net il a 358 RJNDAMENTOS DE LOS MICROPROCESADORES MPU 6800 r ­_ - - - , Pulso ~ - 40 RElNIClALlZAClON' baJo Pone sttlalizador de mticara de inlemlpcÍón (1) • I Carga by!< de oroen superior del contador de programa con el conlt'nido de FFFEH Secuencia de interrupción de reinicialización Carga byte de orden inferior del contador oc programa con el ronlenido de FfFFH Ciclo busca­ decodífica-ejecuta (a) Secuencia de la ¡ntenupción reinicialización .-,.,, .... /mi MPU 6800 No Pila . '~ SP-7 Introduce íPUSHl Sp.¡, registros en pi1a SP-j Secuencia de SP-4 I\cumulador .4 SP-3 IX (superior) SP-2 IX (mferior) SP-I pc ,superior) SP-I pe (inferior) interrupción no enmascarable Pone seflalizador de máscara de intcrrupciún (1) al Carga by!< de oroen superínr del contador de p(~rama con el l'ODlenido de FFFCH Carga l»1e de onden inferior del contador de programa Estas dos reiniciafu: Pl"OSram<l con el contenido de FFFDH Ciclo de r mnicialix busca~ de(xxiifica-ejecuta (bj res de me' Secuencia de interrupción no enmascarable La_ 1'31O.8b. í 1t!CUe1ICia Figura 10.8. http://librosysolucionarios.net f n' EL MICROPROCESADOR MOTOR OLA 6800 359 Pila ~>cuenda de petIción de Interrupción , Ciclo de busca­ decodifica-ejecuta {t'J Secuencia de petición de interrupción Figura 10.8. (continuación). wograma se carga con la dirección contenida en las posiciones de memoria FFFEH y FFFFH. 4.S dos posiciones de memoria están reservadas para el vector de reinicialización. El vector de l'Onicialización no es nada más que una dirección del programa que dará servicio a la entrada de -'~icialización. Es típico en la MPU 6800 que la ROM esté localizada en las direcciones superio· _; je memoria, mientras que la RAM habitualmente empieza en la dirección OOOOH. La entrada de interrupción no enmascarable (NMI) a la MPU 6800 está activada en la Figu· 1:1 1O.8b. Cuando la patilla NMI de la MPU 6800 va al nivel BAJO, el procesador salta a la ,J'.'1Ii/!fICia de interrupción no enmascarable mostrada a la derecha de la Figura 1O.8b. La instruc­ http://librosysolucionarios.net " ' p 360 d, I .~ ¡~ r ~. , ~ , ,~ ~c :! - '\.." ~j' té FUNDAMENTOS DE LOS MICROPROCESADORES ción actual se completa, el contenido de los registros del 6800 se guarda en la pila, el señalizador 1 se pone al, Y el vector de interrupción no enmascarable busca en las posiciones de memoria FFFCH y FFFDH. La MPU entonces saltará a la rutina de servicio de interrupción no enmasca­ rable. La entrada de petición de interrupción (11[Q) a la MPU 6800 está activada en la Figura 10.8c. Cuando la patilla IRQ de la MPU 6800 va al nivel BAJO, el procesador salta a la secuencia de petición de interrupción detallada a la derecha de la Figura 10.8e. Se completa la instrucción actual y se comprueba el señalizador l. Si éste está al, el procesador ignora la petición de interrupción y continúa con el programa regular; la entrada de petición de interrupción es enmas­ carable y, por tanto, tiene una prioridad inferior que la de las entradas REINlCIALIZACION o NMI. Si el señalizador I hubiese estado a O, el procesador introduciría, a continuación, el conteni­ do de los registros en la pila en el orden mostrado en la Figura 1O.8e. El siguiente paso en la secuencia de interrupción sería poner a l el señalizador l. A continuación el contador de progra­ ma se cargaría con el vector de petición de interrupción localizado en las posiciones de memoria FFF8H y FFF9H. El procesador saltaría entonces a la dirección de la rutina de servicio de petición de interrupción. Las asignaciones de memoria del vector de interrupción en todos los sistemas basados en el 6800 se muestran en la Figura 10.9. Estas son posiciones reservadas de memoria cuyos conteni­ dos son las direcciones donde comienzan las distintas rutinas de servicio de interrupción. Las instrucciones SWI y asociadas del microprocesador 6800 se cubrirán en una sección pos­ terior. t " ~ -''''-1_-­ Contenido FFF8 Byte superior FFF9 Byte inferior FFFA Byte superior FFFB Byte inferior FFFC Byte superior FFFD Byte inferior FFFE Byte superior FFFF Byte inferior Figura 10.9. ...... ....12. ROM Dirección .... .JI_ l l ll ... Vecto, de petición de interrupción (di<e«:ión) Vector de interrupción software (dirección) Vector de interrupción no enmascarable (dirección) V...., de re;n;c;al;"",ión (mn:cción) Posiciones de memoria del vector de interrupción en los sistemas basados en el 6800. http://librosysolucionarios.net i,' ~ • EL MICROPROCESADOR MOTOROLA 6800 alizador 1 de memoria DO enmasca­ PROBLEMAS RESUELTOS 10.9. !:¡gura IO.Sc. 'Secuencia de instrucción petición de ;n esenmas- ,.t4; La MPU 6800 tiene acumulador(es) de _ _ (número) 8 bits, un contador de progra­ made 16 bits, un puntero de pila de _ _ (número) bits, un registro _ _ de 16 bits, un registro de instrucción y un registro ___ que contiene seis señalizadores. Solución: De acuerdo con la Figura 10.3, la MPU 6800 tiene dos acumuladores de 8 bits, un contador de programa de 16 bits, un puntero de pila de 16 bits, un registro índice de 16 bits, un registro de instrucción y un registro de códigos de condición que contiene seis seftalizadores. IZACIONo l. 361 el conteni­ 10.10. : paso en la de progra­ de memoria servicio de Ir La MPU 6800 tiene un bus de direcciones con buffers de tres estados de _ _'_ (núme­ ro) bits y un bus de _ _ de buffers de tres estados de 8 bits. Solución: De acuerdo con la Figura 10.3, la MPU 6800 tiene un bus de direcciones de bufTers de tres estados de 16 bits y un bus de datos con bufTers de tres estados de 8 bits. asados en el 10.11. yos conteni­ lCión. El registro de códigos de condición del 6800 contiene seis señalizadores. Listados. Solución: De acuerdo con la Figura tO.4, el registro de códigos de condición del 6800 contiene; seftaliza­ dor de semiarrastre (H), señalizador de máscara de interrupción (/), señalizador negativo (N), señalizador de cero (Z), señalizador de «overflow» (rebose) de complemento a 2 (V) Y señalizador de arrastre/préstamo (C). sección pos­ 10.12. Acudir a la Figura 10.10. El contenido del acumulador A después de la operación de suma es _ _ (8 bits). Solución: Sumar los números en complemento a 2 0100001 t + lOOOOOt 1 - 10000011. El contenido del acumulador A después de la operación de suma es 10000011. .) 10.13. Acudir a la Figura 10.10. El señalizador de overflow (V) está a _ _ (O, 1) después de la operación de suma. .. lCCÍón) Complemento a2 a2 Acumulador A ? ) ii . Acumulador A Después de la operaddn Acumulador B s "-r­ m Complemento " / POSltlVO Registro de códigos de condición v Complemento a2 Figura 10.10. http://librosysolucionarios.net 't ­ s;;at4 362 FUNDAMENTOS DE LOS MICROPROCESADORES Solución: Al sumar los números en complemento a 2 01000011 + 01000000 - 10000011 (decimal +67 más +64 = + 131). El señalizador V se pone al, indicando que un overflow en complemento a 2 ha provocado un error de rango. La «suma» del acumulador después de la operación de suma por tanto no es la suma correcta en complemento a 2. .1 .. 10.14. Acudir a la Figura 10.11. El contenido del acumulador A después de la operación de resta es _ _ (binario). Solución: Al restar en binario 00001111 - 00000001 - 00001110 (decimal 15 - 1 - 14). El contenido del acumulador A después de la operación de resta es 0000 11102, 10.15. Acudir a la Figura 10.11. El señalizador Z está a _ _ (O, 1) después de la operación de resta. Solución: Al restar en binario 0000 1111 - 00000oo 1 = 0000 1110. El señalizador Z está a Odespués de la operación de resta en la Figura 10.11 porque la diferencia no es cero. Acumulador A •.19.. Acumulador A Después de la operación Acumulador B Registro de códigos de condición Figura 10.11. '" 10.16. Acudir a la Figura 10.11. El señalizador de resta. e está a _ _ (O, ..l 1) después de la operación Solución: Debido a que no existen préstamos, el señalizador e está a O despUés de la operación de resta de la Figura 10.11. El señalizador de reinicialización indica que el número del acumulador A es mayor que el número del acumulador B. e 10.17. Acudir a la Figura 10.12. El contenido del acumulador despuéS de la operación de suma es _ _ (8 bits). Solución: Sumar 10001001 + 10001001 .;. 1 0001 0010 2, El contenido del acumulador después de la operación de suma de la Figura 10.12 es 00010010. 10.18. Acudir a la Figura 10.12. El señalizador H está a _ _ (O, 1) despuéS de la operación de suma. http://librosysolucionarios.net ...11. • t EL MICROPROCESADOR MOTOROLA 6800 lecimal +67 lemento a 2 le suma por '"m"lodo< A I!I'3ción de Acumulador B ~ .-::;-__..... 363 Acumulador A ? Antes de la operación Después de la operación 11000 1001 1 Registro de códigos de condición H z e Figura 10.12. 1 contenido ~.> Solución: Al sumar loooiool + 10001001 - t 0001 0010. El seilalizador H se pone a 1 después de la operación de suma de la Figura 10.12 porque había un arrastre de la posición B3 a la B4 del acu­ mulador. operación ~~uésdela 10.19. Acudir a la Figura 10:-12. El señalizador Z está a _ _ (O, 1) después de la operación de suma, mientras que el señalizador e está a ___ (O, 1). -, Solución: Sumar 1000100 1 + 1000 1001 = l 000 l 00 10. El señalizador Z está a O, mientras que el señali­ zador e está a l después de la operación de suma de la Figura 10.12. 10.20. Durante el ciclo de búsqueda del microprocesador, se recupera un código de op de memoria, vía el bus de datos y se deposita en el registro _ _ del 6800. El código de op es entonces traducido por el ______ del 6800, que indica a la sección de control que ejecute la instrucción. condición -!.¡- . operación 10.21. Ión de resta IUlador A es 10.22. spués de la I operación La MPU 6800 utiliza un reloj de _ _ -fases _ _ (sin solapamiento, con solapa-/ miento). Generalmente, la fase 1 del reloj sincroniza las operaciones ___ (internas, .¡ externas) del procesador, mientras que los pulsos del reloj 02 sincronizan los dispositi­ vos externos y operaciones internas. Solución: Acudir a la Figura 10.7. La MPU 6800 utiliza un reloj sin solapamiento de dos fases. General­ mente, la fase l del reloj sincroniza las operaciones internas del procesador, mientras que los pulsos del reloj 02 sincronizan las operaciones internas y los dispositivos externos. m de suma ~ Solución: Acudir a la Figura 10.3. Durante el ciclo de búsqueda del microprocesador, se recupera un código de op de memoria, vía el bus de datos y se deposita en el registro de instrucciones del 6800. El código de operación es entonces traducido por el decodificador de instrucciones del 6800, que indica a la sección de control que ejecute la instrucción. 1'), Acudir a la Figura 10.13. El señalizador de la máscara de interrupción (1) estará a ___ (O, 1) después de la secuencia de la interrupción reinicialización mostrada en este ejemplo. Solución: Según la información de la Figura IO.8a, el señalizador de la máscara de interrupción (1) de la Figura 10.13 estará a l despuéS de la secuencia de la interrupción reinicialización. http://librosysolucionarios.net " 364 FUNDAMENTOS DE LOS MICROPROCESADORES REINICIA. L/7.ACION MPU 6800 Registro de códigos de condición , Antes de la secaeada . Después de la secuencia ROM .. t , - - - ' - - - - - - . . , Contador de ? programa ¡ *,A Figura 10.13. ........ 41 10.23. I Solución: Según la informaciÓn de la Figura 10.8a, el contenido del contador de programa después de la secuencia de la interrupción reinicialización de la Figura 10.13 será FCOOH. Esta es la dirección de comienzo de la rutina de servicio de reinicialización. j J O­ Acudir a la Figura 10.13. El contenido del contador de programa después de la secuen­ cia de la interrupción reinicialización será ___ (hex). Esta es la dirección de comien­ zo de la rutina de ______ . 10.24. ...... ~ Acudir a la Figura lO.! 4. Listar el contenido de la pila después de la secuencia de interrupción no enmascarable mostrada en este ejemplo. 1 Solución: Acudir al procedimiento mostrado en la Figura 1O.8b. El contenido de la pila de la Figu­ ra 10.14 después de la secuencia de interrupción no enmascarable es el siguiente: Posición de pila (hex) OIF9 OIFA OIFB 11001000 11110000 OIFE 10000000 OOOOOOOO 00000001 OOOOOOOO OIFF 00010000 OIFC OIFD 10.25. , i .. .~ Je.2i.' Conteni3o (Registro de códigos de condición) (Acumulador B) (Acumulador A) (Registro índice - byte superior) (Registro índice - byte inferior) (Contador de programa - byte superior) (Contador de programa - byte inferior) 1 , AJI 1 4 11.27. .sil Acudir a la Figura 10.14. El señalizador 1 estará a _'_ (O, 1) después de la secuencia de interrupción no enmascarable mostrada en este ejemplo. " Solución: Acudir a la Figura 1O.8b. El señalizador I estará a 1 despuéS de la secuencia de interrupción no enmascarable mostrada en la Figura 10.14. ~ ...~ t http://librosysolucionarios.net t ,. ts 365 EL MICROPROCESADOR MOTOROLA 6800 Pila de códigos ición ~_6 NM/ bajo J MPU 6800 • secuencia Contador de programa la secuen­ le comien­ Registro índice Contador de programa ROM ? OIFB ? OIFC ? OIFU ? OIFE ? OIFF Registro de códigos de condición ............L_ _ _ _ _..., {)(}{)(} {)(}{)(} {)(}{)(} 1111 ~j ? Contador de programa OOH FUH "'~" Puntero de pila Lciade OIFFH ~-------------~ . 1· . , .... Figura 10.14. de la Fígu­ 10.26. ~ón) Acudir a la Figura 1O.8b. El contenido del contador de programa después de la secuencia de interrupción no enmascarable de la Figura 10.14 será OOFDH. Esta es la dirección de una rutina de servicio de la interrupción no enmascarable. r) superior) inferior) Acudir a la Figura 10.14. El contenido del contador de protrama después de la secuen­ cia de interrupción no enmascarable será ____ (hex). Solución: Id ~ OIFA ;-------~ le$pués de la la dirección ~ OlF9 ? Después de la secuencia Antes de la secuencia Registro de códigos de condición Acumulador B ? 10.27. Acudir a la Figura 10.15. El señaJizador de petición de interrupción (1) está a _ _ (O, 1) antes de la secuencia de petición de interrupción. a secuencia Solución: ~ Acudir a la Figura lOA para las posiciones del señalizador en el CCR. El CCR contiene 11001000 antes de la secuencia mostrada en la Figura 10.15. Esto significa que el señalizador de petición de interrupción (/) está a O antes de la secuencia de petición de interrupción. Esto tendrá el efecto de permitir las entradas IRQ que sean aceptadas por la MPU 6800 . mupción no http://librosysolucionarios.net • '1 ................ .~ ------~------------~ ...~ FUNDAMENTOS DE LOS MICROPROCESADORES 366 10.29. Pila ~_ 4 ? 0lF9 ? OIFA ? OIFB ? OIFC MPU ? OIFD 6800 ? OIFE' ? OIFF IRQ bajo Después de la secuencia Antes de la secuencia Registro de códigos de condi ción Acumulador B Registro índice Contador de programa I I Registro de códigos de condición 1100 1000 I 11110000 10000000 Acumulador A 11.31. ? 1-­ _ _ _ _ _ _--' 10.4. Contador de programa 0000 0000 0000 000 I 0000 0000 000 I 0000 1. ROM Puntero de pila 2. l~í-~--8~~--~--:--~ 3. 4. 5. OIFFH I----------------~ Düwd Figura 10.15. M.. trucciOt cid pro prOCdl / L 10.28. Acudir a la Figura 10.15. Listar el contenido de la pila aespués de la secuencia de petición de interrupción. (poIIm. Del I inheret 10 de Solución: Acudir a la Figura 10.Se. El contenido de la pila de la Figura 10.15 después de la secuencia de petición de interrupción es el siguiente: Posición de pila (hex) 0lF9 OIFA OIFB OIFC OIFO OIFE OIFF 11001000 11110000 10000000 OOOOOOOO 00000001 OOOOOOOO 00010000 Contenido I"f ' (Registro de códigos de condición) ., ~ (Acumulador B) (Acumulador A) (Registro índice - byte superior) (Registro índice - byte inferior) (Contador de programa - byte superior) (Contador de programa - byte inferior) http://librosysolucionarios.net Dire«i 11m DDt!i loca.I.iz;; , Lai Cllecjl 86H el de!a il ~- - ~~ • EL MICROPROCESADOR MOTOROLA 6800 10.29. Acudir a la Figura 10. I 5. El señalizador 1 estará a _._ de petición de interrupción mostrada en este ejemplo. 361 (O, 1) después de la secuencia Solución: Acudir a la Figura 1O.8e. El señalizador 1 estará a 1 después de la secuencia de petición de interrupción de la Figura 10.1 S. 10.30. Acudir a la Figura 10.15. El contenido del contador de programa después de la secuen­ cia de petición de interrupción será _ _ (hex). Esta es la dirección de la ruti­ na _ _ _ _ _ _ . Solución: :le códigos :ión ~tadorde , '~,ill,. Acudir a la Figura IO.Se. El contenido del contador de programa después de la secuencia de ' petición de interrupción en la Figura 10.1 S será OOF7H. Esta es la dirección de la rutina de servicio de petición de interrupción. ,;; 10.4. MODOS DE DIRECCIONAMIENTO wograma Los modos de direccionamiento utilizados por el microprocesador Motorola 6800 son: l. Inherente (implícito). 2. Inmediato. 3. Directo y extendido. 4. Indexado. 5. Relativo. Direccionamiento inherente :uencia de Muchas instrucciones del microprocesador 6800 utilizan direccionamiento inh(!rente. Las ins­ trucciones inherentes se utilizan cuando no es necesario buscar ningún operando en el exterior del procesador. A este tipo de direccionamiento se denominó direccionamiento implfcito en los procesadores 8080;8085 y genérico. Las operaciones inherentes, o implícitas, son siempre instruc­ ciones de l byte. Algunos ejemplos de instrucciones inherentes, o implícitas, son la de borrar (poner a cero), incrementar y decrementar los acumuladores. Determinadas informaciones sobre la MPU 6800 de Motorola l1lencionan el direccionamien­ to de los acumuladores, que puede considerarse como un caso especial de direccionamiento inherente para los propósitos de este capítulo. ieCuencia de Direccionamiento inmediato :ión) )r) r) ~ superior) e inferior) Igual que los procesadores genérico y 8080;8085, la MPU 6800 tiene instrucciones que utili­ zan el modo de direccionamiento inmediato. En las instrucciones inmediatas, el operando está localizado inmediatamente despuéS del código de op en la memoria de programa. La instrucción «cargar el acumulador A inmediato» se está ejecutando en la Figura 10.16a. En este ejemplo, el código de op del 6800 para la instrucción «cargar acumulador A inmediato» es 86H en la Figura 1O.16a. El dato a ser cargado (llllllll en este ejemplo) es el segundo byte de la instrucción en la memoria de programa. El dato inmediato es entonces cargado en el acu­ mulador A. http://librosysolucionarios.net . .~;;:, 2 ~ ... __ -o:; FUNDAMENTOS DE' LOS MJCROPR~ADORES 368 ... Acumulador A Acumulador A Después de la operaciÓD Antes de la operación j. Código de operación 86H Memoria de programa Dato inmediato (a) .,I. -'~ ;~ .·• f Puntero de pila Instrucción de 2 bytes con direccionamiento in"mediaio I . . .__----....1 , i Puntero de pila ?:­ Despufs de la operadón Antes de la operaciÓD Código de operación Momo'" do_/CU 8EH 00000011 Byte superior 1111 1111 BY'0 ;nfori" it!ii' } ~f:~ Dato inmediato .•.. -. .," ':~..J -­ -­ 3:po5Í (b) Instrucción de 3 bytes con direccionamiento inmediato Figura 10.16. La mayolÍa de las operaciones inmediatas del 6800 son instrucciones de 2 bytes. Sin embargo, algunas son instrucciones de 3 bytes. Un ejemplo de una instrucción inmediata de 3 bytes se muestra en la Figura l 0.16b. En este ejemplo, se está ejecutando la instrucción «cargar el puntero de pila inmediato>~. Observar Que el segundo byte de la instrucción es el byte superior (00000011 en este ejemplo), mientras Que el tercer byte es el byte inferior (11111111 en este caso). t Direccionamiento directo y extendido Las operaciones Que usan direccionamiento directo en la MPU 6800 se especifican mediante formatos de instrucción de 2 bytes. Este formato está representado en la Figura 10.17a. El byte 1 , ", contiene el código de op para la instrucción de direccionamiento directo. El byte 2 contiene la dirección del operando. Debido a Que la dirección es solamente de 8 bits, el rango de direcciones disponibles está limitado a las 256 10 primeras posiciones de memoria. El direccionamiento directo 'i, _: t ... " ....... ~1..iL ,­ http://librosysolucionarios.net CI 16 bit ~ B d:ura fOrm¡ mstru CUIIta U mla Eldil din:a índia d:im:c cjeIDt EL MICROPROCESADOR MOTOROLA 6800 Memoria de programa 369 Código de operación Código de operación Dirección del operando Dirección del operando (byte de orden superior Memoria de programa Dirección del operando (byte de orden inferior (a) Formato de instrucción para el direccionamiento directo del 6800 (b) Formato de instrucción p¡u:a el direccionamiento extendido del 6800 Figura 10.1 7. mtero de pita , {\ ,~- Direcciontlmiento indexado ;in embargo, le 3 bytes se Ir el puntero "' (000000 11 aso). ~ de Motorola es sitnilar al direccionamiento de página base o de página cero en otros procesadores (como el 6502). Las operaciones que utilizan el direccionamiento extendido en la MPU 6800 se especifican mediante instrucciones cuyo formato es de 3 bytes. Este es el mismo que el empleado en el direccionamiento directo en los microprocesadores genérico, 8080 y 8085. El formato de instruc­ ción del 6800 para el direccionamiento extendido está representado en la Figura 10.17 b. El byte l contiene el código de op para la instrucción de direccionamiento extendido. El byte 2 contiene el byte de orden superior de la dirección del operando. El byte 3 contiene el byte de orden inferior de la dirección del operando. Con el direccionamiento extendido, puede direccionarse el rango completo de 65.536 10 posiciones de memoria. Un ejemplo de direccionamiento directo utilizando la MPU 6800 se detalla expresamente en la Figura 10.18a. La instrucción «carga el acumulador A directo» está ejecutándose en este ejem­ plo. El segundo byte del programa (11110000 en este ejemplo) es la dirección del operando. El operando (00000100 en este ejemplo) es buscado entonces en la posición de memoria OOFOH y depositado en el acumulador A. Un ejemplo de direccionamiento extendido se muestra en la Figura 10. 18b. El segundo y tercer bytes de la instrucción en la memoria del programa son ensamblados en una dirección de 16 bits (00000001 0000 0000 en este ejemplo). El contenido de esta dirección se busca en la memoria de datos y se deposita en el acumulador A. ­ :an mediante .7a. El byte 1 2 contiene la le direcciones liento directo El microprocesador 6800 contiene un registro índice de 16 bits (IX) que se utiliza en el direccionamiento indexado. El modo indexado requiere el uso de una instrucción de 2 bytes cuyo formato se muestra en la Figura 10.19a. El primer byte contiene el código de op habitual para la instrucción indexada y el segundo byte contiene el desplazamiento. El desplazamiento se suma al contenido del registro índice para determinar la dirección del operando. Un ejemplo de una instrucción que utiliza el modo de direccionamiento indexado se detalla en la Figura 10.19b, donde se está ejecutando la instrucción «carga el acumulador A indexado». El direccionamiento indexado es como el direccionamiento extendido, ya que se genera una dirección de 16 bits. La dirección del operando se genera sumando el contenido del registro índice (IX) de 16 bits al desplazamiento localizado en la memoria de programa. Esta nueva dirección (0030H en este ejemplo) es la posición del operando. El operando (11110000 en este ejemplo) se carga entonces en el acumulador A. http://librosysolucionarios.net #:2 --,~ rr & 370 FUNDAMENTOS DE LOS MICROPROCESADORES Acumulador A' Acumulador A Aates de la operación Memoria de datos (OOFOH) Después de la operación 0000 0100 Códigode ! ~, 1~::I·~:.n·:_ \ f' Direccionamiento directo (a) Acumulador A Acumulador A DesPUH de la operaci6n Memoria de datos (OIOOH) o;",ció, '" 16 bi" L ",,;_~ operación roooo0001 00000000'::.1 1.:_ :dl­ Código de B6H - - ____ BYTE SUPERIOR ::----¡ 00000001 0000 0000 (b) Memoria de programa DirecciOnamiento extendido ~ Figura 10.18. nq,ati' VI! U'3 en El valor del desplazamiento recuperado del segundo byte de la instrucción puede ser cualquier número sin signo comprendido entre OOH y FFH (0-255 10), Direccionamiento relativo El modo de direccionamiento relativo se utiliza en la mayoría de las instrucciones de bifurca­ ción en el microprocesador 6800. El formato de las instrucciones de direccionamiento relativo se muestra en la Figura 1O.20a. El primer byte de la instrucción es el código de op. El segundo byte de la instrucción se denomina desplazamiento. el cual se interpreta como un número de 7 bits con . ,1 http://librosysolucionarios.net - .lli ,,_lit ." ;:~"'"J'_._ _.,~ 1 5ÍgrtO. 1~. __ ~ ~~( uJadorA EL MICROPROCESAOOR MOTOROLA 6800 Código de operación Memoria de programa Acumulador A bifurca­ lativo se Ido byte 'bits con Acumulador A Después de la operación Memoria de datos (OO30H) Di_ó. ~~1~ ,,~ L__ " ~~~.!..!~Códigode 1 .....ci6n ~' Desplazamiento (a) Formato de instrucción para el direccionamiento indexado 1: ualquier , 371 operación . '! IX + Desplazamiento Memoria de programa Desplazamiento 0000 0000 00 10 0000 Registro índice (IX) ;:,.. (b) Direccionamiento indexado Figura 10.19. signo. Si el MSB del desplazamiento es O, el número es positivo, y esto significa que se va a ejecutar una bifurcación o salto hacia adelante. Si el MSB del desplazamiento es 1, el número es negativo, lo que significa que se va a ejecutar una bifurcación o salto hacia atrás. Un ejemplo de salto hacia adelante utilizando el direccionamiento relativo del 6800 se mues­ tra en la Figura 1O.20b. El contador de programa (pe) antes de la operación contiene 0009H. El código de op para la instrucción «bifurca siempre de forma relativa» (20H) es buscado en la posición 0009H de la memoria de programa. El contador de programa es incrementado a OOOAH, y se busca el desplazamiento (00000100). El contador de programa se incrementa a la dirección de la siguiente instrucción (OOOBH) justo antes de buscar el operando real. El procesa­ dor 6800 suma internamente el desplazamiento (04H) al contenido del contador de programa después de la operación «bifurca siempre de forma relativa» será entonces OOOB + 04 - OOOFH (00000000 0000 1111 J El procesador entonces saltará a esta nueva dirección y buscará una instrucción en la posición OOOFH. Observar que el MSB del desplazamiento es O. Esto significa que un desplazamiento positivo, realizará un salto o bifurcación hacia adelante. http://librosysolucionarios.net . . -'~'---~"'-.~-" I J 372 ~ j RJNDAMENTOS DE LOS MICROPROCESADORES .1 ..¡ Segundo, • Código de operación Memoria de programa (a) Desplazamiento Formato de instrucción para direccionamiento relativo Antes de la operaciÓD ," Contador r - - - - - - - - . de programa 0000 0000 0000 1001 (pe¡ , , t:' ~ . ' La nueva la nueva e relatiVa». , . . . - - - - - - - - , Contador ' - -_ _ _ _ _ _..1 de programa Memoria ,...---.,..---=-----, de programa f - - - - - f - - - - - \ . ' " . Desplazamiento 11.31. (h) ~i Figura 1 0.20. f' ,' ".~~ • ..,.-;.-' ,, Un ejemplo de salto hacia atrás utilizando direccionamiento relativo se ilustra en la figu­ ra 10.21. El contador de programa (PC) antes de la operación contiene OOIOH. El código de op para la instrucción «bifurcar siempre de forma relativa» es 20H y está en la posición OOIOH de la memoria de programa. El desplazamiento de la posición 00 l EH de la memoria del programa es el número en complemento a 2 111110 10 (-06H). El desplazamiento negativo significa que la bifurcación será hacia atrás. La dirección de destino de la operación «bifurca siempre de forma relativa» se calcula en dos pasos. Primero, suma +2 al contador de programa. PC +2 + 00000000 0001 1101 0010 0000 0000 0001 1111 : oolm -~ ~nuaria • Contador de programa po. . . . Memoria de programa f - - - - - f - - - - - f . ' " , Desplazamiento Figura 1 0.21. Direccionamiento relativo; salto hacia atrás. http://librosysolucionarios.net "--­ a OOIOH 2H .-----=----.., Contador de r-OOOO--OO-OO-OOO-I-I-I-O• ..., programa ¡ + A 10.32. Después de la operaclóo, Antes de la opeI"IIclón ;: ( i Direccionamiento relativo; salto hacia adelante , • .33. .., . i 1M es EL MICROPROCESADOR. MOTOROLA 6800 373 Segundo, suma el desplazamiento a la suma parcial. PC+2 Desplazamiento + 00 lFH + FAH 0000 0000 000 1 1111 11111010 0000 00 19H descarta el arrastre del byte más significativo Contador de programa La nueva dirección es entonces 0019H. El contador de programa de la Figura 10.21 contiene la nueva dirección 0000 0000 000 1 1001 2 después de la operación «bifurca siempre de fonna relatiVa». PROBLEMAS RESUELTOS 10.31. Cuando todos los operandos están localizados en el microprocesador 6800, se utilizan instrucciones que utilizan el modo de direccionamiento implícito o ___ . Estas ope­ raciones se especifican utilizando instrucciones de _ _ (número) byte(s). Solución: Cuando todos los operandos están localizados en el microprocesador 6800, se utilizan instruc­ ciones que utilizan el modo de direccionamiento implícito o inherente. Estas operaciones se especifican utilizando instrucciones de 1 byte. en la Figu­ :()digo de op XnDH de la programa es nífica que la IR de fonna l 10.32. Acudir a la Figura 10.22. Después de la operación «cargar registro índice inmediato», el registro índice contendrá _ _ (hex). Solución: Acudir al problema ejemplo de la Figura 10.16b. Después de la operación «cargar registro (ndice inmediato» de la Figura 10.22, el registro índice contendrá 00 11 H (0000 0000 000 I 0001 2 ), ? Registro índice Antes de la operación Código de operación 11 operación l Contador de ] programa Memoria de programa 0000 CEH 0001 00000000 0002 00010001 Registro índice Después de la operad6n (} Figura 10.22. .' '.~¡ 11.33. Acudir a la Figura 10.23. La dirección de la memoria de datos en la izquierda es _ _ (hex) como especifican el segundo y tercer bytes de la instrucción en _ _ http://librosysolucionarios.net ,,p,, s 374 FUNDAMENTOS DE LOS MICROPROCESADORES Acumulador B Acumulador B Después de la operación Memoria de datos (?) Códigode operación ' I \ F6H I {¡OOOOOOOI ~ . 10000000 Memoria de programa I Figura 10.23. Solución: Acudir al problema ejemplo de la Figura 1O.l8b. La dirección de la posición de la memoria de datos en la izquierda de la Figura 10.23 es O180H como especifican el segundo y tercer bytes de la instrucción en la memoria del programa. 10.34. Acudir a la Figura 10.23. El contenido del acumulador B después de la operación «car­ gar el acumulador B extendido» será _ _ (8 bits). Solución: El contenido del acumulador B después de la operación «cargar el acumulador B extendidO) de la Figura 10.23 será 11110011. j 10.35. Acudir a la Figura 10.24. El código de op E6H especifica la instrucción « _ _ __ ------». Solución: El código de op E6H de la Figura 10.24 especifica la instrucción «cargar el acumulador B in­ dexado». 10.36. r Acudir a la Figura 10.24. El contenido de la posición de la memoria de datos 1--­ (hex) se cargará en el acumulador B. Después de la operación de carga, el contenido del acumulador B será _ _ (8 bits). Solución: Acudir al problema ejemplo de la Figura 10.19. El contenido de la posición de la memoria de datos 0041 H de la Figura 10.24 se cargará en el acumulador B. Después de la operación de carga, el contenido del acumulador B será 11110000. La posición de la memoria de datos se calculó sumando el contenido del registro índice al desplazamiento (0030 + 11 = 0041 H). ,. " - http://librosysolucionarios.net EL MICROPROCESADOR MOTOROLA 6800 Memoria de datos Registro índice 0004 E6H 0005 00010001 0041 11110000 0042 0000 1000 0043 11000011 0000 0000 00 11 0000 Figura 10.24. 10.37. moriade de la !ido del noria de iecarga, : calculó Acudir a la Figura 10.25. La condición de bifurcación es _ _ (falsa, cierta) en este problema. Solución: Acudir a la Figura 10.4 para la posición del señalizador de arrastre (e). La condición de bifurcación (bifurcar si arrastre está a O) es cierta en este problema. Por tanto, el procesador saltará a una nueva posición. «car­ lendido» I Después de la operacl6n Antes de la operad6n Código de operación rtes )n Acumulador B Acumulador B Memoria de programa 375 10.38. Acudir a la Figura 10.25. El desplazamiento de la memoria de programa comienza con un ___ (O, 1); por tanto, el microprocesador 6800 bifurcará hacia ___ (atrás, ade­ lante). Solución: El desplazamiento de la memoria de programa en la Figura 10.25 comienza con O; por tanto, el microprocesador 6800 bifurcará hacia adelante. Después de la operación Contador de programa (Pe) r-.....lII...--ry_ _ _--, 0000 0000 000 1 10 10 Contador de programa Memoria de programa Figura 10.25. http://librosysolucionarios.net 376 10.39. 1: FUNDAMENTOS DE LOS MICROPROCESADORES Acudir a la Figura 10.25. El contenido del contador de programa después de la opera­ ción de bifurcación será _ _ (hex) o _ _ (binario). Solución: Ver el problema ejemplo de la Figura 10.20. El contenido del contador de programa después de la operación de bifurcar será 00 1EH O 0000 0000 0001 11102, Esto se calcula utilizando la fórmula (pe + 2) + desplazamiento = nueva dirección. 10.5. REPERTORIO DE 'rNSTRUcaONES DEL 6800 : El microprocesador Motorola 6800 se utiliza en computadoras de programa almacenado. Las instrucciones del programa se almacenan como bytes de 8 bits en un área de almacenamiento denominada memoria del programa. La MPU del 6800 utiliza instrucciones de 1, 2 Y 3 bytes. El primer byte de la instrucción es siempre el código de op (código de operación), que especifica una de las 197 posibles instrucciones que puede realizar la MPU 6800. Como en la mayoría de los microprocesadores de propósito general, el repertorio de instrucciones está fijado permanente­ mente en el diseño de la pastilla 6800. Motorola agrupa las instrucciones del microprocesador 6800 en los siguientes grupos: . j ,) c¡ ¡ '1 , i' , ,"1 MI ,'¡ '. i'j ", ~ i ,¡ '1 ;'1 l. Instrucciones de acumulador y memoria. 2. Instrucciones del registro índice y puntero de pila. 3. Instrucciones de bifurcación y salto. 4. Instrucciones del registro de códigos de condición. Cada uno de estos grupos será cubierto con mayor detalle en secciones posteriores de este mismo capítulo. Un resumen del repertorio de instrucciones de la MPU 6800 se detalla en la Figura 10.26. Este es un listado alfabético por nemotécnicos. Los nemotécnicos de Motorola se utilizan para los 197 códigos de op únicos. Los códigos de op están representados en notación hexadecimal en este resumen. También se da una breve descripción para cada uno de los nemotécnicos del 6800. De forma distinta a los procesadores genérico y 8080/8085, la MPU 6800 no utiliza un nemotécnico único para cada código de op. Algunos nemotécnicos tienen cuatro posibles códigos de op, dependiendo de los modos de direccionamiento. A causa de esto, en la Figura 10.26 se da tam­ bién el modo de direccionamiento para cada una de las instrucciones del 6800. Considerar la primera instrucción de la Figura 10.26. La instrucción «sumar el acumulador B al acumulador A» utiliza el nemotécnico ABA y un código de op hexadecimal de l BH. De acuerdo con la Figura 10.26, utiliza direccionamiento inherente. La operación de la instrucción ABA se resume como Sumar A a B~A Esto significa sumar el acumulador A al acumulador B y el resultado se deposita en el acumula­ dor A. El resumen del repertorio de instrucciones del 6800 de la Figura 10.26 no da detalles sobre sefializadores, ciclos de reloj o número de bytes de memoria utilizados por cada instrucción. Sin embargo, da al programador una rápida visión general de las operaciones disponibles al utilizar el microprocesador Motorola 6800. http://librosysolucionarios.net -­ 27 , ' , EL MICROPROCESADOR MOTOROLA 6800 ¡ de la opera- I Nemotécnico ABA grama después a utilizando la AOCA ADCB tacenado. Las lacenamiento ~ y 3 bytes. El especifica una la: oria de los I permanente­ ADDA ADDB A ANDA ~pos: ANDB ASL - de este mismo ara 10.26. Este 11 ASRA ASRB BCC BCS BEQ BGE BGT BHI ~mal en este s del 6800. De l nemotécnico roigos de op, 26 se da tamICUmulador B 1 ASLA ASLB ASR para los 197 1 de lBH. De la instrucción B BIT A BIT B ID el acumula- I detalles sobre astrucción. Sin es al utilizar el BLE BLS Código de Modo de operación ! direcciona­ (hex) . miento lB Inherente 89 Inmediato 99 Directo A9 Indexado B9 Extendido C9 Inmediato D9 Directo E9 Indexado F9 Extendido 8B Inmediato 9B Directo AB Indexado BB Extendido CB Inmediato Directo DB EB Indexado Extendido FB 84 Inmediato 94 Directo A4 Indexado Extendido B4 Inmediato C4 Directo D4 E4 Indexado F4 Extendido Indexado 68 Extendido 78 48 Inherente Inherente 58 67 Indexado 77 Extendido 47 Inherente 57 Inherente 24 Relativo 25 Relativo 27 Relativo Relativo 2C Relativo 2E 22 Relativo Inmediato 85 95 Directo A5 Indexado B5 Extendido C5 Inmediato Directo D5 E5 Indexado F5 Extendido Relativo 2F 23 Relativo Descripción Suma A a B .... A Suma A a M con arrastre -. A Suma B a M con arrastre .... B Suma A aM-.A Suma Ba M-.B AND de A con M .... A ANDde Bcon M_B Desplazamiento aritmético de M a la izquierda con el arrastre Desplazamiento aritmético de A a la izquierda con el arrastre Desplazamiento aritmético de B a la izquierda con el arrastre Desplazamiento aritmético de M a la derecha con el arrastre Desplazamiento aritmético de A a la derecha con el arrastre Desplazamiento aritmético de B a la derecha con el arrastre Si señalizador e = O, entonces bifurca Si señalizador e ~ 1, entonces bifurca Si señalizador Z ~ l. entonces bifurca Si número en complemento a 2 ;;. O, entonces bifurca Si número en complemento a 2 > O, entonces bifurca Si minuendo> sustraendo, entonces bifurca AND de A con M, seftalizadores afectados (A y M no cambian) AND de B con M, señalizadores afectados (B y M no cambian) Si el número en complemento a 2 ~ O. entonces bifurca Si sustraendo ~ minuendo, entonces bifurca Figura 10.26. Resumen del repertorio de instrucciones del microprocesador 6800. I & http://librosysolucionarios.net ;$ 377 '~:;:~~í;lll""""""""""""""""""""""""----------------------~--~~~"~ ....~~... 378 FUNDAMENTOS DE LOS MICROPROCESADORES B I Nemotécnico BLT BMI BNE BPL BRA BSR BVC BVS CBA CLC CLI ~ I ! .J{" . C DAA DEC 6A CLR CLRA CLRB CLV CMPA CMPB COM COMA COMB CPX D f 2D 2B 26 2A 20 8D 28 29 11 OC OE 6F 7F 4F 5F OA 81 91 Al BI CI DI El FI 63 73 43 53 8C 9C AC Be 19 I ':,.'.... ' Código de operación (hex) DECA DECB DES DEX EORA E EORB 7A 4A 5A 34 09 88 98 A8 B8 C8 D8 E8 F8 Modo de direccionamiento Relativo Relativo Relativo Relativo Relativo Relativo Relativo Relativo Inherente Inherente Inherente Indexado Extendido Inherente Inherente Inherente Inmediato Directo Indexado Extendido Inmediato Directo Indexado Extendido Indexado Extendido Inherente Inherente Inmediato Directo Indexado Extendido Inherente Indexado Extendido Inherente Inherente Inherente Inherente Inmediato Directo Indexado Extendido Inmediato Directo Indexado Extendido Descripción Si el número en complemento a 2 < O, entonces bifurca Si menos (N - 1), entonces bifurca Si no igual a O (Z = O), entonces bifurca Si más (N = O), entonces bifurca Bifurca siempre Bifurca a subrutina (PC a pila) Si overflow borrado (V = O), entonces bifurca Si overflow a 1 (V = 1), entonces bifurca Compara A con B (A - B) Borra senalizador C Bon;a senalízador 1 J Borra posición de memoria Borra A Borra B Borra senalizador V Compara A con M (A - M) Compara B con M (B L M) Complementa M (complemento a 1) Complementa A (complemento a 1) Complementa B (complemento a 1) Compara registro índice con M (XH/XL) (MjM + 1) Ajuste decimal de A .. (conviene la suma binaria de caracteres de BCD al formato BCD) Decrementa M Decrementa A Decrementa B Decrementa el puntero de pila Decrementa el registro de índice OR exclusiva de A con M .... A OR exclusiva de B con M .... B Figura 10.26. (continuación). http://librosysolucionarios.net R EL MICROPROCESADOR MOTOROLA 6800 LSRA 64 74 44 Modo de direcciona­ miento Indexado Extendido Inherente Inherente Inherente Inherente Indexado Extendido Indexado Extendido Inmediato Directo Indexado Extendido Inmediato Directo Indexado Extendido Inmediato Directo Indexado Extendido Inmediato Directo Indexado Extendido Indexado Extendido Inherente LSRB 54 Inherente 60 70 40 50 01 8A 9A AA BA CA DA EA FA 36 37 32 33 69 79 Indexado Extendido Inherente Nemotécnico INC INCA INCB INS INX I JMP J JSR LDAA LDAB LDS L Código de operación (hex) LDX 6C 7C 4C 5C 31 08 6E 7E AD BD 86 96 A6 B6 C6 D6 E6 F6 8E 9E AE BE CE DE EE FE I LSR NEG N ) al formato BCD) NEGA NEGB NOP ORA A O ORAB P PSHA PSHB PULA PULB R ROL Descripción Incrementa M Incrementa A Incrementa B Incrementa el puntero de pila Incrementa el registro de índice Salta a dirección Salta a subrutina (pe en pila) Carga Men A Carga Men B Carga M en SP. M -. SPH • (M + 1) -,XL Carga M en registro índice, M -. X H • (M + 1) -+XL Desplazamiento lógico de M a la derecha en arrastre Desplazamiento lógico de A a la derecha en arrastre Desplazamiento lógico de B a la derecha en arrastre Complemento a 2 de M -+M Complemento a 2 de A -+ A lemento Inher~ Inhere Inmediato Directo Indexado Extendido Inmediato Directo Indexado Extendido Inherente Inherente Inherente Inherente Indexado Extendido 379 a 2 de B -+ B peración (se utilizan 2 -ciclos) OR de A con M -+ A OR de Bcon M-+B ¡:I', Introduce A en la pila Introduce B en la pila Saca A de la pila Saca B de la pila Figura 10.28. izquierda por medio del acarreo (continuación). http://librosysolucionarios.net ~ ~ \ , 380 R FUNDAMENTOS DE LOS MICROPROCESADORES Nemotécnico Código de operación (hex) Modo de direccionamiento ROLA 49 Inherente Rota A a la izquierda por medio del acarreo ROLB 59 Inherente Rota B a la izquierda por medio del acarreo ROR Indexado Extendido Inherente Rota M a la derecha por medio del acarreo RORA 66 76 46 RORB 56 Inherente Rota B a la derecha por medio del acarreo RTI 3B Inherente RfS SBA 39 10 82 92 A2 B2 C2 D2 E2 F2 OD OF OB 97 A7 B7 D7 E7 F7 9F AF BF DF EF FF 80 90 AO Inherente Inherente Inmediato Directo Indexado Extendido Inmediato Directo Indexado Extendido Inherente Inherente Inherente Directo Indexado Extendido Directo Indexado Extendido Directo Indexado Extendido Directo Indexado Extendido Inmediato Directo Indexado Extendido Inmediato Directo Indexado Extendido Inherente Inherente Inherente Inherente Inherente Indexado Extendido Vuelve de la interrupción (los señalizadores A, B, X, PC son sacados de la pila) Vuelve de la subrutina (PC es sacado de la pila) Resta B de A _ A SBCA SBCB SEC SEI SEV STA A S STAB STS STX SUBA BO CO DO EO SUBB FO T SWI TAB TAP TBA TPA TST 3F 16 - 06 17 07 6D 7D Descripción T Rota A a la derecha por medio del acarreo Resta M de A con arrastre (A - M - M) 1 10.40. Resta M de B con arrastre (B ­ M - C -+B) Pone seftalizador e en 1 Coloca la bandera len l (coloca la mascarilla de interrupción Pone seflalizador V en 1 Almacena A en M 10.41. Almacena B en M J Almacena SP en M, SPH-+ M, SPL ...;,(M + 1) Almacena X en M, X H­ M. Xt...;,(M + 1) Resta M de A-+A 10.41. Resta M de B_ B Interrupción software Transfiere A a B Transfiere A al CCR del procesador Transfiere B a A Transfiere CCR del procesador a A Test de M por (M) ­ 00, (los señalizadores N y Z se ponen a 1 Ó O) Figura 10.26. (continuaci6n). http://librosysolucionarios.net 1 10.43. EL MICROPROCESADOR MOTOROLA 6800 , Nemotécnico T W i Código de operación (hex) Modo de direcciona­ miento TSTA 40 Inherente TSTB SO Inherente TSX TXS 30 35 Inherente Inherente WAI 3E Inherente 381 Descripción Test de B por (B) 00, (los señalizadores N y Z se ponen a I ó O) Test de A por (A) ­ 00, (los señalizadores N y Z se ponen a 1 Ó O) Transfiere SP + 1 ~X Transfiere X - I ~SP Espera interrupción (pe /, Z, B, CCR son introducidos en la pila) X. PC Figura 10.26. {continuaci6n}. PROBLEMAS RESUELTOS ~ ~ ..... 10.40. I Solución: Motorola subdivide las instrucciones del microprocesador 6800 en instrucciones de acumula­ dor y memoria, instrucciones de registro índice y puntero de pila, instrucciones de salto y bifurca­ ción e instrucciones de registro de códigos de condición. lIterrupción t. 10.41. r ! ~ Acudir a la Figura 10.26. La instrucción ADDA puede ser utilizada en uno de _ _ (número) modos de direccionamiento. La instrucción ADD A suma el contenido del acumulador ___ (A, B) al contenido de una posición _ _ . El resultado se coloca en ______ . Solución: La instrucción ADD A listada en la Figura 10.26 puede ser utilizada en uno de cuatro modos de direccionamiento. La instrucción ADD A suma el contenido del acumulador A al contenido de una posición de memoria. El resultado se coloca en el acumulador A. J 10.42. Acudir a la Figura 10.27. El código de op para la instrucción ADD B del 6800 utilizado en este ejemplo es ___ (hex). Este código de op especifica que la instrucción «suma B a M» utiliza el modo de direccionamiento ___ . Solución: Ver la instrucción ADD B en la Figura 10.26. El código de op para la instrucción ADD B del 6800 utilizado en el ejemplo de la Figura 10.27 es DBH. Este código de op especifica que la instrucción «suma B a M) utiliza el modo de direccionamiento directo. t , Motorola subdivide las instrucciones del microprocesador 6800 ert cuatro grupos. Lis­ tados. 10.43. Acudir a la Figura 10.27. El contenido del acumulador B después de la operación de sumar será Solución: La suma binaria 0000 1111 + 00000oo l = 000 l 0000. Por tanto el contenido del acumulador B despuéS de la operación de suma de la Figura 10.27 será 00010000 2, http://librosysolucionarios.net .\ i 382 FUNDAMENTOS DE LOS MICROPROCESADORES Acumulador B Acumulador B Después de la operación AIItes de la operación 0006 DBH Memoria de programa Memoria de datos Figura 10.27. • 10.44. U Acudir a la Figura 10.28. La operación de borrado en este ejemplo utiliza el código de op _ _ (hex). Esta instrucción utiliza el modo de direccionamiento _ _ . Solución: Ver la instrucción CLR de la Figura 10.26. La operación de borrado mostrada en la Figu­ ra 10.28 utiliza el código de op 7FH. Esta instrucción utiliza el modo de direccionamiento exten­ dido. 10.45. Acudir a la Figura 10.28. Listar el contenido de las posiciones de la memoria de datos 0080H, 0081H Y0082H despUés de la operación de borrado. Solución: El contenido de las posiciones de la de la operación de borrado son: Posición de memoria 0080 = 11111111 Posición de memoria 0081 = 00000000 Posición de memoria 0082 = 00001111 memoria de datos mostradas en hi Figura 10.28 después (no cambia) (borrada) (no cambia) Código de operación '.~ Memoria de programa 00\0 7FH 0011 00000000 byte superior 0012 10000001 byte inferior ,t 1 "'~ .~ ; Desp. de la operad4n Aates de la operadcSll ~ 11..6. Memoria de datos 0080 1111 1111 0081 00110011 0082 0000 1111 I 1 Figura 10.28. http://librosysolucionarios.net ? 0080 ? 0081 ? 0082 Memoria de datos Eire! está J bade ~ J I D'luJador B EL MICROPROCESADoR MOTOROLA 6800 10.46. la operación 383 Acudir a la Figura 10.29. El código de op para la instrucción DEC en este problema es _ _ (hex). La operación «decrementar M» utilizada en este problema emplea el modo de direccionamiento ___ . Solución: Ver la instrucción DEC de la Figura 10.26. El código de op para la instrucción DEC utilizada en la Figura 10.29 es 6AH. La operación ((decrementar M» utilizada en este problema emplea el modo de direccionamiento indexado. Código de operación ·'~moria de programa l·el código de _. l en la Figu­ mento exten­ Después de la operaciÓD Antes de la operaciÓD Memoria de datos OOF3 OOF4 OOF5 OOF6 ~ 11111111 ? 11111111 ? 1111 1111 ? 1111 1111 ? OOF3 OOF4 OOF5 OOF6 Memoria de datos ria de datos Registro de índice 0000 0000 1111 00 11 Figura 10.29. 0.28 después 10.47. Acudir a la Figura 10.29. Listar el contenido de las posiciones de la memoria de datos OOF3H, OOF4H, OOF5H YOOF6H después de la operación «decrementar M». Solución: Al utilizar el direccionamiento indexado, la nueva dirección a la que se apunta en la memoria de datos es OOF3 + 3 - OOF6H. Por tanto, el contenido de las posiciones de la memoria de datos después de la operación «decrementar M» será: Posición de memoria OOF3 11111111 (no cambia) Posición de memoria OOF4 = 11111111 (no cambia) Posición de memoria OOF5 = 11111111 (no cambia) Posición de memoria OOF6 - 11111110 (decrementadas) 10.6. INSTRUCCIONES DE MEMORIA Y ACUMULADOR DEL 6800 .cemoria de latos El resumen de las instrucciones de memoria y acumulador del microprocesador 6800 de Motor~la está reproducido en la Figura 10.30. Estas incluyen las instrucciones aritméticas, lógicas, de prue­ ba de datos y de transferencia de datos. Considerar la primera operación listada en la Figura 10.30. La operación de suma regular puede ser realizada bien en el acumulador A o en el B. Por tanto, se listan dos nemotécnicos para \ http://librosysolucionarios.net ••• \ 384 ~ I '¡ ?-; FUNDAMENTOS DE LOS MICROPROCESADORES - INMEDIATO ~ - AOOA 88 Aooa ABA ca Sum."-" Suma con arrastre AOCA es 2 ADCI ANOA ANOI a'TA BiTa CLA CtRA CLAa CM'A CM'" CeA COM COilA COM8 NEG NEGA NEGB DAA ...C9CI 1 ANO Test di bit lIon'a CompIrI Compo,,_ Compilmlntl • I Com¡;e"-a2 ¡Negar) -- I\¡uII1I-'A c.va­ OR._ """"""".. _ E,~ OtspIaztmientO drQIIt ata ¡zQ\ll&f'da - 1loopII''''''''O_.'' Delpl&zamilnto. la ilquierda arltJMtiCO OtspIazam18f1to 8 la . . cM, IritméhCO -- a 11 dere- .... lógiCO -"""- A001l"""- Tr_""'_ ,.Cero._ 2 2 2 2 2 2 11 2 CI 2 INDllADO - EITEIIDIDO O, OP 2 Al Ea S S DIRECTO OP - 2 58 08 3 3 ; z ; z 1 A9 I 2 89 ¡ ¡ 2 FI 2 95 2 01 ¡ 1 2 ES 2 M 2 e. 2 Al 2 ES a. 2 11 2 01 . .. ca • 2 2 2 ti 2 lA 2 CA 2 2 II 2 fl 3 J 1 J 2 2 O. 1 H A.M.C 8·M.C"'8 A' M-A 4 J J 1 2 1J I J 2 Al 5 2 3 3 1 IJ 1 E' IC 2 Al 2 El 2 AA 2 EA I 1 lA 2 '. I •• •• • • . •• .. • 2 2 fl 1 1C S S S 2 2 FI S 2 fA 2 lA I I •• • • ASR .. SUBe SBA ca saCA S8ca TAl TIA n C2 11 01 • 1 2 9Q 2 DO 4 1 1 2 2 2 12 2 DI 1 3 2 7t 10 lO 11 2 2 .. le 1 I 11 • ¡ 1 2 l. I 3 ti I 2 11 I 5 I 1 1 1 4 l S 10 1 15T Código do _ _ {1le'IIdecimaI): _ do cídOS do,. MPU: Numero de bytes de program&; Más8littnitiéo: ~ do la posIdón ......1Ida por 01_ do pII; l 2 10 4 '3 • -­ 1 1 2 2 2 2 2 1 1 1 1 1 , l 'A 1-1 00 00 - A-A 00 - a-8la ...... _ _ do CclrMorIo M-. car_ Jl ••• • 1 51 2 J 1 1 B 2 2 I SI I 1 I . . .. 51 2 41 51 I 2 .. ,. 2 2 I I 1 1 1 1 ¡ 2 I I 1 3'40 10 I 1 2 1 11 n 1 16 11 =} c::a - iJiiitID:l C I boQeInI lit - c:x::t:=-O =}CCmñm - o :} - e 0e 1 110 bl " t lit 0-=-0 .1 A-M e-M .. -M-A e M-, A B-A A M~t-A 8-M e-e A-a S-A M-DI .. - 00 1-00 I ! ! ! I o o • • R R R ! ! I I ! I R S I R S t ! ! I • o ! ! • o. o ! 1 ] •• •• ¡O• 1 • I • IR. • o I IR. I I R 1 R ~} LiJe - CJIlIIlIlOJ bl lO 8 o o ! ! ! •o.o I o. ! •• •• •• • • II ••I 8 +"-8 A'Msr,SP-I-$I' 8'Msp,Sp-I-sr sr-, "$I',Msp-A sr·l--SP,Msp--.B 1 , 1 I A+M-A 1 1 I • 1 ¡ 1 I • ! ! ! 1 o ! I ¡ ! o I ! ! I o ! ! I ! ! R ! I R •o o. ! R o o 1 1 R R S • • A • o R S R R • • R S o • 1 1 I o • 1 ! ! •e • o ! ¡ • o I 1 I o t ¡ R o. I • I II ti ,tI .... M A t l-A B +1 - 8 1 5 • J 1 I K I N Z V •• BCD._BCD M 1-11 A l -~A I I-a AE!'lIl-A a$M-I AND_: • 00-.._; CA exclusm: • . M-A .. '8 JI 11 2 El Leyenda: i 2 31 • TSTA .... 2 J J 1 I Bl 2 Fl 1 3 & 2 A2 5 1 DE CONIlICION •• 00 -A 00 -a A M a-II A,a l !I S S I 53 SC I Fl 2 lO 2 fO 1 2 11 SA 1 I 2 1 J ~A 11-11 54 TST' OP I1 J J J B ·A OO-M J 2 11 Al 2 El 2 AS 1 EO ,,* a' M ·a A'M a·M 4f SF 1 I ", .. M-A I J J I . ASIlA ASRI LSR LSRA LSRI STAA STAI SUlA 2 , 2 J J J J ~ B'" M +8 la 31 1 " • 5 5 2 la (1'_ .................. 4 2 1I 2 fl 1 ­ J 3 2 Al 2 El 2 M 2 f4 .. .... lII'IJCI!l) = O, •• 2 lI'i 2 f5 2 /F 1 2 Da 1 2 9A J 2 OA 1 - S S I I S 1 lA EDRA EORa 'NC INCA INca LDAA LOA' ORAA ORAa !'$HA !'$HI PULA 'UL8 ROL ROLA ROU ROA RORA RORe ASL ASLA ASLI ; 2 99 1 O, 2 94 2 O. lO OEta I~ T.. IS cs DEC DeCA 00_ I O, Suma DtspJaI~O _ 1EGlS11IO DI CODIOOS OI'I!AACIOIIIIQOI.!ANAIAAIl'1IETlCA lit • http://librosysolucionarios.net ..... opliDi mmed operac .. bajo La •• ra 10.3 memO! comoi ·. l..~ • •• • • • 1 • •• • •• • •• • •• • •• • •• • ••11• ••1 •• 1 I I • • II II II ••I I I •• • • II II II •• I 1 I •• I 1 I ·. ··• ..• ·•• .•• ·.• ···... •• •o II •• I I I I I • • R • • R I I I : I • • R I ! ! R • • I 1 II I I I I I I I I Las I 1 •I •I ....... I I I 1 1 I I I I I R • I 1 R • I I R R I I R R • o I I R R Mil l fII ~delt. O 00 8yIo • V C BíI._ Trantllrir a; CIfO: Figura 10.30. Instrucciones del acumulador V memoria. (Cortesfa de Motoro/a, /nc.) I la. rcdizI ..... 1 un - 1I t11111 '11i EL MICROPROCESAOOR MOTOROLA 6800 ......... c6dIgot ... - H I H Z V M._.... _ "" ........... c6dIgot ... ­ (SeCOlOc:aoibilt<"_"_'_IlOmI . . . . ...,.¡ Arrastre intennedio del bit 3 ,,_.000000Il0? Test: ¿lest*1do. 100000001 Test . Test, _ _ doIcatá<terSCDmaalignilícalivo .. -.orque9'l ~ Hega"", lb<! do tigno¡ c..o!byt'l Overtlow, _ _ .1 ¡Ho_li"-.,) e A s ®(IlíII1/) @(Bít1/) Reincalii8ción S8T'IPI't @(Ba1/) Pone a 1 siempre _ _a Tts1 Ij pooe a 1 si es 'tefdIdIro. boml de • HoaftcladO f Arrastre del bit 7 385 Test. ,opnneb-l0000000 antM da JI efecución? T.". íguII"_ Tnt f..operando.0l1H111 antesdelB~? coloca do H tl>des¡¡uiS do que hI_.........-.10 Figura 10.30. Instrucciones del acumulador V memoria (continuación). 1 .",. t la operación de suma. Son ADD A Y ADD B. Observar que la operación ADD A puede ser realizada utilizando direccionamiento inmediato, directo, indexado o extendido. El código de op para la instrucción ADD A inmediato será 8BH, mientras que ADD A directo utiliza el código de op único de 9BH, etc. También se puede determinar de la Figura 10.30 que la operación ADD A inmediato se especifica con una instrucción de 2 bytes (notar el 2 bajo el signo #). Además, la operación ADD A inmediato utiliza dos ciclos de reloj, o máquina, para su ejecución (observar el 2 bajo el signo - ). La operación simbólica de la instrucción ADD A aparece como A + M -+ A en la Figu­ ra 10.30. Esto significa que el contenido del acumulador A se suma al contenido de la posición de memoria M. El resultado de la operación (la suma en este caso) se coloca en el acumulador A, como indica la flecha. Las columnas derecha de la Figura 10.30 indican que los señalizado res H. N, Z, V y e son afectados por la operación ADD A. Sin embargo, el señalizador 1 no está afectado por esta ins­ trucción. Una leyenda y notas especiales están colocadas al final de la tabla de la Figura 10.30 para explicar muchos de los símbolos. PROBLEMAS RESUELTOS 10.48. Acudir a la Figura 10.30. La instrucción LDA B transfiere el contenido de una posición de ___ al acumulador ___ . Los señalizadores ___ , ___ y ___ son afec­ tados por la operación LDA B. Solución: Ver la instrucción LOA B de la Figura 10.30. La instrucción LOA B transfiere el contenido de una posición de memoria (M) al acumulador B. Los señalizadores N, Z y V son afectados por la operación LDA B. El señalizador V está siempre en reinicialización (ver la R de la Figura 10,30) por la operación LDA B. 10.49. Acudir a la Figura 10.31. La instrucción LDA B de 3 bytes utilizada en este problema tiene el código de op ___ (hex). Esta instrucción utiliza direccionamiento ___ . Solución: Ver la instrucción LOA B en la Figura 10.30. La instrucción LOA B utilizada en la Figu­ ra 10.31 tiene el código de op F6H. Esta instrucción utiliza direccionamiento extendido. http://librosysolucionarios.net .~.~. ~ s •• ------------~,~\~""~~v,~ .......... C!_ ._ ._ ._!!!".· , I • 386 FUNDAMENTOS DE LOS MICROPROCESADORES Código de operación Memoria de programa 0000 ? 0001 0000 0001 Memoria d 0002 ? Acum u1ador B Desp. de la operación Antes de la operación Registro de códigos de condición "-_ _ _-' Memoria de datos OIFO 1111 0000 OIFI 00000000 0lF2 1111 0001 Acumulador B Registro de códigos de condición 1 ~• Figura 10.31. • I 10.50. Acudir a la Figura 10.31. El contenido del acumulador B despuéS de la operación de carga será _ _ (8 bits). • ILSC. Solución: ¡~ . . '. El direccionamiento extendido se utiliza en la instrucción LDA B de la Figura 10.31, Que significa Que el dato en el acumulador B de la posición OIFIH de la memoria de datos será copiado. Por tanto, el contenido del acumulador después de la operación de carga será 00000000. "q ¡i .r !: 10.51. , } 1 Acudir a la Figura 10.31. El contenido del registro de códigos de condición después de la operación de carga será _ _ (8 bits). Solución: Ver la instrucción LDA B en la Figura 10.30. El contenido del registro de códigos de condi­ ción después de la operación de carga de la Figura 10.31 será 11010101. Solamente los señaliza­ dores N y Z han sido cambiados durante la operación de carga. , ass. 1 .J I • 1 Aa 10.52. Acudir a la Figura 10.32. La instrucción «almacenar acumulador A» utilizada en este problema utiliza direccionamiento ___ . Solución: Ver la instrucción STA A de la Figura 10.30. El código de 01' A7H utilizado en la Figura 10.32 representa la instrucción «almacenar acumulador A» y utiliza direccionamiento indexado. 10.53. Acudir a la Figura 10.32. El contenido de la posición de la memoria de datos _ _ (hex) será _ _ (8 bits) después de la operación de almacenar. http://librosysolucionarios.net ::: Ji !! :151=' ii! EL MICROPROCESAOOR MOTOROLA 6800 387 Código de operación Memoria de programa 0003 A7H 0004 00010000 IJ Acumulador A ? Acumulador A Después de la operación Registro de códigos de condición '--_ _ _-1 le códigos ón _....L..._?-..!l Registro índice '--_? Memoria de datos Contenido Dirección Figura 10.32. Solución: Ver la instrucción STA A de la Figura 10.30. La posición de la memoria de datos se cakula sumando el contenido del registro índice al desplazamiento (0080 + 10 '" 0090H en este ejemplo). Por tanto, el contenido de la memoria de datos 0090H será 00000000 después de la operación de almacenar, en la Figura 10.32. Jeración de 10.54. ~. carga será ~despUés de "s de condi­ los señaliza­ Acudir a la Figura 10.32. El contenido del registro de códigos de condición después de la operación de almacenar será ___ (8 bits). Solución: Los señalizadores N. Z y V son afectados por la operación STA A de acuerdo con la tabla de la Figura 10.30. El contenido del registro de códigos de condición después de la operación de alma­ cenar de la Figura 10.32 será 11000100. a 10.31, que le datos será ~ Registro de códigos de condición ? 10.55. Acudir a la Figura 10.33. El código de op para la instrucción TST A es _ _ (hex). Esta instrucción «examinar A» utiliza direccionamiento ___ . Solución: Ver la instrucción TST A de la Figura 10.30. El código de op para la instrucción TST A es 4DH. Esta instrucción «examinar A» utiliza direccionamiento inherente, o implícito. Acumulador A Acumulador A ada en este Figura 10.32 !exado. Registro de códigos de condición .....- - - - , Registro de Códigos de condición f atos _ __ Figura 10.33. http://librosysolucionarios.net t. 388 10.56. FUNDAMENTOS DE LOS MICROPROCESADORES Acudir a la Figura 10.33. El contenido del acumulador A después de la operación TST A será _ _ (8 bits). Solución: La operación de examinar no cambia el valor del acumulador A. Por tanto, el contenido del acumulador A en la Figura 10.33 después de la operación TST A será 10000001. 10.57. Acudir a la Figura 10.33. El contenido del registro de códigos de condición después de la operación TST A será _ _ (8 bits). Solución: De acuerdo con la Figura 10.33, solamente los señalizadores N, Z, Vy e están afectados por la instrucción TST A. El contenido del registro de códigos de condición después de la operación TST A será 11001000. Los señaIizadores V y son siempre puestos a O por esta operación. El señalizador N se pondrá a 1, indicando que el acumulador A contiene un número negativo. El señalizador Z estará a O, indicando que el acumulador A no contiene cero. e Considera Figura 10.34. direccionamit son, esencialr tros. El señal posterior. ~ bifurcaciones AC1I 10.58. dec SaII I dira 10.7. INSTRUCCIONES DEL PUNTERO DE PILA Y REGISTRO INDICE DEL 6800 El siguiente grupo de las operaciones del microprocesador 6800 son las instrucciones del puntero de pila y registro lndice, detalladas en la Figura 10.34. Estas incluyen las instrucciones de incre­ mentar y decrementar, cargar y almacenar y transferencia utilizadas con el registro índice y puntero de pila. Recordar que el registro índice, de 16 bits, del 6800 se utiliza cuando se ejecutan las instrucciones en el modo de direccionamiento indexado. El puntero de pila de 16 bits se utiliza para localizar el tope de la pila de la RAM. Memoria de prOl! .".- -41 Registro . .j II!GISTIIO DI! CODIGOS DE CONDICIOM MODOS DI! DlRECCIOIWIIENTO OPERACIONES DEL PUNTERO INMEDIATO NIIIIIOTECNICO . O' Compara Aeg, InóIce Decrementa Reg, Indico Decrtlm8ll!a Pun!. de pila CPl( OEX OES Incrementa Reg, Indi<:. Incrementa Punl. de pila Carga Rag, Indico Carga Funl. de pila Almacena Re¡¡, IOOice Almacena PuOl, de pila Reg. IOOice ... Punt de pila Funl de pila ... Re¡¡, IOOí"" INI( INS IC - It O, J J 9C -.. EXTEHOIOO O, - ti O, ~ JI 2 AC 6 1 !lC S J It I/IIPUCrTO O, 09 34 LOX CE LOS BE STX STS TXS TSX IIIDI!XAOO DIRECTO 3 3 J 3 DE SE DF 9f 4 4 ~ ~ 2 EE 2 Al 2 H 2 Af 6 6 1 1 2 fe 5 2 BE 5 2 fF: 6 2 Bf )6 1 4 4 08 . 31 4 3 J 3 J 35 30 ti 1 1 1 1 •, 4 I OPERACION IIODt.EAHAIARITMETICA )(H - M. XL - 1M X - 1 -X SP 1 -SP + 11 X + l-X SP'l-sp M -XH.IM + n-XL M~ SPH. 1M + 11 - SPL XH ~M. XL -1M. 11 SPH -M. SPL -1M + 11 X - I -SP sP' I -X S .. 3 2 1 H I N Z V •e • • CD l~. ••• 1• • • • • •1 • • ••• •• • • Q)! •••• • • Q): RR •• • • Q)r R • •• • • <1J: R • • • • • • ·1 •••••• (j) (BiI NI Teot: ¿Es bit de Signo del byte más signíficativo IMSI del resuhado. 11 ® (BÍ! V) Test: ¿Rebose de complemento a 2 de la mta de los bytes ms1 <l) (Bit NI Te.I: ¿Resunado menor que cero' 10.59. Aa caq Sob des!! 10.60. Aa cód do,. Sob JaF Figura 10.34. Instrucciones del puntero de pila y registro indice. (Cortes(a de Motorola, Ine.) http://librosysolucionarios.net rod J '. L EL MICROPROCESADOR MOTOROLA 6800 )fración i mido del ! spués de 389 Considerar la instrucción «comparar registro índice» en la primera línea de la tabla de la Figura 10.34. El nemotécnico es CPX. La instrucción CPX puede acceder a memoria utilizando direccionamiento extendido, indexado, directo o inmediato. Las instrucciones de comparación son, esencialmente, operaciones de resta quedando inalteradas las posiciones de memoria y regis­ tros. El sefializador Z está a loa O y puede ser utilizado para una bifurcación condicional posterior. Los sefializadores N y V también son afectados, pero no están pensados para realizar bifurcaciones condicionales después de esta operación. PROBLEMAS RESUELTOS :los por la )peración ración. El gativo. El 10.58. Acudir a la Figura 10.35. La operación LDX mostrada en este ejemplo utiliza un código de op de _ _ (hex). Esta instrucción utiliza direccionamiento _ _ . Solución: La operación LOX de la Figura 10.35 utiliza un código de op de CEH. Esta instrucción utiliza direccionamiento inmediato. ¡ Código de operación , puntero Memoria de programa 0016 (M) 0017 11110000 I (M+ 1) 0018 00000001 de ¡ncre­ índice y ejecutan 6 bits se ? }\ r I Antes de la operación ... Registro índice liT; r¡I . ,(]) , 10.59. ¡ (t • ¡ • • • • •¡ • • •, • • • ••• •'C» 1 R • .:v: A • R . • ••••• • •• .Jl: .1): A • ·.' ~ =============~ Después de la operación =I~~====?====== \ Registro índice Figura 10.35. . IIZ V t .... Acudir a la Figura 10.35. El contenido del registro índice después de la operación de carga será _ _ (hex). Solución: Ver la instrucción LOX de la Figura 10.34. El contenido del registro índice de la Figura 10.35 después de la operación de carga será FOO I H . 10.60. Acudir a la Figura 10.36. La posición de la memoria de programa OOICH contendrá el código de op ___ (hex) para especificar la operación «cargar puntero de pila extendi­ do». Solución: Ver la instrucción LOS en la Figura 10.34. La posición OOICH del programa de memoria de la Figura 10.36 deberá contener el código de op BEH para especificar la operación «cargar punte­ ro de pila extendido». http://librosysolucionarios.net t . , JlllI. 390 RJNDAMENTOS DE LOS MICROPROCESADORES Memoria de programa oolC ? 0010 00000000 oolE 0111 1111 _. ­ • -....­ !!I*oa. _ Después de la operación Antes de la operación Puntero de pila ? iIiu':a 5 111 e !ittr2. ~ :­ Puntero de pila !ft..r::Is !íIu':a "> e 5"_ Memoria de datos oo7F 0000 0001 0080 1111 1111 ­ .......­ """"' .... _........­ . . . . . ""=.*1 ;¡ro~.: Figura 10.36. ;¡ro"'-a' ._.­ --­=swa._ .__ ......... 1-. 1-.. . . . . . 10.61. ~ : Acudir a la Figura 10.36. El contenido del puntero de pila después de la operación de carga será _ _ (hex). ...... Solución: Ver la instrucción LDS de la Figura 10.34. El contenido del puntero de pila después de la operación de carga en la Figura 10.36 será OIFFH. :,' 11.·.·, . ~ 4> .. !.AI ~ 10.8. INSTRUCCIONES DE BIFURCACION y SALTO DEL 6800 , 1 ' WAI Las instrucciones de bifurcación y salto para el microprocesador 6800 están detalladas en la Figura 10.37. Estas instrucciones se utilizan para controlar la transfere!lcia de operaciones de un punto a otro del programa. Observar que todas las operaciones de bifurcación utilizan el modo de direccionamiento relativo. La instrucción de «no operación» (NOP) solamente hace avanzar una unidad el contador de programa y no tiene ningún efecto sobre sefializadores, registros o posicio­ nes de memoria. Considerar la instrucción «saltar a subrutina» (JSR) de la Figura 10.37. La instrucción JSR utiliza direccionamiento indexado o extendido. Detalles de la operación JSR se dan en la Figu­ ra 10.38. Las instrucciones «bifurcar a subrutina» (BSR) tienen la misma función que la opera­ ción JSR. Sin embargo, utiliza direccionamiento relativo. La instrucción «bifurcar a subrutina» también se explica con mayor detalle en la Figura 10.38. Las instrucciones de saltar (JMP) y «volver de subrutina» (RTS) se listan en la tabla de la Figura 10.37. Mayor detalle sobre su funcionamiento se da en la Figura 10.38. La «interrupción software» (SWI) y «espera interrupción» (WAl) están también listadas en la tabla de la Figu­ ra 10.37. De nuevo, se da mayor detalle sobre estas dos instrucciones en el apartado de interrup­ ciones de la Figura 10.38. Finalmente, la instrucción «vuelta de interrupciÓn>) (RTI) se lista y detalla en las Figuras 10.37 y 10.38. La instrucción RTS se utiliza como la última instrucción de una subrutina, mientras que la instrucción RTI realiza el mismo propósito en una rutina de servicio de interrupción. http://librosysolucionarios.net es -:-..:uencia I :0.38. la .l.. Despw _.) hasta , ~). 1;2. Te mi .. So 1Ul. t - TCl cM: . :~. ~ . - "1 4 k! J4$P1ii t 391 EL MICROPROCESADOR MOTOROLA 6800 lIEGISTlIO DE COOIGOll DE CONOICION RELAnYO III!IIO'IEQICO 01' Bifurca $' arrastre a 1 Bifurca si ;# O Bifurca sí ;. O BíflJrC3 sí > O Bllurea " es mayor Brturca SI ~ O Bifurca $l es menor O.: BifurCA sí < O eifurca Si es menos Bifurca si no es • 8 cero Bíl SI overflow a O Brt. SI overflow a 1 Bifurca Si es más Brturea a su~rutina BRA Bee BCS BEQ BGE BGT BHf BlE BlS BU BMI BNE BVe BVS BPl BSR 20 24 25 2i 2C 2E 22 2F 23 20 2B 26 28 29 lA 80 Sal1a JMP Salta • subrutina JSR NOI' RTI RTS OPERACIONeS 8!furcaclOo Bifurca SI arrastre a O ,pila I de la No oporacIOn Vuelta 00 lf1!8!TUpciÓn Vuelta 00 subrutina Inteffupcron solIViare Espora la ,nterrupOOn SWI WAI lOa 4 4 4 4 4 4 4 4 4 4 4 4 4 4 8 O, - ti OP - ti IMPUCITO 01' - 1'RT DE IIIFIIRCACIOII # Ninguno e-o C=l 2 2 2 2 Z-1 2 N@V-O 1 + IN (j V), O C+Z=O Z. (N@VI-' C+Z-l N@V-' N' 1 2 2 2 2 2 2 2 2 2 2 2 l=O V-O V· 1 N-O 6E AO 4 8 2 7E 2 BO 3 9 } 3 3 01 3B 3lI 3F lE 2 lO 5 12 9 1 1 1 I 1 Ver ope.-- aspeciale$ Sólo avanza eI_oI di! programa } Vor ~ especialeS carga el registro 00 códigos 00 condICión de la pila. ¡Yor operaciones especiales). S 4 3 2 1 H I 11 Z V • e • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • --- 0 - ­ • • • • • ~• · . . .l· · ··I®·)1·1·1· • · · •• • Se pone a 1 cuando la ,nterrupción ocurre. Si a.tá Pfeviamenle a 1. se reqUl8,., una interrupcIÓn no enmucIIIIbIII perI-'D di! esIII<Io de 1IIPII1'. Figura 10.37. :io­ 4 ti EXTENDIOO •WAl pone el OOS de direedones RJW y ellIuI de OOIOS en modo 00 1l\1li esIIdOII mienIJ'tI$ YMA ast8 en el .. vel baJO (!) (1.11) (j) (Brt 1) la un de - INDEXADO Instrucciones de bifurcación y salto. (Corres{s de Motora/s. /ne.) WAl es una instrucción utilizada comúnmente. Se utiliza al final de un programa con más frecuencia que la instrucción de alto (HLT) en la MPU 8080/8085. De acuerdo con la Figu­ ra 10.38, la instrucción WAl coloca primero el contenido de los registros del procesador en la pila. Después introduce un ciclo de espera «de no hacer nada». La MPU 6800 continúa en este lazo hasta que el procesador recibe una interrupción hardware (Tl8.2, NXll, REINICIALlZA­ croN). SR gu­ PROBLEMAS RESUELTOS ~ra­ na» 10.62. e la ión igu1lp­ Todas las instrucciones de bifurcación de la MPU 6800 utilizan el modo de direcciona­ miento ___ . Solución: De acuerdo con la Figura lO.37. todas las instrucciones de bifurcación de la MPU 6800 utilizan el modo de direccionamiento relativo. lay 1 de I de 10.63. Todas las operaciones de bifurcación de la MPU 6800 están especificadas con instruc­ ciones de _ _ (número) bytes. El primer byte de la instrucción siempre es _ __ ___ . El segundo byte de la instrucción se denomina _ _ . http://librosysolucionarios.net r ,:';¡. t' :~ yt•....· ~·f,:.· .".;.. \. '. ,.~ ~1·1.'.·.:' ,~ , . ' ,­ 392 r ~ '1 ~ FUNDAMENTOS DE LOS MICROPROCESADORES Solución: De acuerdo con la Figura 10.37, todas las operaciones de bifurcación de la MPU 6800 se especifican con instrucciones de 2 bytes. El primer byte de la instrucción siempre es el código de op. El segundo byte de la instrucción se denomina desplazamiento (offset). ~, ~ ,~ ~ ~ JSR, SALTA ALA SUBRUTINA: PC INDEXADO { sr Programa principal n AD-JSR ntl K· desplazamienlo • n+2 Sí¡. in¡true. principal e> DIDO ¡t, [ SP (nt IlL Pn:crama principal SP Pila ntl SH - du. de la subrutina nt2 SL =dír. de la subrutina 1.a instrue. de la subrutina PC .... sP- 2 BD· ¡SR EXTEN· x+K (n t 2) H (nt2)H y(nx2)l dent2 • K• Valor Sin 5lgno de 8 Ims PC Pila .... SP - 2 SP-) O n+3 SiB. instrue. principal Subrutina la inslruc. de la subrutina SP-I IOt))H SP (ntllL (S se forma con SH ySLI .... -Puntero de pila después de la ejecución BIS. BIFURCA ASUBRUTINA: PC Programa principal SP e> n+1 ntl • K= Valor de signo de 7mIS: Pila ... SP-2 SubrutíDl I'C o+l±K I.a imlrue. de la subrulina SP-I (n +2) H SP (n+2)L 0- 2se formaron (n+ 21H y(n +21L JMP.SALTA: PC PC Programa principal 7E= JMP n 6E.JMP INDEXADO { Pn:cramaprincipal ntl KH = Siguiente dirección n t I K- desplazamiento EXTENDIDO n t 2 Kl • Sí¡. dirección XtK! Siguiente instrucción KI Sil. instrucción RTS. VUELTA DE SUllUTINA: PC sI Figura 10.38. SP Subrutina )9· RTS le> Pila ~rn SPt I (NH .... Spt 2 Nl PC Programa principal n Sig. inslrue. principal Explicación de las operaciones especiales de bifurcación y salto. http://librosysolucionarios.net ~ .,""IIP"1" --------------~ EL MICROPROCESADOR MOTOROLA 6800 lNTEIIRuraoNES: Espera interrupción Programa principal Interrupción softwalt Programa principal ligo de Sig. instme. principal Inltmlpdón hardware o inltmlpción no enmascarable (NMI) I'rogramaprincipal 3E~WAI 3F=SWI D+I 393 n+ 1 Sig. ínstme. principal :;J,." . . , \ Continúa el~pr<wama .J!rincipal 1I Si¡. instruc .n t principal I l;" Pila SP ./ .... SP-7 Contenido de los registros de la pila delaMPU SW[ HDWR INT SP-6 Códi80 de condición sp-s Acumulador B SP-4 SP-l SP-2 SP-I SP Acumulador A FFFB J! ···1.···.···· '.' Rt¡istro índice (XH) Registro índice (XL! I (n+ IlH I (n+I)L ~-------"III>/ WAI Petición de ínltmlpción de hardware Ciclo de espel1l No FFFA FFF8 FFF9 FFFC FFFE FFFD FFFF MS FFF9 Constante, hardware I..S FFFA Software MS ~so FFFB Software FFFC [nstruc. no enmascarable FFFD Instruc. no enmascarable I..S FFFE Reananque i FFFF Remanque "; la dirección de la primera instrucción se forma buscando 2 bytes de la asignación realizada en memoria. f Carga el vector de inltmlpción en el contador de prtl8I1Ima MS Programa de interrupción I..S I.a instruc. de interrup. Nota: MS - byte de dim:ción más sígnílkativo I..S - byte de dirección menos sígnílkauvo 1. Posición de memoria que responde a las direcciones índicadas, ésta debe reservada para los vectores de inltmlpcíón SEr Figura 10.38. ·~ l· . · . .. Asisoación 1de inltmlpción de memoria FFF8 Constante, hardware 7 ·.')" 1····.···. , (continuaci6n). , http://librosysolucionarios.net ,.i 4.1IJ!2::1• •- - - - - - - - -• • •- -..- ...- ...-----~~---.....;~..;.·;.;;:.=.:;!.....,,'!::o:-"'.""t. 394 FUNDAMENTOS DE LOS MICROPROCESADORES R11, VUELTA DE INTERRUPCION: ~ s 11& le> 38_=_RT_I_.....¡ r - 1_ _ PC I SP n Programa principal Sig, ¡nstme. principal SPt I Código de condición SP+2 Acumulador B SP+ 3 Acumulador A SPt4 Registro índice X( H) SPt l Registro índlce (Xd SPt6 NH SPt 7 NL Figura 10.38. 10.64. Pila SP Programa de interrupciÓll i I j I te.6'7. ¡ (continuaci6n),' Acudir a la Figura 10.39. El código de op para la operaClon «bifurca si cero» es _ _ (hex). El contenido de la posición de memoria del programa 0028H es igual _ _ (a la dirección, al desplazamiento), que es _ _ (-, +) 7H. Solución: Ver la instrucción SEQ de la tabla de la Figura 10.37. El código de'op para la operación «bifurca si cero» de la Figura 10.39 es 27H, El contenido de la posición 0028H de la memoria de programa es igual al desplazamiento, que es - 7H, El desplazamiento de - 7H sugiere una bifurca­ ción hacia atrás, 10.65. Acudir a la Figura 10.39. La condición de bifurcación es _ _ (falsa, cierta) en este problema. Solución: La condición de bifurcación para la instrucción SEQ es bifurcar si Z = 1 de acuerdo con la tabla de la Figura 10.37, Por tanto, la condición de bifurcación es cierta en el problema de la Fi­ gura 10.39. Código de Memoria de programa Antes de la operación Después de la operación Contador de , - - - - - - - . . . L . , programa 0000 0000 0010 01 11 Registro de Códigos. ~e condlclon I 1100 0100 L--_ _ _?_,_ _ _.....11 1'.68. Contador de programa I Figura 10.39. t , http://librosysolucionarios.net , "'·! - ('d!!k! i!. ,ÜIJ.ÚLh ¡a~jAJ411 s ... 7 395 EL MICROPROCESAOOR MOTOROLA 6800 10.66. Acudir a la Figura 10.39. El contenido del contador de programa después de la opera­ ción «bifurca si cero» será ___ (hex). g ~ Solución: La condición de bifurcación es verdadera en la Figura 10.39. El desplazamiento -7H dicta una bifurcación hacia atrás. Por tanto, el. contenido del contador de programa después de la operación «bifurca si cero» de la Figura 10.39 será 0022H [(0027 + 2) -7 0022H]. Acudir a la Figura 10.40. La operación de «saltar a subrutina» en este problema está especificada por el código de op _ _ (hex). Esta operación utiliza direccionamien­ to _ _ . 10.67. I Solución: Ver la instrucción JSR de la Figura 10.37. La operación de «saltar a subrutina» de la Figu­ ra 10.40 está especificada por el código de op BDH. Esta operación utiliza direccionamiento ex­ tendido. Código de operación si cero» ( es igual 0006 t 0007 \1emoria de programa operación emona de la bifurca­ 1) en este BDH 00000000 01000000 0009 Memoria de datos 0040 1111 1000 0041 00000000 Pila ! Pila 03FD rdo con la la de la Fí­ Puntero de pila 03FFH Puntero de pila t -_ _t -03FD _ _-l ? 03FE 03FE ? 1-+ '------'------ +- I ? 03FF 03FF Antes de la operaciÓD Después de la operación JSR Contador de programa [ 0000 0000 0000 01 10 I ""'-_ _ _?_ _ _.... Contador de programa Figura 10.40. 10.68. programa Acudir a la Figura 10.40. Listar los contenidos del puntero de pila y las posiciones de la pila 03FEH y 03FFH después de la operación JSR. Solución: Ver los detalles de «JSR extendido» en la Figura 10.38. Después de la operación <<.JSR exten­ dido» mostrada en la Figura 10040, los contenidos son: Puntero de pila = 03FDH Posición de pila 03FEH OOOOOOOO (PCH ) Posición de pila 03FFH = 00001001 (peL ) (PC + 3) http://librosysolucionarios.net t 396 FUNDAMENTOS DE LOS MICROPROCESADORES 10.69. ."". Acudir a la Figura 10.40. El contenido del contador de programa después de la opera­ ción JSR será _ _ (hex). Esta es la dirección de _ _ . Solución: Ver los detalles de «.JSR extendido)) de la Figura 10.38. El contenido del contador de pro­ grama de la Figura 10.40 después de la of)eración JSR será F800H. Esta es la dirección de la subrutina. 10.70. Acudir a la Figura 10.41. El código de op para la instrucción SWI e s _ (hex). SWI significa la operación ______ . Solución: Ver la instrucción SWI de la Figura 10.37. El código de op para la instrucción SWI de la Figura 10.41 es 3FH. SWI significa operación de interrupción software. Código de operación 0013 Memoria de programa 3FH 0014 , Pila Puntero de pila I 03FFH ­ 03F9 ! 03FA 03FB 03FC 03FD 03FE 03FF ? ? ? ? ? ROM FFFA 11111100 FFFB 00000000 .7 ? Antes de la operación ~-, f¡ Registro de códigos de condición 1100 0000 Acumulador B 1111 0000 Acumulador A 0000 1 111 Registro índice 0000 0000 00 11 0000 Contador de programa 0000 0000 000 1 00 11 "'73. Puntero de pila Pila I 03F8 03F9 03FA 03FB 03FC 03FD 03FE 03FF ? I I '------' Figura 10.41. http://librosysolucionarios.net Contador de programa J "1 Después de la operación Registro de códigos '--__ 7 _ - - l . de condición , 10.9. IN DE . ., -as 11IStf'Uc1 ::::luestran e :::anipulacl. .:onvenienC'l das en la F recordando -~ I, 1 opera- #tA4#·\< EL MICROPROCESADOR MOTOROLA' 6800 10.71. 397 Acudir a la Figura 10.41. Listar el contenido del puntero de pila y pila después de la operación de interrupción software. Solución: Después de la operación SWI de la Figura 10.41. el contenido del puntero de pila es 03F8H, y el contenido de la pila es: Ir de pro­ :ión de la Posición de pila (hex) 03F9 03FA 03FB 03FC 03FD 03FE 03FF ~ ex). SWI • SWI de la 10.72. 11000000 11100000 00001111 oooooooo 00110000 00000000 00010100 Contenido (Registro de códigos de condición) (Acumulador B) (Acumulador A) (Registro índice - byte superior) (Registro índice byte inferior) (pe - byte superior) (pe - byte inferior) (pe + 1) Acudir a la Figura 10.41. El contenido del registro de código de condidón después de la operación SWI será (8 bits). , Solución: Ver la secuencia de interrupción software mostrada en la Figura 10.38. El señalizador 1 estará a 1. Por tanto, el contenido del registro de código de condición de la Figura 10.41 después de la operación SWI será 110 10000. 10.73. Acudir a la Figura 10.41. El contenido del contador de programa después de la opera­ ción SWI será (hex). Esta dirección se denomina interrupción software _ _ y se encontró en las posiciones _ _ (hex) y _ _ (hex) de la ROM. Solución: Ver la secuencia de interrupciones software mostradas en la Figura 10.38. El contenido del contador de programa después de la operación SWI será FCooH. Esta dirección es llamada vector de interrupción software y se encuentra en las posiciones FFFAH Y FFFBH de la ROM. Estas son las posiciones estándar para encontrar el vector de interrupción software en un sistema 6800. ndóD ~ de códigos ldíción Ior de programa 10.9. INSTRUCCIONES DEL REGISTRO DE CODIGOS DE CONDICION DEL 6800 Las instrucciones del registro de códigos de condición para el microprocesador Motorola 6800 se muestran en la Figura 1O.42a. Estas instrucciones están disponibles para que el usuario realice manipulaciones directas de los señalizadores del registro de códigos de condición (CCR). Por conveniencia, la posición y nombres de cada uno de los señalizadores en el CCR están reproduci­ das en la Figura 1O.42b. Algunos estudiantes recuerdan el orden de los señalizado res del 6800 recordando las palabras «HINZ Vitamina ü>. http://librosysolucionarios.net , j' ", 398 ruNDAMENTOSDE LOS MICROPROCESADORES REGISTRO DE CODIGOS DE CONDICION OPEIIACIOIIES ~ Borra arru1r8 Borra mase. de internJp. Borra 0Yt<II0w Pone a 1 arrastre Pone a 1 mase. de ilmImJp. Pone overflow Acumulador A... CCR eLe CU CLY SEC SEI SEV fAP TPA CCR ... A o, oc DE OA 00 OF 08 06 01 - # OPERACION lQOI.!AtIA 2 2 2 S 11 H e 1'.-". o-e • 0-1 O-Y I-e 1-1 I-V A-eeR CCR-A 2 2 2 2 2 •s • • (j) (Todos) ponen a 1 según el ~ ecumuladof A. a.oLOS DE CODIGOS DE CONDICIOII LEYENDA OP t Código ele operación (heKadecima~; Número ele ciclos de la MPU; Número ele byies del programa; Más aritmético; Menos aritmético; M.. + ® M OR inclusiva booleana; OR eKdUsi';a Complemento ele M; booteana; Transfiere a: O 00 B~·O Byte. O; AND booleano; ~ de la posición de memoria apuntada por 01 puntero ele pila; H I N Z V C R Reinicialización siempre S Pone al l • (a) Arrastre intermedio del bit 3; Máscara de interrupción; Negativo (M de signo) Cero (byte): Overflow, complemento a 2 Arrastre del bit 7: • SÍeITIpre Test y pone a , s< es verdad. borra ele otra larma No se alecta Instrucciones del registro de código de condición ".-5. Registro de códigos de condición .1.76. ' - - - - Señalízador de arrastre/préstamo ' - - - - - - Señalizador de overflow de complemento a 2 1 '* Señalizador de cero Señalizador negativo 11.77. 1 Señalizador de máscara de interrupción 1 Señalizador de arrastre intermedio (b) ~_1 Señalizadores en el registro de código de condición 11 Figura 10.42. :!! (Cortesfa de Motorola, Inc.). .~ http://librosysolucionarios.net 11111' .*' rt '\ EL MICROPROCESADOR MOTOROLA 6800 399 PROBLEMAS RESUELTOS 10.74. Acudir a la Figura 10.43. La operación T AP transfiere el contenido del acumulador _ _ (A. B) al _ _ _ _ _ _ . Solución: Ver la instrucción TAP de la Figura l0.42a. La operación TAP transfiere el contenido del acumulador A al registro de códigos de condición. Acumulador A Después de la operación Antes de la operación Registro de códi~?S de condlclon I 1100 0000 ? Registro de códigos de condición Figura 10.43. 10.75. Acudir a la Figura 10.43. Listar las condiciones de los seftalizadores del CCR después de la operación TAP. Solución: Las condiciones de los señalizadores después de la operación T AP en la Figura 10.43 son: Sefializador N = O Sefializador V = 1 Señalizador H = O Señalizador Z - l Sefializador e - I Sefializador 1 = 1 10.76. Solución: Ver la Figura 1O.42a. Los nemotécnicos utilizados para poner a I ya O el señalizador de la máscara de interrupción (1) son SEI y CL!. plemento a 2 10.77. lU¡:x:ión s =- Listar los nemotécnicos de las instrucciones que se utilizan para poner a 1 y a O el sei'lalizador de la máscara de interrupción. La instrucción «borrar arrastre» utiliza el nemotécnico _ _ • el código de op _ _ (hex), direccionamiento ___ y _ _ (número) de ciclos de reloj para su ejecución. Pone a _ _ (O, 1) el sei'lalizador de _ _ en el _ _ _ _ _ _ . Solución: Ver la instrucción «borrar arrastre» de la Figura 10.42. La instrucción «borrar arrastre» utiliza el nemotécnico CLC, el código de op OCH y direccionamiento implícito (o inherente) y dos ciclos de reloj para su ejecución. Pone a O el señalizador e en el registro de códigos de condición. http://librosysolucionarios.net -­ 2 •• \ 400 FUNDAMENTOS DE LOS MICROPROCESADORES PROBLEMAS SUPLEMENTARIOS 10.88. Solamente es enmascarable la interrupción hardware _ _ (IRQ, NMI, REINICIALlZACION). Res. IRQ. 10.89. La secuencia de interrupción áe reinicialización detallada en la Figura 10.80 hace que el seil:aliza­ dOT _ _ se ponga a 1, y que el vector de interrupción de reinicialización se encuentre en las posiciones de memoria _ _ (hex) y _ _ (hex). Res. 1, FFFEH, FFFFH. http://librosysolucionarios.net ,...... LI bi ~ .1.J01. Al JI! :~ ~ 'l. • se di EL MICROPROCESADOR MOTOROLA 6800 10.90. 10.91. lalimenta. l realizar la ~ salidas), y Listar los seis modos de direccionamiento utilizados por las instrucciones de la MPU 6800. inherente (o implícito), inmediato, directo, extendido, indexado y relativo. 10.92. En el direccionamiento inmediato, el operando se encuentra en la memoria de _ _ (datos, pro­ grama). Res. programa. 10.93. Las operaciones de direccionamiento directo del microprocesador 6800 se especifican por medio de instrucciones de _ _ (número) bytes. Res. 2. 10.94. Las operaciones de direccionamiento extendido del microprocesador 6800 se especifican por me­ dio de instrucciones de _ _ (número) bytes. ~ , Res. nivel BAJO, l ~ igual que leCiales l N Y 3. 10.95. En el direccionamiento indexado del 6800, la dirección del operando se calcula sumando el valor del _ _ encontrado en el segundo byte de la instrucción al contenido del registro _ _ . Res. desplazamiento, índice. 10.96. En el direccionamiento relativo del 6800, la dirección de destino de la bifurcación se calcula sumando _ _ (número) al contenido del contador de programa y sumando después el valor del _ _ de la memoria del programa. Res. 2, desplazamiento. 10.97. En el direccionamiento relativo, un desplazamiento de 11111100 indica una bifurcación _ _._ (hacia atrás, hacia adelante). Res. hacia atrás (MSB - 1). 10.98. La instrucción ANDA de la Figura 10.26 puede ser utilizada en uno de _ _ (número) modos de direccionamiento. La instrucción AND A realiza la operación AND del contenido de _ _ _ _ con el contenido de una posición _ _ . El resultado de la operación se coloca en _ _ _ _ . le localizada . ROM) está Res, cuatro, acumulador A, de memoria (MJ, acumulador A. (más altas, el señaliza­ uentre en las te De acuerdo con la Figura 10.9, las posiciones de la ROM FFF8H YFFF9H en los sistemas basados en el 6800 están siempre reservadas para el _ _ _ _ _ _ . Res. vector de petición de interrupción (dirección). Res ~ HALTestá 401 10.99. Aunque todas las instrucciones de bifurcación utilizan direccionamiento _ de salto utilizan direccionamiento _ _ y _ _ • Res. relativo, indexado, extendido. • las instrucciones 10.100. La instrucción COM B de la Figura 10.26 hace que el contenido del acumulador _ _ sea cam­ biado a su forma en complemento a _ _ • mientras que la instrucción NEG B hace que el contenido de _ _ _ _ se cambie a su forma en _ _ _ _ . Res. B, 1, acumulador B, complemento a 2. 10.101. Acudir a la Figura 10.44. El código de op para la instrucción ROL A es _ _ (hex). Res. 49H. http://librosysolucionarios.net m • a; 402 FUNDAMENTOS DE LOS MICROPROCESADORES ..... Código de Memoria de programa Acumulador A Acumulador A Después de la operación Registro de códigos de condición Registro de códigos de condición ? ....,. ...... J ti ~ 1 • A Al o .. '. Figura 1 0.44. 10.102. Acudir a la Figura 10.44. El contenido del acumulador A después de la operación ROL A se­ rá _ _ (8 bits). Res. 00000010. S S *1 10.103. Acudir a la Figura 10.44. El contenido del registro de códigos de condición después de la operación ROLA será _ _ \S bitl!o). Res. 1\00001\. 10.104. Acudir a la Pigura 10.45. El código de op para la instrucción SBA _ _ (hex). Esta instrucción de l byte utiliza direccionamiento _ _ . Res. IOH, inherente (o implícito). Código de operación Memoria de programa l' Acumulador A Acumulador A .." . M ~ ~ •• Antes de la operación Re Acumulador B Acumulador B S, DI Registro de códigos de condición ? Registro de códigos de condición Figura 10.45. Re La des Re!. 10.105. Acudir a la Figura 10.45. El contenido del acumulador A después de la operación SBA es _ _ (8 bits). Res. 11111111 (representación de -1 en complemento a 2). http://librosysolucionarios.net "_ip ,;~ :1:1· ".113. Aa Re • EL MICROPROCESADOR MOTOROLA 6800 403 10.106. Acudir a la Figura 10.45. El contenido de CCR después de la operación «restar acumuladores» es. de _ _ (8 bits). Res. 1100 100 1 (cambiados sefializadores N y C). 10.107. La instrucción de «vuelta de subrutina» está especificada por el código de op _ _ (hex) o por el nemotécnico _ _ . Esta instrucción se utiliza al final de todas las Res. 39H, RTS, subrutinas. I 10.108. Acudir a la Figura 10.46. La operación «bifurca si más» está especificada por el código de op 2AH o por el nemotécnico _ _ . La operación de bifurcación utiliza direccionamiento _ _ . Res. BPL, relativo. / I Código de operación ~ ~or de programa 0010 0011 ~ de códigos de condición \r-----, 1 . . . 1_ _ _ ~ Después de la operación . : ntador de programa ? 0000 0000 000 I 0000 Contador de programa Figura 10.46. I 11.109. Acudir a la Figura 10.46. La condición «bifurca si más» es _ _ (falsa, cierta), según los señaliza­ dores de condición. Res. cierta (N - O). .1.110. Acudir a la Figura 10.46. El contenido del contador de programa después de la operación «bifurca si más» _ _ (hex). Res. 0019H [(0010+2)+1=0019H]. ~ L tuno El desplazamiento en la instrucción indexada es un valor _ _ de 8 bits. Sin embargo, el despla­ zamiento en la instrucción relativa es un valor con signo de (número) bits. Res. sin signo, 1. •.112. La instrucción WAl de la Figura 10.38 introduce todos los registros del procesador en la _ _ Y después entra en el ciclo de _ _ . Res. pila, espera. '8.113. Acudir a la Figura 10.41. La instrucción eL! se especifica por el código de op _ _ (hex). Res. OEH. http://librosysolucionarios.net 404 I FUNDAMENTOS DE LOS MICROPROCESADORES Código de operación '~ M.mona '" """""'" Anta d. l. o","""'" . Registro de códigos de condición 1101 ooooil~ ~ CLI 0....... de la """"'" .I.. . . :.--?---. Registro de códigos de condición Figura 10.47. 10.114. Acudir a la Figura 10.47. La instrucción CLl especifica la operación de «b,)rrar _ _ -----». Pone a _ _ (0, 1) el señalizador 1 del registro de códigos de condición. Res. máscara de interrupción, O. 10.115. Acudir a la Figura 10.47. El contenido del registro de códigos de condición después de la operación CLl es _ _ (8 bits). Res. 11000000 (señalizador 1 borrado). i. . __ ¡l· 11 http://librosysolucionarios.net