77
- Capítulo 6 PROGRAMACION DEL MICROPROCESADOR 6.1. LENGUAJES MAQUINA Y ENSAMBLADOR En el nivel más básico, el microprocesador responde a un listado de operaciones que se denomina 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 111110 2 Yfinaliza en la dirección 2006H con 01110 110 2 , 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: 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

Fundamentos de los microprocesadores (schaum) 2da edicion roger l. tokheim 146-222

Embed Size (px)

Citation preview

  • -

    Captulo 6

    PROGRAMACION

    DEL MICROPROCESADOR

    6.1. LENGUAJES MAQUINA Y ENSAMBLADOR

    En el nivel ms bsico, el microprocesador responde a un listado de operaciones que se denomina programa mquina. El contenido de la memoria de programa de la Figura 6.1 a representa un programa en cdigo mquina, que comienza en la direccin 2000H con el cdigo de operacin 00 1111102 Y finaliza en la direccin 2006H con 01110 1102, Los programas en esta forma son casi imposibles de comprender para los seres humanos.

    El programa mquina de la Figura 6.1 a puede hacerse algo ms fcil de manejar si los nmeros binarios se representan en notacin hexadecimal. En la Figura 6.1 b se repite el mismo programa en hexadecimal. El segmento del programa de la Figura 6.lb se considera todava en cdigo mquina, an cuando el binario est representado en notacin hexadecimal. Los programas de esta forma tambin son muy dificiles de comprender.

    En un nivel ms humano, el programa anteriormente descrito en cdigo mquina puede describirse como sigue:

    l. Cargar el nmero binario (lOt 10100) en el acumulador del microprocesador. 2. Complementar cada bit del nmero binario del acumulador para formar el complemento

    a l. 3. Almacenar el resultado, del complemento a 1, en la posicin 2100 16 de la memoria de

    datos.

    El segmento de programa descrito cambia un nmero binario de 8 bits a su forma equivalente de complemento a l.

    Surge la siguiente pregunta: Cmo transformar la descripcin del lenguaje humano del programa al cdigo mquina? La respuesta se encuentra en un sencillo lenguaje de programacin prximo al programa mquina observado en la Figura 6.1. Un lenguaje ensamblador utiliza palabras y frases para representar los cdigos mquina del microprocesador. Generalmente, una frase o sentencia en lenguaje ensamblador constar de la 3 bytes de cdigo mquina. La idea fundamental de este proceso de ensamblamiento se muestra en la Figura 6.2a. Aqu, a ttulo de ejemplo, la segunda instruccin del programa es representada por un nico nemotcnico de tres letras CMA (complementar el acumulador). Las letras del nemotcnico son traducidas primero a su representacin ASCII equivalente (American Standard Code for Information Interchange). Los tres cdigos ASCII son evaluados entonces, en orden, por un programa ensamblador especial, y el cdigo mquina para complementar al acumulador resulta ser 00101111 2, 2FH. El nemotcnico ha generado un simple byte de cdigo de lenguaje mquina.

    136

    Memoria de pro

    Direccin Co (hex) (b

    2000 00

    2001 10

    2002 00

    2003 00

    2004 OCI

    2005 OCI

    2006 01

    2007

    la) Programa e

    '~

    unsegmj

    Figura 6.2a. Se (l) etiqueta, (2) : siempre y apam ne el nemotcni blador esencialr cin sobre regs. los campos de : rrecto en lengu. memoria de pn programa enSll para comprend

    http://librosysolucionarios.net

    www.elsolucionario.net

  • t turo 6

    :omplemento

    l...emoria de

    ~ luivalente de

    WlO del prorogramacin lador utiliza Ilmente, una ina. La idea L a ttulo de mIco de tres as primero a nterchange). rior especial, . 2FH. El

    -',

    Direccin Contenido (hex) (hex)

    _Comienzo del 2000 3E programa

    2001 84

    2002 2F

    t se denomina 2003 I 32 representa un de operacin

    2004 00orma son casi

    r si los nme 2005 21 !1ismo progra~ia en cdigo 2006 76 programas de ~

    Fin del programa 2007quna puede

    PROGRAMACION DEL MICROPROCESADOR 137

    Memoria de programa Memoria de programa

    Direccin Contenido (hex) (binario)

    2000 00111110

    2001 10110100

    2002 OOlOllll

    2003 00110010

    2004 00000000

    2005 00100001

    2006 O

    2007

    ,

    - Comienzo del programa

    ~ Fin del programa

    la) Programa en cdigo mquina binario (b) Programa en cdigo mquina hexadecimal

    Figura 6.1.

    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) nemotcnico, (3) operando y (4) comentarios. El campo de etiqueta no se utiliza siempre y aparece vaco en este sencillo segmento de programa. El campo de nemotcnico contiene el nemotcnico exacto que proporciona el fabricante. Este campo indica al programa ensamblador esencialmente la operacin que se va a realizar. El campo de operando contiene informacin sobre registros. datos o direcciones asociados con la operacin. Utilizando la informacin de los campos de nemotcnico y operando, el programa ensamblador puede generar el cdigo correcto en lenguaje mquina. El programa ensamblador puede tambin asignar posiciones de la memoria de programa a los listados en cdigo mquina. El campo de comentario no lo evala el programa ensamblador, solamente lo imprime. El campo de comentario es una ayuda valiosa para comprender qu ocurre en el programa. f*

    I

    http://librosysolucionarios.net

    http:acostumt.rawww.elsolucionario.net

  • ..

    138 FUNDAMENTOS DE LOS MICROPROCESADORES

    Cdigo nemotcnico de Representacin Traduccin del lenguaje Cdigo mquina de complementar el acumulador ASCII ensamblador al lenguaje de mquina complementar el acumulador

    C 01000011 ---_ Programa - __...._ 001011110 2FH ensamblador

    M 01001101---__ A 01000001 ---__

    (a) Traduccin del nemotcnico del lenguaje ensamblador al cdigo mquina por un programa ensamblador

    Etiqueta Nemotcnico Operando Comentarios

    MVI A. B4H ; Carga el acumulador con el dato que sigue inmediatamente, que es B4H

    CMA ; Complementa el contenido del acumulador

    STA 2100H ; Almacena el contenido del acumulador en la posicin de memoria 21 OOH

    HLT ; Se detiene la MPU

    (b) Programa en lenguaje ensamblador

    Direccin (hex)

    Contenido (hex) Etiqueta Nemotcnico Operando Comentarios

    2000

    2001 2002

    2003

    2004 2005 2006

    3E

    B4

    2F

    32

    00 21 76

    MVI

    CMA

    STA

    HLT

    A.B4H

    2100H

    ; Carga acumulador con el dato que sigue inmediatamente, que es B4H

    ; Complementa el contenido del acumulador

    ; Almacena el contenido del acumulador en la posicin de memoria 21 OOH

    ; Se detiene la MPU

    Una vez qi listado anlog, mquina (lista ser la de (1 ) t~ posiciones con versin del len hacerse manw

    Un progral lenguaje ensar programa fuel mquina, a s1 mtodo de h (BASIC, FOR una sentencia mquina. El t to a microcorr instrucciones ( ayuda a comp

    6.1. Los 50

    -Sohri

    U. mqui

    6.2. Un le instro

    Solu

    ces!! 6.3. Uu_

    cir el

    Soluci

    \JI dor al

    (e) Programa en lenguaje ensamblador y mquina combinados 6.4. ListaJ

    Soluci

    Figura 6.2. Ve lengw

    http://librosysolucionarios.net

    www.elsolucionario.net

  • f

    @o mquina de enlar el acumulador

    11 o 2FH

    ~

    l ensamblador

    nmediatamente,

    1 posicin de

    ios

    el dato que ,que es B4H

    :llIdo del

    del oonde

    PROGRAMACION DEL MICROPROCESADOR 139

    Una vez que el programa ensamblador de la Figura 6.2 ha sido ensamblado, se obtiene un listado anlogo al programa de la Figura 6.2c. Aqu se han aadido las direcciones y cdigos mquina (listados bajo la columna contenido). En resumen, la tarea del ensamblador parece ser la de (1) traducir los nemotcnicos y operandos al cdigo mquina equivalente y (2) asignar posiciones consecutivas de memoria a cada cdigo de op y operando. La tarea de conseguir de la versin del lenguaje ensamblador de la Figura 6.2b la versin ensamblada de la Figura 6.2c puede hacerse manualmente o con un programa ensamblador especial.

    Un programa compuesto por sentencias simblicas, 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 cdigo mquina, a sta se denomina programa objeto. La programacin en lenguaje ensamblador es un mtodo de hllmanizar las operaciones de un microprocesador. Los lenguajes de alto nivel (BASIC, FORTRAN, Pascal, etc.) hacen la tarea de programar an ms sencilla. Por ejemplo, una sentencia en BASIC, FORTRAN o Pascal puede ser equivalente a unos 20 a 30 cdigos mquina. El ttulo del captulo hace referencia a la programacin de un microprocesador (opuesto a microcomputadora) puesto que el captulo tratar de utilizar directamente el repertorio de instrucciones del microprocesador. Se utilizar la programacin en lenguaje ensamblador porque ayuda a comprender las operaciones y el repertorio de instrucciones del microprocesador.

    lo 1/ OJO(J PROBLEMAS RESUELTOS O I O~ I OI :roo O I } () O

    --------------~--~~~~~=======---q 6.1. Los segmentos de programacin mostrados en la Figura 6.1 se consideran programas C.

    ___ (ensambladores, mquina).

    Solucin: Los segmentos de los programas mostrados en la Figura 6.1 se consideran programas

    mquina.

    6.2. Un lenguaje ___ (ensamblador, mquina) utiliza palabras y frases para representar instrucciones de microprocesador.

    Solucin:

    Un lenguaje ensamblador utiliza palabras y frases para representar instrucciones del microprocesador .

    6.3. Un ___ (ensamblador, monitor) es un programa especial de computadora para traducir el lenguaje ensamblador al lenguaje mquina.

    Solucin:

    Un ensamblador es un programa especial de computadora para traducir el lenguaje ensamblador al lenguaje mquina.

    6.4. Listar los cuatro campos tpicos de una sentencia de lenguaje ensamblador.

    Solucin:

    Ver las etiquetas en la parte superior de la Figura 6.2b. Los cuatro campos de una sentencia en lenguaje ensamblador son etiqueta, nemotcnico, operando y comentarios.

    /

    ,~.' r "

    http://librosysolucionarios.net

    www.elsolucionario.net

  • 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 cdigo __ (BASIC, mquina) de cada sentencia del lenguaje ensamblador.

    Solucin: 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 cdigo mquina de cada instruccin del lenguaje ensamblador.

    En la segun datos/direccion propsito genel utilizados para

    En la parte. de programa (} pila (SP) conti, RAM.

    6.2. REPERTORIO SIMPLIFICADO DE INSTRUCaONES

    Se presentar un repertorio de instrucciones para el microprocesador genrico ilustrado en la Figura 5.7. Los nemotcnicos y cdigos de operacin utilizados son un subconjunto del repertorio de instrucciones del microprocesador 8080/8085. Los derechos de copia de los nemotcnicos y de los cdigos de op se utilizan con el permiso de lntel Corporation. Se pens en utilizar nemotcnicos arbitrarios para el microprocesador genrico. 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 Captulos 8 y 9. Debe mencionarse que los programas del 8080/8085 son compatibles con los sistemas 8086 y 8088.

    Un resumen de los registros disponibles al programador, en el microprocesador genrico, se ilustra en la Figura 6.3. En la parte superior derecha est el acumulador (A) de propsito general de 8 bits. En la parte superior izquierda est el registro de status de 8 bits que contiene los sealizadores. En la visin expandida del registro de status, el sealizador de arrastre (eY) se muestra en la posicin B7 , mientras que el sealizador de cero (2) se localiza en la posicin Bo' Las posiciones 1 a 6 no se utilizan en el registro de status del microprocesador genrico simplificado. Es costumbre que los microprocesadores reales tengan algunos sealizadores ms.

    , ,~

    Figura 8.3. Modelo de programacin para el microprocesador genrico.

    El repertori. categoras espe

    1. Instrucc 2. lnstrucc 3. Instrucc 4. lnstrucc 5. Instrucc 6. lnstrucc 7. Instruc,

    La MPU genr del repertorio e considerar ca'. 6.6. Las 6"

    qu re So__

    Las de inSU' bies COI

    6.7. AcudiJ sador I

    Solucici El ..

    geDel1lll

    6.8. Acudil proces

    Soluc:WI De

    sealiz:

    .~

    Sealizadores (8) A (8)

    H (8) L (8)

    pe (16)

    SP (16)

    http://librosysolucionarios.net

    www.elsolucionario.net

  • ..

    lr las direcciones del lenguaje ensam-

    I vez que el programa igo mquina de cada

    rico ilustrado en la anjunto del repertole los nemotcnicos ~ pens en utilizar lecidi que utilizar liante un punto de lI'Se que los progra

    esador genrico, se e propsito general s que contiene los le arrastre (eY) se , en la posicin Bo' DeDrico simplificares ms.

    rico.

    t

    PROGRAMACION DEL MICROPROCESADOR 141

    En la segunda lnea de la Figura 6.3 se encuentran los registros H y L. Estos son registros de datos/direcciones multipropsito. Pueden ser usados separadamente como registros de datos de propsito general o como un registro par (llamado el registro par HL). Como registro par son utilizados para apuntar o sealar direcciones.

    En la parte inferior de la Figura 6.3 se localizan dos registros dedicados de 16 bits. El contador de programa (PC) seala la siguiente instruccin que se va a ejecutar en la CPU. El puntero de pila (SP) contiene la direccin del tope de la pila. En este sistema la pila est localizada en la RAM.

    El repertorio de instrucciones del microprocesador genrico est dividido en las mismas siete categoras especificadas en el Captulo 4. Estas categoras son:

    l. Instrucciones aritmticas. 2. Instrucciones lgicas. 3. Instrucciones de transferencia de datos. 4. Instrucciones de bifurcacin. 5. Instrucciones de llamada a subrutina. 6. Instrucciones de vuelta o de retorno. 7. Instrucciones miscelneas.

    La MPU genrica 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 categora de instrucciones.

    PROBLEMAS RESUELTOS :.1 !,

    6.6. Las 67 operaciones ejecutadas por el microprocesador genrico son un subconjunto de qu repertorio de instrucciones de una MPU real?

    Solucin: Las operaciones ejecutadas por el microprocesador genrico son un subconjunto del repertorio

    de instrucciones de la MPU del Intel 8080/8085. Adems, los programas 8080/8085 son compatibles con los sistemas de 16 bits 8086/8088.

    6.7. Acudir a la Figura 6.3. Listar tres registros de 8 bits de propsito general del microprocesador genrico.

    Solucin:

    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 genrico.

    6.8. Acudir a la Figura 6.3. Qu dos seftalizadores contiene el registro de status en el microprocesador genrico?

    Solucin:

    De acuerdo con la Figura 6.3, el registro de status del microprocesador genrico contiene los sealizadores de arrastre y cero.

    http://librosysolucionarios.net

    www.elsolucionario.net

  • 142 FUNDAMENTOS DE LOS MICROPROCESADORES

    1I 6.9. Acudir a la Figura 6.3. Citar dos registros de 16 bits dedicados utilizados indirectamente por el programador en el microprocesador genrico. Solucin:

    De acuerdo con la Figura 6.3, el microprocesador genrico contiene un contador de programa de 16 bits (PC) y un puntero de pila de 16 bits (SP).

    6.3. REPERTORIO DE INSTRUCCIONES: OPERACIONES ARITMETICAS

    Las instrucciones aritmticas son las primeras operaciones del microprocesador genrico 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 nmeros que se va a sumar. Cada instruccin de suma especifica una fuente diferente para el otro nmero que va a ser sumado.

    Considerar la primera instruccin listada en la tabla de la Figura 6.4. La instruccin sumar A inmediato es una instruccin de 2 bytes cuyo formato se muestra cerca de la parte derecha de la tabla. Como siempre, el cdigo 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 instruccin ADI se muestra en forma de diagrama en la Figura 6.5a. El dato inmediato de la memoria de programa toQOlOoo02) se suma al contenido del acumulador (00001111 2), La suma (00011111 2) es devuelta al acumulador despus de la operacin.

    La segunda instruccin de la Figura 6.4 es sumar el registro L a An (nemotcnico ADD L). En la Figura 6.5b se muestra un problema ejemplo utilizando esta instruccin registro a registro. El contenido del acumulador (0000 10002) se suma al contenido del registro L (00000001 2), La suma (00001001 2) de la instruccin ADD L es devuelta al acumulador despus de la operacin.

    La tercera lnea de la Figura 6.4 muestra la instruccin de un solo byte sumar H a A (nemotcnico ADD H). Esta es otra instruccin de suma registro a registro. Un problema ejemplo que utiliza la instruccin ADD H se detalla en la Figura 6.5c. El contenido del registro A (00 1011 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 operacin.

    La cuarta lnea de la Figura 6.4 muestra la instruccin de un solo byte sumar registro indirecto (nemotcnico ADD M). La posicin del dato que se va a sumar es algo ms complicada utilizando este modo de direccionamiento indirecto de registro. Un problema ejemplo que utiliza la instruccin ADD M se muestra en la Figura 6.5d. El registro par HL contiene una direccin de 16 bits, que seala a la posicin adecuada de la memoria de datos (LOC). El contenido de esta posicin (000000 11) se suma al contenido del acumulador (O 11000001), La suma (O 11000 11 2) es devuelta al acumulador despus de la operacin de suma. Las instrucciones de registro indirecto utilizan un registro de 16 bits (habitualmente el registro par HL) como puntero de direccin.

    Observar de nuevo la instruccin sumar registro indirecto (ADD M) de la Figura 6.4. La descripcin dice Sumar LOC (H&L) a A que se leer como sumar el contenido de la posicin de memoria apuntada por el registro par HL al contenido del registro A. Al leer esta instruccin a travs de la Figura 6.4, se ve que el modo de direccionamiento es indirecto de registro. El nico

    Instrucciones arfI

    Descripcin d la operacin

    Suma A al dato

    Suma L aA

    Suma HaA

    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

    t Compara :4 C'O

    LOC(H ~ l

    ( ) contenido ~ (( = direcCIonan

    ~ . 11.1,:... ..'

    http://librosysolucionarios.net

    www.elsolucionario.net

  • r

    l indirectamente

    ~ ador de programa

    t

    I .

    genenco que se e sumar, restar, instrucciones de ene uno de los mte para el otro

    trin sumar A te derecha de la ~ de la memoria ruccin ADI se 'a de programa 11:) es devuelta

    !coico ADD L). pstro a registro. L (00000001

    2),

    despus de la

    Lmar H a A ''lema ejemplo , del registro A 0011 I1ll r La

    "e'gistro indirec.. ' complicada lplo que utiliza la direccin de ":,nido de esta

    : 1000110) es ~stro indirecto le direccin. Figura 6.4. La , de la posicin :sta instruccin Psiro. El nico

    PROGRAMACION DEL MICROPROCESADOR 143

    Instrucciones aritmticas

    Descripcin de Modo de

    la operacin direcciona- Nemotcnico miento

    Suma A al dato Inmediato ADI

    Suma L aA Registro AOOL

    Suma HaA Registro AODH

    Suma LOC (H y L) Indirecto ADDMaA de registro

    Resta el dato de A Inmediato SUI

    Resta L de A Registro SUBL

    Resta H deA Registro SUBH

    Resta LOC (H y L) Indirecto SUB MdeA de registro

    Incrementa A Re INCA

    Incrementa HL Registro INXH

    Decrementa A Registro OCRA

    Decrementa HL Registro OCXH

    Compara A con

    el dato Inmediato CPI

    Compara A con L Registro CMPL

    Compara A con H Registro CMPH

    Compara A con Indirecto

    LOC (Hy L) de registro CMPM

    ( ) contenido de )) = direccionamiento indirecto de registro

    Cd. de

    opero

    C6

    85

    84

    86

    D6

    95

    94

    96

    3C

    23

    3D

    2B

    FE

    BO

    BC

    BE

    Formato de laBytes instruccin

    2 11 Cdigo de op. 1

    11 datos I I ICdigo de op. I I ICdigo de op. I 1 ICdigo de op. I

    2 11 Cdigo de op. 1

    11 datos 1

    I ICdigo de op. I ICdigo de op. 1 ICdigo de op. I ICdigo de op. I I ICdigo de op. I I ICdigo de op. I ICdigo de op.

    .1 Cdigo de op. 2

    1 datos 1

    1 ICdigo de op.

    1 ICdigo de op. I

    1 ICdigo de op.

    Simblico

    (A) +- (A) + (byte 2)

    (A) +- (A) + (L)

    (A) +- (A) + (H)

    (A) +- (A) + H)(L

    (A) +- (A) (byte 2)

    (A) +- (A) (L)

    (A) +-(A) (H)

    (A) +- (A) H)(L

    (A)+-(A) + 1

    (HL) +- (HL) + I

    (A)+-(A)-I

    (HL)+-(HL)- I

    (A) (byte 2)

    (A) (L)

    (A) -(H)

    (A) H)(L

    Sealizadores afectados

    Z. cy

    Z.CY

    Z. Cy

    Z. CY

    Z. Cy

    Z. CY

    Z.CY

    Z. CY

    Z

    Z

    Z-I s (A) = (byte 2)

    Cy= I s (A) < (byte 2)

    Z= I s (A) = (L) CY= I s (A) < (L)

    Z- I si (A) = (H) CY= I si (A) < (H)

    Z= I s (A) = H)(L

    CY= I s (A) < H)(L

    + - suma - - resta

    Figura 6.4. Instrucciones aritmticas para el microprocesador genrico (subconjunto de instruccones Intel 8080;8085).

    http://librosysolucionarios.net

    www.elsolucionario.net

  • \

    144 RJNDAMENTOS DE LOS MICROPROCESADORES

    Acumulador Acumulador

    Despus de la operaciD

    Memoria de programa

    Dato

    (a) La instruccin de suma A inmediata

    Acumulador

    Antes de la operaciD Despus de la operacin

    Acumulador

    ADDL

    Registro L 10000 0001 I (b) La instruccin de suma L y A

    Acumulador Acumulador

    Antes de la operacin Despus de la operacin

    Registro H I000 1 00 11 I (e) La instruccin de suma H y A

    Acumulador Acumulador

    Antes de la operacill Despus de la operacin

    ADDM

    Memoria de datos 100000011 I (LOC)

    Puntero de direccin L

    Registro par HL

    (d) La instruccin de suma registro indirecto

    Figura 6.5.

    Resultad

    (A)

    Contenido registro

    Figura 6

    nemotcnicc 86 16, De acu to es una ir cdigo de 01 forma simb cin ADD.\ cambiando parte derech Los parntes se va a reafu de registro i memoria de de memoria resultado es

    La colur durante la e afectados pi muestra la 1

    I '-t--' Arrastre

    (a) Suma. con

    http://librosysolucionarios.net

    www.elsolucionario.net

  • PROORAMACION DEL MICROPROCESADOR 145

    Primer Segundo Resultado operando Operacin operando

    (A) If (A) + H)(L) Transferido a Contenido del Contenido del Suma Contenido del registro HL

    registro A registro A que apunta a la posicin del operando de memoria

    Figura 6.6. Interpretaciones de ADD; las operaciones utilizan el cdigo simblico de la tabla del repertorio de instrucciones.

    nemotcnico del lenguaje ensamblador para esta instruccin es ADD M, cuyo cdigo de op es 86 16, De acuerdo con la columna Bytes de la Figura 6.4, la instruccin sumar registro indirecto es una instruccin de 1 byte. El formato de instruccin muestra un solo byte que contiene el cdigo de op de la instruccin. La segunda columna de la derecha en la Figura 6.4, detalla, en forma simblica, la operacin que est realizando la CPU. La sentencia simblica para la instruccin ADD M se reescribe en la Figura 6.6. Siguiendo el patrn utilizado por lntel Corporation y cambiando algo la notacin habitual, la sentencia simblica 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 parntesis Osignifican contenidos de en esta notacin. El signo + significa la operacin que se va a realizar, que es una suma en este caso. Los dobles parntesis ()) denotan una instruccin de registro indirecto. H)(L significa el contenido del registro HL seala a la posicin de memoria del segundo operando. En otras palabras, el segundo operando reside en una posicin de ,memoria a la que apunta el contenido del registro par HL. Despus de la operacin, el resultado es transferido al registro A, o acumulador.

    La columna de ms a la derecha de la Figura 6.4 lista los sealizadores que son afectados durante la ejecucin de una instruccin. Para dar un ejemplo de cmo los sealizadores son afectados por una operacin, considerar la suma binaria de 11111111 con 0000000 1, como muestra la Figura 6.7. El mtodo de lpiz y papel para sumar estos dos nmeros de 8 bits se

    Acumulador '1111 l 111 I I0000 0000 I Acumulador 1111111

    11111111 Antes de la operacin ~ Despus de la operacin + 0000000 I ~~ 1 00000000

    "--y--J '---v-"

    L

    , 0000 000 1 I '1 t ---11 I Registro de status Arrastre Contenido Cy Z

    del acumulador

    de 8 bits

    fa) Suma de nmeros binarios con arrastre (bJ El efecto de la instruccin ADD M sobre los sealizadores yel acumulador

    Figura 6.7.

    http://librosysolucionarios.net

    www.elsolucionario.net

  • I

    4!W

    146 FUNDAMENTOS DE LOS MICROPROCESADORES

    muestra en la Figura 6.7a. El mismo problema se muestra como es resuelto por el microprocesador genrico utilizando la instruccin ADD M en la Figura 6.7b. El acumulador contiene 11111111 2, mientras que la posicin en la memoria de datos sealada por el registro par HL ~on\\~n~ ~\ OlIO n\\mtIO \.l\1t ~t 't.\. \ ~\1ma\ (QQQOOQ l}), Despus de que se completa la suma, el acumulador contiene los 8 bits menos significativos de la suma, que son 000000001' El sealizador de arrastre del registro de status se pone a 1, indicando que hubo un arrastre del bit ms significativo del acumulador. El sealizador de cero examina el contenido del acumulador despuS de la operacin y encuentra 000000002, Al encontrar cero, el sealizador cero se pone a 1, indicando que el acumulador es 00000000 despus de la operacin de suma.

    1A continuacin, considerar las cuatro operaciones de resta del repertorio de instrucciones del

    microprocesador genrico de la Figura 6.4. Cada instruccin resta el contenido de algunos registros o posiciones de memoria del contenido del acumulador. Internamente la ALU del microprocesador no tiene hardware para restar, por tanto realiza la sustraccin convirtiendo el sustraendo a su forma de complemento a 2 y sumando.

    1.: 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 lpiz 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:

    complementa00000001 11111110 complemento a I 11111110 +1 11111111 complemento a 2

    JI I J 1 I ! 00001001

    + 1 I I 1 1 1 I 1 Forma de complemento a 2 00000oo I IIIYetIe ,,_.

    .. , 1 ~ 00001000'_J CY ContenidoOverNo prstamo delIlow

    acumulador de 8 bits

    (a) Resta binaria convirtiendo el sustraendo a su forma de complemento a 2 y sumando

    Acumulador

    Memoria de programa

    (b) Instruccin de resta inmediata

    Figura 6.8.

    ,...

    10000 1001 I Acumulador

    Antes de la operaclOO

    Registro de status

    1'0

    , ,.,'

    La forma en e una suma de 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 despuS de la tanto el seal

    Considm ma es restar El mtodo df se convierte ~

    http://librosysolucionarios.net

    www.elsolucionario.net

  • ~I microprocesa,Jor contiene

    registro par HL pleta la suma, el 00,. El sealiza~ del bit ms !Cumulador desero se pone a 1,

    DStrucciones del le algunos regisU del microprodo el sustraendo

    6.8. El binario )' lpiz se m uesouendo binario straendo en este

    r

    l Il001

    L

    PROGRAMACION DEL MICROPROCESADOR 147

    00000101 + 11111010 Forma en complemento a 2 00000110

    Invien. ". '.[D1 .....------t' o \ 11111111 \ .... ,.,,1

    Cy Contenido OverflowNo prstamo del acumulador

    de 8 bits

    (a) Resta binaria mostrando el efecto del overflow sobre el sealizador de arrastre

    Acumulador ~ Acumulador

    Antes de la operacin ~

    Registro L OOOO--OL.I 1-0""1'1 Registro de status

    (b) La instruccin 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 posicin ms significativa de la suma es un overflow y no es parte de la diferencia ()()()() 1OOOr El microprocesador utiliza el overflow para afectar el sealizador de arrastre (o prstamo (borrow)). Al restar, la CPU invierte el overflow, y ste se convierte en el contenido del sealizador de arrastre (eY). En la Figura 6.8a, el overflow de I se invierte y pone a cero el sealizador de arrastre, lo cual significa que no se ha presentado ningn prstamo o que el minuendo es mayor que el sustraendo.

    La instruccin de resta inmediata (nemotcnico 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 000010002 es transferida al acum ulador despus de la resta. El sealizador de arrastre (

  • 148 FUNDAMENTOS DE LOS MICROPROCESADORES

    Acumulador 100010000 I 100010000 I Acumulador Antes de la opersci-;--....~y--......... Despus de la operacin

    CMP L I O f.. -11 1 Registro de status Cy Z

    Registro L 000 10000 I00010000 I Registro L ~ (a) La instruccin compara A con L

    11' 00010000

    + 1 1110000 Forma en complemento a 2 de 00010000 (n viene ,-',

    O .....----1 I 00000000IOCy , _ ... I Overflow Contenido

    temporal

    de un registro

    de la CPU

    (b) Efecto sobre el sealizador de arrastre cuando se realiza la resta binaria durante la operacin de comparacin

    Figura 6.10.

    El minuendo (00000101 2) se suma entonces a la forma en complemento a 2 del sustraendo (I 1111010), dando una diferencia de 111111 l I. La diferencia 11111111 es la representacin en complemento a 2 de -1 10 como muestra la Figura 2.12. La Figura 6.9a tambin muestra que la suma no provoca overflow, o un O en el registro de overflow. Este se invierte (debido a la operacin de resta), dando un 1 en la posicin de sefializador CYo arrastre. Cuando el sealizador CY se pone a 1 despus de una operacin de resta, significa que el nmero del acumulador es menor que el nmero del registro o posicin de memoria. El sefializador de arrastre a I implica que el nmero del acumulador despus de la sustraccin es una representacin en complemento a 2 de un nmero negativo. El III1IlI1 del acumulador de la Figura 6.9 representa -1'0'

    El repertorio de instrucciones del microprocesador genrico tiene cuatro instrucciones de comparacin que se muestran en las cuatro ltimas lneas de la Figura 6.4. Las instrucciones de comparacin restan el contenido del registro o memoria del contenido del acumulador pero no cambian sus contenidos. Los sealizadores son afectados por las instrucciones de comparacin.

    La instruccin comparar el registro > se utiliza como ejemplo en la Figura 6.10. Nmeros iguales (000100002) en el acumulador y registro L son comparados por el microprocesador. Observar en la Figura 6. lOa que ni el acumulador ni el registro L cambian los contenidos despus de la operacin de comparacin. Sin embargo, son afectados los sefializadores del registro de status.

    De acuerdo con la informacin de la columna simblica 'de la Figura 6.4, el contenido del registro L es restado del contenido del registro A cuando se utiliza la instruccin CMP L. La Figura 6.lOb muestra este proceso utilizando el mtodo de lpiz y papel. El sustraendo (contenido del registro L) es cambiado a su forma de complemento a 2 por el procedimiento:

    000 10000 complementa .. 1110 1 l 11 complemento a 1

    1110111 l + 1 11110000 complemento a 2

    El minuendo dando lOOOC Son igual a ~ ALU,yelse reinicializaci contenido de

    En resum. tpicas de lo 4 procesadores sefializadores de salto inCOI

    6.10. Acucl cdi

    Sohx Se

    SUIl

    6.11. Acu

  • PROORAMACION DEL MICROPROCESADOR 149

    El minuendo (000100002) 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 sealizador de arrastre en reinicializacin (CY = O) significa que el contenido del acumulador es mayor o igual que el contenido del registro L.

    En resumen, las operaciones aritmticas que pueden ser realizadas por la MPU genrica son tpicas de lo que la mayora de los repertorios de instrucciones pueden realizar. Muchos microprocesadores tienen ms instrucciones aritmticas y sefializadores en sus registros de status. Los sefializadores se utilizarn ms tarde para afectar el resultado de las instrucciones de bifurcacin o de salto incondicional.

    PROBLEMAS RESUELTOS

    u0000

    6.10. Acudir a la Figura 6.4. La instruccin resta inmediata tiene el nemotcnico ___ y el cdigo de op D6H y es una instruccin de ___ bytes.

    ~ comparacin

    l Solucin:

    Segn la quinta lnea de la Figura 6.4, la instruccin de resta inmediata tiene el nemotcnico SUI y el cdigo de op de D6H y es una instruccin de 2 bytes.

    lel sustraendo 6.11. Acudir a la Figura 6.4. Incrementar significa _ (sumar 1 al, restar 1 del) contenido esentacin en de un registro del microprocesador. iluestra que la

    Solucin:(debido a la

    Incrementar significa sumar l al contenido de un registro del microprocesador.mdo el sefiali~l acumulador tre a l implica 6.12. Acudir a la Figura 6.4. Qu instruccin de incrementar no afecta al sefializador cero? complemento Solucin: na -1 10 Segn la informacin de la Figura 6.4, la instruccin ~ H (incrementar registro par HL) nortrucciones de afecta al sei\alizador cero. . Rrucciones de tlador pero no

    6.13. El contenido del acumulador de la Figura 6.11 despus de la operacin de decrementar :'C'mparacin. es __ (8 bits)." Nmeros

    ocesador. Ob Solucin: los despus de La instruccin DCR A significa restar uno del valor del acum~lador, y por tanto el registro de ()()()()()()() l - 1 = ()()()()()()oo. El acumulador de la Figura 6.11 contendr 00000000 despus de la

    operacin de decrementar.

    contenido del IIC\1P L. La 6.14. Acudir a la Figura 6.4. El sefializador de cero de la Figura 6.11 est a __ (O, l) desdo (contenido pus de la operacin de decrementar.

    Solucin: El contenido del acumulador eS comprobado despus de la operacin 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.

    I ~

    :11&

    http://librosysolucionarios.net

    www.elsolucionario.net

  • ,

    150 FUNDAMENTOS DE LOS MICROPROCESADORES

    Acumulador Acumulador

    Registro de status

    Cy z Figura 6.11.

    ?

    Antes de la operacin Despus de la operacin

    . 6.15. Acudir a la Figura 6.4. Cul es la condicin del sealizador de arrastre de la Figura 6.11 despus de la operacin de decrementar? '"" " Solucin: De acuerdo con la Figura 6.4, el sealizador de arrastre (en no es afectado por la operacin de

    decrementar A, y por tanto la condicin del sealizador de arrastre del registro de status es impredecible.

    6.16. Acudir a la Figura 6.4. Listar el contenido del acumulador y de dos posiciones de la memoria de programa despus de la operacin de comparar inmediato de la Figura 6.12.

    Solucin: Las instrucciones de comparacin no cambian el contenido de los registros o posiciones de

    memoria que se compara. Por tanto. el acumulador contendr todava 000011 II despus de la operacin de comparacin en la Figura 6.12. El cdigo de op para la instruccin ePI es FE 16 (ver la Figura 6.4), mientras que el dato inmediato de la memoria de programa es todava 00010000.

    6.17. Acudir a la Figura 6.4. El sealizador de cero de la Figura 6.12 estar a __ (O, 1) despus de la operacin de comparacin inmediata.

    Solucin: El sealizador cero de la Figura 6.12 estar en reinicializacin despus de la operacin de

    comparacin inmediata. La columna simblica de"'la Figura 6.4 muestra que la instruccin de comparacin es bsicamente una operacin de resta donde se evala la diferencia. En este caso la diferencia no es cero, por tanto el sealizador de cero no alcanzar la reinicializacin.

    Acumulador ? Acumulador

    Despus de la operacin

    Cdigo de Cdigo de operacin

    Memoria de programa ' Memoria de programa .. d?Dato Dato

    Figura 6.12.

    6.18. Acud despw

    SolacM Eh

    inmedi dor es: sea/iz.

    6.] 9. AcudiJ operne

    Soloci loa

    = 1000 registro 0000 OC

    Registro par

    ,

    6.20. A~ pus de

    Solucil De.

    cin de i cible. O sealiza

    6.21. Los se utilizad cacin.

    SoJuciI Los!

    micropn

    http://librosysolucionarios.net

    www.elsolucionario.net

  • ~ ~,

    ~ Figura 6.11

    t I operacin de tatus es impre

    bones de la de la Figu

    posiciones de despus de la es FEI6 (ver la 00010000. t __ (0,1)

    t \:,oeracin de

  • !

    ,1

    152 FUNDAMENTOS DE LOS MICROPROCESADORES

    v

    6.4. REPERTORIO DE INSTRUCaONES:

    OPERAaONES LOGICAS

    Las instrucciones lgicas son las segundas operaciones del microprocesador genrico que se van a considerar. Estas estn resumidas en la Figura 6.14. Incluyen las instrucciones ANO, OR, OR exclusiva, complementacn (NOT) e instrucciones de desplazamiento circular. La organizacin de la tabla de la Figura 6.14 es la misma que la utilizada para las operaciones aritmticas anteriores. Oe nuevo, el foco de la mayor parte de las operaciones est en el contenido del acumulador. Como con las instrucciones aritmticas, el modo de direccionamiento indica cmo y dnde se encuentra el otro dato en el sistema basado en microprocesador.

    Considerar.el uso de la instruccin ANO inmediato del microprocesador genrico, como muestra la Figura 6.15a. El contenido del acumulador (000 l 00 11) realiza la operacin ANO con el segundo byte de datos de la memoria del programa (0000000 1). La operacin ANO se realiza bit a bit. Segn la tabla de verdad de la Figura 3.1, slo el bit menos significativo de cada nmero es un 1; por tanto la salida ser 0000000 l. El resultado de la operacin ANO se coloca en el acumulador. Oe acuerdo con la ltima columna de la Figura 6.14, todas las operaciones ANO hacen que el sealizador de arrastre se ponga a cero, lo cual tambin se pone de manifiesto en la Figura 6.15a. Se comprueba si es cero el resultado de la operacin ANO y como no lo es, el sealizador de cero est a O. Observar que el punto ( . ) de la Figura 6.14 debajo de la columna Simblico denota la operacin ANO.

    En la Figura 6.15b se ilustra un segundo ejemplo que utiliza una instruccin ANO. Aqu se usa la instruccin ANO registro indirecto (nemotcnico ANA M). El contenido del acumulador realiza la operacin ANO (bit a bit) con el contenido de la posicin de la memoria de datos sealada por el registro par HL. Al realizar la operacin ANO entre 00111100 y 00000001, se encuentra que el resultado de salida es 00000000, que se almacena en el acumulador. El sealizador de arrastre se pone a cero segn la informacin de la Figura 6.14. Se comprueba el contenido del acumulador (00000000) y al ser cero se pone a l el sealizador 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 mscara. En las Figuras 6.15a y b la mscara 00000001 puede utilizarse para poner a cero los siete bits ms significativos. O posiblemente, se utilice el nico l de la mscara 00000oo 1 junto con el sealizador de cero, para comprobar la presencia de un O un l en la posicin LSB del contenido del acumulador. Cuidado: Observar que el contenido del acumulador cambia cuando se utilizan instrucciones ANO. Algunos microprocesadores tienen instrucciones especiales de 'test' de bits, que realizan la operacin ANO del acumulador con un byte de mscara sin cambiar el contenido del acumulador mientras cambian los sealizado res.

    Las cuatro instrucciones OR listadas en la Figura 6.14 realizan la operacin OR del contenido del acumulador con el de otros registros o posiciones de memoria. Un ejemplo de una operacin 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 operacin OR es I 1001111. La operacin OR se realiza bit a bit segn la tabla de verdad de la Figura 3.1. El 00001111 del registro L puede considerarse una mscara que siempre pone a 1 los 4 bits menos significativos. Observar el uso del smbolo lgico OR (+) en la columna simblica de la Figura 6.14.

    Las dos ltimas operaciones lgicas listadas en la tabla de la Figura 6.14 son las de desplazamiento circular a travs del arrastre. Los diagramas de la columna simblica de la tabla muestran la accin de desplazamiento provocada por estas instrucciones.

    Considerar el ejemplo de la Figura 6.17 donde se utiliza la instruccin de desplazamiento

    Instrucciones ~

    Descripcin 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 4 con H

    OR exclusvo 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

    http://librosysolucionarios.net

    www.elsolucionario.net

  • ico que se van a ANO,OR,OR La organizacin mticas anteriotlel acumulador. ~mo y dnde se

    genrico, como acin ANO con ANO se realiza :le cada nmero se coloca en el etaciones ANO nanifiesto en la !IlO no lo es, el ,de la columna

    ANO. Aqu se o del acumulamaria de datos y 00000001, se Ior. El sealizaba el contenido

    lo operando es , b la mscara )Siblemente, se l comprobar la lado: Observar Ugunos microlC'in ANO del mtras cambian

    l del contenido una operacin aientras que el ("--acin OR se , :ro L puede

    :' rvar el uso

    l de, desplazaabla muestran

    :splazamiento

    PROGRAMACION DEL MICROPROCESADOR 153

    Instrucciones lgicas

    Descripcin de Modo de la operacin direcciona- Nemotcnico

    miento

    ANO de A con dato Inmediato ANI

    ANOdeA con L Registro ANAL

    ANO deA con H Registro ANAH

    ANO deA con Indirecto LOC (H&L) de registro ANAM

    OR de A con dato Inmediato ORI

    OR deA con L Registro ORAL

    ORdeA con H Registro ORAH

    OR de A con LOC Indirecto (H &L) de registro ORA M

    OR exclusivo de A con dato

    Inmediato XRI

    OR exclusivo de A Registro XRAAconA

    OR exclusivo de A con L Registro XRAL

    OR exclusivo de A con H Registro XRAH

    OR exclusivo de A Indirecto con LOC(H&L de registro XRAM

    Complementar A Inherente CMA(complemento a I

    Desplazamiento circular a la derecha a travs Inherente RAR del arrastre

    Desplazamiento circular a la vs izquierda a trav Inherente RAL del arrastre

    Cd. de

    opero

    E6

    A5

    A4

    A6

    F6

    B5

    B4

    B6

    EE

    AF

    AO

    AC

    AE

    2F

    IF

    17

    Bytes

    2

    l

    I

    1

    2

    1

    I

    1

    2

    l

    l

    l

    I

    l

    I

    1

    Formato de la instruccin

    IrCdigo de op, 1 1r dato 1

    ICdigo de op. I (A)+-(A) (L)

    ICdigo de op. I (A) ..... (A) . (H)

    ICdigo de op. I (A) ..... (A) . H)(L

    1rCdigo de op. 1 11 dato 1

    ICdigo de op. I (A) ..... (A) + (L)

    ICdigo de op. I (A) ..... (A) +(H)

    ICdigo de op. I (A) ..... (A) +H)(L

    ICdig~~ I1 dato

    ICdigo de op, I (A) +- (A) (f) (A)

    ICdigo de op. I (A) ..... (A) (f) (L)

    ICdigo de op1

    ICdigo de op. I (A) ..... (A) (f H)(L

    11 Cdigo de op. 1

    ICdigo de op, I

    ICdigo de op, I

    SealizadoresSimblico afectados

    (A) +- (A) (byte 2) Z CYse borra

    Z CYse borra

    Z CYse borra

    Z CY se borra

    (A) ..... (A) + (byte 2) Z CYse borra

    Z CY se borra

    Z CYse borra

    Z CYse borra

    (A) ..... (A) (f) (byte 2) Z CYse borra

    Bom! el acumulador Z-I CY se borra

    Z CY se borra

    (A) ..... (A) (f) (H) Z

    CYse borra

    Z CYse borra

    (A) ..... (A)

    ~[i]J CY A

    ~a CY A

    ( ) contenido . -AND )) - direccionamiento indirecto de registro +-OR $-XOR

    Figura 6.14. Instrucciones lgicas para el microprocesador genrico (Stlbconjunto de las instrucciones del Intel 8080/8085) . .. I http://librosysolucionarios.net

    www.elsolucionario.net

  • 154 FUNDAMENTOS DE LOS MICROPROCESADORES

    Acumulador

    Memoria de programa

    Acumulador

    Despus de la operacin

    Registro de status .

    Datos

    (a) La instruccin AND inmediato

    Acumulador

    CY Z

    Registro par H L

    Acumulador

    Despus de la operacin

    Registro de status

    (b) La instruccin ANA M

    Figura 6.15.

    Acumulador Acumulador

    Despus de la operacin

    Registro L

    Figura 6.16. La instruccin DR de A con L.

    circular a la derecha del acumulador a travs del arrastre. El contenido del acumulador (00 11000 1) se desplaza una posicin a la derecha transfirindose el bit menos significativo (un I en este ejemplo) a la posicin del bit del sealizador de arrastre. El arrastre actual entrar en la posicin del bit MSB del acumulador. El acumulador contiene 00011000 despus de la operacin, mientras que el sealizador de arrastre se pone a 1 como muestra la Figura 6.17. El sealizador de cero no es afectado.

    Figura 8.1

    6.22. Acud! operac

    SoIUCKl La

    acumu!

    1 6.23. AcudI

    de la e

    Sol Sq

    Despu cero S(

    '1

    .,1 , i I

    . t.

    J,

    f ,

    .;

    Con una o cualquier bit y do por una in miento circula nmero par de

    Observar q\ y no necesitan modo de direo namiento para instrucciones el genrica.

    En resUJDel booleana en la:! para comprob< tan obvias COII

    http://librosysolucionarios.net

    www.elsolucionario.net

  • del acumulador

    . ' lficativo (un l

    tua. entrar en la

    l)Us de la opera6.17. El sealiza-

    PROGRAMACION DEL MICROPROCESADOR 155

    Acumulador Acumulador

    Registro de status Registro de status

    Cy z z

    Figura 6.17. La instruccin desplazamiento circular a la derecha de A a travs del arrastre.

    Con una o ms instrucciones de desplazamiento circular, puede comprobarse la posicin de cualquier bit y el sealzador de arrastre puede ponerse a l a O, pudiendo entonces ser examinado por una instruccin de bifurcacin condicional. Otro uso de las instrucciones de desplazamiento circular es para comprobar la paridad. La paridad par seria un nmero binario con un nmero par de unos en la palabra.

    Observar que las instrucciones de desplazamiento circular operan solamente en el acumulador y no necesitan ningn operando de ningn registro o posicin de memoria. Por esta razn, el modo de direccionamiento se denomina inherente, o a veces no se cita ningn modo de direccionamiento para estas instrucciones. La mayoria de los microprocesadores tienen varios tipos de instrucciones de desplazamiento y desplazamiento circular adems de las utilizadas por la MPU genrica.

    En resumen, las instrucciones lgicas se utilizan para realizar manipulaciones del lgebra booleana en las variables. Tambin se utilizan para poner a l Obits especficos 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 J .

    6.22. Acudir a la Figura 6.14. El contenido del acumulador en la Figura 6.18 despus de la operacin ANO es __ (8 bits).

    Solucin:

    La operacin AND de 111 10011 con 10000000, bit a bit, da 10000000. El contenido del acumulador en la Figura 6.18 despus de la operacin AND es 10000000.

    6.23. Acudir a la Figura 6.14. Listar la condicin de los sealizadores de la Figura 6.18 despus de la operacin ANO .

    Solucin:

    Segn la informacin de la lnea 3 de la Figura 6.14, el sealizador de arrastre se pondr a O. Despus de la operacin AND el contenido del acumulador no es cero; por tanto el sealizador de cero se pone en reinicializacin (a O).

    -" IMIII!I"'I.;;iliIIlttJI,,,4IiMIUliJl:U;G;;;;II'U; ai i Ld 2! 12 las . ..~ .............. http://librosysolucionarios.net

    www.elsolucionario.net

  • Cy

    Figura 6.18.

    156 FUNDAMENTOS DE LOS MICROPROCESADORES

    6.24. Si el propsito 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 __ (mscara, palabra de test).

    Solucin: La palabra 10000000 en el registro H de la Figura 6.18 se denomina mscara si su propsito es

    comprobar el MSB del acumulador para determinar si es O l. Al utilizar esta mscara en la instruccin ANA H. si el sealizador de cero es 1, entonces el MSB del byte del acumulador es O; si el sealizador de cero es O, entonces el MSB es l.

    Acumulador Acumulador

    Registro H , ;Registro de status \ --j z SoI1

    5eg1 conteru

    6.2~. Acudir a la Figura 6.14. Cuando se utiliza la instruccin R A inmediato (nemotcni 6.30. AcudiJco de ORI), el operando que realizar la operacin OR con el contenido del acumulador operacproviene de la memoria de __ (datos, programa).

    Solucin: La instruccin OR A inmediato busca su operando a partir del segundo byte de la memoria

    del programa.

    ..~6.26. El smbolo + utilizado en la tabla de instrucciones lgicas de la Figura 6.14 denota la operacin __ (suma, OR). - ~

    Solucin: ..tJ El smbolo + utilizado en la tabla de instrucciones lgicas de la Figura 6: 14 denota la operacin . ,I ORo "

    -1 6.27. Acudir a la Figura 6.14. La fuente de la direccin (LOC) del operando en la memoria de

    ',. datos de la Figura 6.19 es el __ (registro par HL, puntero de pila). s....J J, Solucin: La ;

    Segn la informacin sobre la instruccin ORA M de la Figura 6.14, la fuente de la direccin colUDlJ-1 operac (LOC) del operando en la memoria de datos de la Figura 6.19 es el registro par HL... ,.

    6.31. Acudi Figura 6.19 es __ (8 bits).

    6.28. Acudir a la Figura 6.14. El contenido del acumulador despus de la operacin OR en la la Fig j

    J

    SoW Ji, Solucin: De

    ; 11 10000111. f: :i El contenido del acumulador despus de la operacin OR, bit a bit, en la Figura 6.19 es

    cin d I i seafu

    6.29. Acudir a la Figura 6.14. Listar la condicin de los sealizadores del registro de status de :l()SCj

    l . la Figura 6.19 despus de la operacin ORo

    'fl! .

    '

    http://librosysolucionarios.net

    www.elsolucionario.net

  • r PROGRAMACION DEL MICROPROCESADOR 157 Ir si el MSB del __ (mscara, ,

    ~ ~' I si su propsito es tsta mscara en la Memoria

    Acumulador

    Antes de la opel'Bcln

    Acumulador

    Registro de status

    Cy z de datos

    (LOC)ICUmulador es O; si

    ?

    Figura 6.19.

    t Solucin: Segn la informacin 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 (nemotcni

    6.30. Acudir a la Figura 6.14. El contenido del acumulador de la Figura 6.20 despus de la del acumulador operacin de desplazar circularmente a la izquierda es ___ (8 bits).

    l .. Acumulador Acumuladoryte de la memoria t 16.14 denota la

    Registro

    Antesdela~

    lit --j O I

    Despus de la opemcl6n

    de status Registro de statusL Cy z Cy Zla Ope!lICin Figura 6.20.tla mc~moria de

    Solucin: La accin de la instruccin de desplazamiento circular a la izquierda est contemplada en la

    ~ de la direccin columna simblica de la Figura 6.14. El contenido del acumulador, en la Figura 6.20, despus de la operacin de desplazamiento circular a la izquierda es JIl 00 111.

    6.31. Acudir a la Figura 6.14. Listar la condicin de los sealizadores del registro de status de la Figura 6.20 despus de la operacin de desplazamiento circular a la izquierda.

    L.cin OR en la

    Solucin: la Figura 6.19 es ~

    De acuerdo con la Figura 6.14, solamente es afectado el seftalizador de arrastre por la instruccin de desplazamiento circular a la izquierda; por tanto, el sealizador 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

    IIO de status de posicin del arrastre.

    http://librosysolucionarios.net

    www.elsolucionario.net

  • -158 FUNDAMENTOS DE LOS MICROPROCESADORES

    6.5. REPERTORIO DE INSTRUCCIONES: OPERACIONES DE TRANSFERENCIA DE DATOS

    Las instrucciones de transferencia de datos son la tercera categora de operaciones, del micropro~ cesador genrico, que se van a considerar. Estas estn resumidas en la Figura 6.21. Entre ellas se incluyen las instrucciones de transferencia de registro a registro, de carga de memoria, de almacenamiento en memoria, de entrada y salida y de poner a 1 el sealizador de arrastre. La mayora de los programas contienen ms instrucciones de transferencia de datos que otros tipos de opera~ ciones. Casi ninguna instruccin de transferencia de datos afecta a los sealizadores de la MPU. En este grupo hay muchas instrucciones, ya que los datos pueden Ser transferidos de cualquier posicin de memoria a cualquier registro o desde cualquier registro a cualquier posicin de memoria u otro registro. Los microprocesadores con ms registros de CPU tienen ms instrucciones de transferencia de datos. Tener en cuenta que cada instruccin de transferencia tendr una fuente y un destino para el dato. El modo de direccionamiento determina cmo y dnde se encuentra el dato fuente.

    Considerar la primera operacin 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 nemotcnico del lenguaje ensambla-

    Instrucciones de transferencia de datos

    :, .I I~

    Descripcin de Modo de Cd. Fonnato de la Sealzadores la operacin diretciona Nemotcnico de Bytes instruccin Simblico aFectadosmiento opero

    Transfiere L a A Registro MOVA.L 7D 1 I Cdigo de op. I (A).-(L) Transfiere H aA Registro MOVA.H 1C I I Cdigo de op. (A).-(H) Transliere AaL Registro MOVLA 6F 1 I Cdigo de op. I (L).-(A) Transfiere Aa H Registro MOVHA 61 l ~ (H).-(A) Transfiere H L a Pe Registro PCHL E9 1 1 Cdigo de op. I [PC).-(HL) Transfiere HL aSP Registro SPHL F9 1 I Cdigo de op. I (SP).-(JlL) Carga Acon dato Inmediato MVIA 3E 2

    Cdigo de op. (A).- (byte 2)

    datos

    Carga L COI! dato Inmediato MVIL 2E 2 Cdigo de op.

    (L).- (b}te 2)datos

    Carga Hcon dato Inmediato MVIH I 26 2 Cdigo de op.

    (H) .- (byte 2)datos

    Carga LOC (H y L) Indirecto MOVA.M 7E I I Cdigo de op. I (A).- ((HXL))aA de registro Cdigo de op.

    (L).-(byte 2)Carga JIL con dato Inmediato LXIH 21 3 wo ~ orden inhioI

    (H) .- (byte 3)dato ~ orden ~

    Figura 6.21. Instrucciones de transferencia de datos para el microprocesador genrico (subconjunto de instrucciones dellntel 8080/8085).

    Instrucciones de l!1II

    Descripclon .) la operacl,'~

    Carga SP con d.;;,

    Carga JlL de lO("

    Carga Ade LOC ...

    Almacena.i en LO

    Almacena /lL en li

    Almacena A en LOI (Hy L)

    Almacena H en LQ (/1 YL)

    Almacena JI en U:' (Hy L)

    Entrada de A del J."en LOC a

    Salida de A al ~ en LOC a

    Coloca selahzadc'de arrastre

    ( ) - contenido ~

    dor(MOVA. tcnico (A en I es la fuente del tion con las J destino de Cor

    ConsideraJ registro A (ac, (lll 10(00) es ne este dato d

    http://librosysolucionarios.net

    www.elsolucionario.net

  • l

    de) micropro1. Entre ellas se )la. de almacetreo La mayora tipos de opera

    !reS de la MPU. os de cualquier ier posicin de ms instrucciotcia tendr una no y dnde se , ra 6.21. El dato uaje ensambla-

    Sealizadores afectados

    Instrucciones de transferencia de datos

    PROGRAMACION DEL MICROPROCESADOR 159

    l

    l ( ) - contenido de )) - direccionamiento indirecto de registro pe - contador de programa SP - puntero de pila

    i Figura 6.21. (continuacin). dor (MOV A, L) sugiere primero la accin, que es transferir (MOV); la siguiente letra del nemo~ tcnico (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 revs, pero es el convenio utilizado por Intel Corporation con las instrucciones del 8080/8085. Algunos microprocesadores identifican la fuente y destino de forma diferente y en el orden opuesto.

    Considerar la operacin 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

    ~rico (11110000) es transferido al registro L sin ninguna modificacin. El acumulador tambin contiene este dato despus de que se completa la operacin de transferencia.

    Descripcion de Modo de Od. Formato de la Sealizadores la operacin direcciona Nemotcnico de Bytes instruccin Simblico afectados

    miento opero

    (digo de op.

    (arga SP con dato Inmediato LXISP 31 3 ~to de orden inkrioI (SP) i- (byte 2 + 3)

    flato de orden superioI

    Cdigo de op. (L) i- ((byte 2+3))

    ,

    (arga HL de Loe 00 Directo LHlO 2A 3 ~. de orden inkrioi

    ifuoc. de onlen superiot (11) i- ((byte 2+3)+ 1)

    (digo de op.

    (arga Ade Loe 00 Directo lOA 3A 3 ~. de onlen inferioI' (A) i- ((byte 2+3))

    ~deonlen~

    (digo de op.

    Almacena A en LOC aa Directo STA 32 3 R. de onlen inferia (Direccin) i- (A) ~ de onlen superiOl

    Cdigo de op. (Direccin) i- (L)

    Almacena HL en LOC aa Directo SHlO 22 3 R. de onlen inkrioi R. de onlen ~

    (Direccin +1) i- (11)

    Almacena A en Loe Indirecto MOV M.A 77 I I Cdigo de op. I ((HXLi-(A)(Hv Li de registro Almacena Hen Loe Indirecto MOV M.L 75 I I Cdigo de op. I ((HXL)) +-(L)(Hy L) de registro Almacena Hen LOC Indirecto MOVM.H 74 I I (digo de op. I ((HXL)) i- (11)(Hy L) de registro Entrada de Adel puerto Directo IN DS 2

    . deop I (A) +- ( Direccin)

    en LOC a drec. del puerto I del puerto

    Salida de A al puerto Directo OUT D3 2 Cdigo de op. I

    ( Direccin Ji- (A) en LOC a direc. del puerto I del puerto

    Coloca senalizador Inherente STC 37 I I Cdigo de op. (C}')i-I CY se pone a I de arrastre

    http://librosysolucionarios.net

    www.elsolucionario.net

  • -~-~---

    160 FUNDAMENTOS DE LOS MICROPROCESADORES

    Acumulador

    Antes de la operacin

    /1111 0000 /

    ""'"""'....0..--"~'

    Acumulador

    Despus de la operacin

    Registro L

    Figura 6.22. La instruccin de transferir A a L.

    Una segunda operacin 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 nemotcnico de la instruccin

  • ~ del dato es el s.. Si se observa ltido cuando se registro fuente

    p,. es entonces

    r au de pila

    l Ilro Par HL

    Lroo~~

    SIro micro proF"JgUra 6.24. El del programa. instruccin de )S :; siguientes dato de orden tra en la Figut) que se carga

    I nemotcnico D utiliza el

    PlDdo y tercer I memoria de Illenzar con la I cdigo de op del programa

    I

    PROGRAMACION DEL MICROPROCESADOR 161

    Cdigo de operacin

    21H

    DatoLMemoria de programa 00000011

    DatoH 0011 1100

    Antes de la operaciD

    Registro par HL

    Figura 6.24. La instruccin de carga inmediata HL.

    Registro HL

    Byte de orden superior de la direccin

    Antes de la operaci6n

    Byte de orden inferior de

    la direccin Memoria de programa

    Despus de la operaci6n

    Despus de la operaci6n

    H L

    Figura 6.25. La instruccin de carga directa HL.

    en una direccin de 16 bits (lo indica el recuadro a trazos), que sirve como puntero de direccin para encontrar la posicin (LOC) en la memoria de datos. Este byte de memoria de datos se carga entonces en el registro L. El contenido de la siguiente posicin de la memoria de datos (etiquetado LOC + 1 en este ejemplo) se carga entonces en el registro H.

    El microprocesador genrico 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 instruccin almacena A directo. El contenido del acumulador (registro A) se almacena en la posi

    http://librosysolucionarios.net

    www.elsolucionario.net

  • 162 FUNDAMENTOS DE LOS MICROPROCESADORES

    Acumulador 111000000 1

    Antes de la operacin

    Memoria de programa

    Figura 6.26. La instruccin de almacenar A directo. '1

    ,,

    l cin de memoria de datos (LOC), sealada por una direccin de 16 bits, y formada por el segundo y tercer bytes de la instruccin. Despus de la operacin, la posicin de memoria de datos (LOC) y el acumulador contienen el mismo dato (11000000 en este ejemplo).

    I

    La instruccin de entrada (input) listada en la tercera lnea del extremo inferior de la Figura 6.21 es similar a la instruccin de cargar. La fuente de la transferencia de datos es un puerto de entrada identificado por un nmero 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 instruccin de entrada. El dato del puerto de entrada sealado por el segundo byte de la instruccin es transferido al acumulador del microprocesador. En este ejemplo, 00001111 es introducido y transferido al acumulador desde un puerto identificado por LOC.

    1Ji

    Antes de la operacin

    Cdigo de operacin

    DBH

    Una direccin de 8 bits

    Des,... de la operaclOO

    IN

    i j I ! "

    Memoria de programaiJI

    Figura 6.27. La instruccin de entrada directa. "

    1

    /

    --,..

    111000000 1 Acumulador

    Despus de la operad6a

    r---&--..., Memoria de datos

    Cdigo de operacin

    32H

    i Byte de orden inferior de la direccin

    Byte de orden superior de la direccin

    (LOC)

    .~"""' d, ru=;6n r-----------,I Direccin de 16 bits I ..... - -- -----~

    Acumulador

    6.32. Acud

    Solucio Se

    destin4

    6.33. Acud del da

    SolD

    Se! progr-a;

    6.34. Acud mayO! la mie

    Soluri Seg

    dos poi

    6.35. AeudiJ carga I

    So..

    Scatpara"

    '] 1: i

    6.36. El COI es_

    Sol~

    El llHx)(]

    .]1

    I

    http://librosysolucionarios.net

    www.elsolucionario.net

  • / (

    PROORAMACION DEL MICROPROCESADOR 163

    PROBLEMAS RESUELTOS

    6.32. Acudir a la Figura 6.21. Durante el uso de la instruccin MOV H"A, el registro __ (A, H) es la fuente del dato mientras que el registro __ (A, H) es el destino.

    Solucin: Segn la informacin de la Figura 6.21, el registro A es la fuente mientras que el registro H es el

    destino del dato durante la ejecucin de la instruccin MQV H,A.

    633. Acudir a la Figura 6.21. En la instruccin PCHL, el registro __ (HL, Pe) es la fuente del dato mientras que el ______ de 16 bits es el destino.

    ~-,

    ~~~..: Solucin: Segn la informacin 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 ejecucin de la instruccin PCHL.

    6.34. Acudir a la Figura 6.2 t. Los sealizadores __ (son afectados, no son afectados) por la mayora de las operaciones de transferencia de datos en el repertorio de instrucciones de la microcomputadora genrica.

    Solucin: Segn la informacin de la columna derecha de la Figura 6.21, los sealizadores no son afecta

    dos por la mayora de las operaciones de transferencia de datos.

    6.35. Acudir a la Figura 6.21. El nemotcnico del lenguaje ensamblador para la instruccin de a por el segun carga utilizada en la Figura 6.28 es ___ .

    emoria de datos Solucin:

    erior de la Figu Segn la informacin de la tabla de la Figura 6.21, el nemotcnico del lenguaje ensamblador I es un puerto de para la instruccin de carga utilizada en la Figura 6.28 es MVI A. !Cumulador de la , entrada. El dato lo al acumulador Acumulador i) al acumulador

    Antes de la operacin Despus de l. operacin

    Memoria de programa

    acin Dato

    Figura 6.28.

    6.36. El contenido del acumulador de la Figura 6.28 despus de la operacin de carga es __ (8 bits).

    , Solucin:

    El contenido del acumulador de la Figura 6.28 despuS de la operacin de carga es II 10001 1.

    http://librosysolucionarios.net

    www.elsolucionario.net

  • 1

    , 164 FUNDAMENTOS DE LOS MICROPROCESADORES

    6.37. Acudir a la Figura 6.21. La operacin de carga mostrada en la Figura 6.28 utiliza direccionamiento __ (directo, inmediato).

    Solucin: Segn la informacin de la tabla de la Figura 6.21, la operacin de carga mostrada en la

    Figura 6.28 utiliza direccionamiento inmediato.

    6.38. Acudir a la Figura 6.21. La instruccin MOV A,M tiene el cdigo de op 7EH, utiliza direccionamiento ___ (directo, indirecto de registro) y la fuente de datos es una posicin de la memoria de __ (datos, programa) sealada por el registro par HL.

    Solucin: Segn la informacin de la Figura 6.21, la instruccin MOV A,M tiene el cdigo de op 7EH,

    utiliza direccionamiento indirecto de registro y la fuente de datos es una posicin de memoria sealada por el registro par HL.

    6.39. Acudir a la Figura 6.21. La instruccin SHLD tiene el cdigo de op 22H y utiliza direc-I cionamiento ___ (directo, inmediato).

    l. SoluciD: Segn la informacin de la Figura 6.21, la instruccin SHLD tiene el cdigo de op 22H Y utiliza r

    direccionamiento directo.

    j j:, , ,

    6.40. Acudir a la Figura 6.21. La instruccin almacena directo HL (cdigo de op == 22H) es i una instruccin de __(nmero) bytes. Los 2 ltimos bytes de la instruccin del l'r \ programa contienen informacin sobre ___ (datos, direcciones). Solucin:

    Segn la informacin de la Figura 6.21, la instruccin (l!lmacena directo Hv> (cdigo det op == 22H) es una instruccin de 3 bytes. Los 2 ltimos bytes de la instruccin del programa contienen informacin sobre direcciones.

    6.41. Acudir a la Figura 6.21. La fuente del dato cuando se utiliza la instruccin SACAR (OUT) en la Figura 6.29 es el registro __ (A, H, L).

    Solucin: De acuerdo con la Figura 6.21, la fuente del dato cuando se utiliza la instruccin OUT en la

    Figura 6.29 es el registro A, que tambin se denomina acumulador.

    Despus de la operacin~ Puerto de salidaIr--"--?--'OOT ""

    (1)

    Cdigo de operacin1; , Memoria de 1 programa 0000 000 1

    Figura 6.29.

    .'

    6.42. Des con

    Solll

    dato gran

    6.6. REPI OPEI

    Las instrucci genrico que nes se referer rarn sinnir bifurcacin \ nes de transj;

    Instrucciones de bifur.

    Descripc:idll * la opeaciOO

    Salta a LOC Gil

    Salta a LOC tllui

    Salta atoe l1li si tr4 el sealilador de I

    Salta a LOC Gil 51 coloca e111i1f11i111 de aJTlIStre

    ( ) = contenido di: pe - contador de ~

    http://librosysolucionarios.net

    www.elsolucionario.net

  • I

    8 utiliza direc

    ~ mostrada en la

    p 7EH, utiliza I)S es una posi ;mHL.

    Iiao de op 7EH, in de memoria

    J, r utiliza direc

    ~ DI> 22H y utiliza

    ~ ~ op =22H) es !lStruccin del

    ~.

    rl (cdigo de 11 del programa

    t ::cin SACAR

    tin OUT en la

    L,.

    ,

    $-.

    PROGRAMAOON DEL MICROPROCESADOR 165

    6.42. Despus de la operacin sacar en la Figura 6.29, el puerto de salida nmero __(hex) contendr el dato __ (8 bits).

    Solucin: Despus de la operacin sacar de la Figura 6.29, el puerto de salida nmero OlH contendr el

    dato 11110011. La direccin del puerto de salida proviene del segundo byte de la memoria del programa.

    6.6. REPERTORIO DE INSTRUCCIONES: OPERACIONES DE BIFURCACION

    Las instrucciones de bifurcacin son la cuarta categona de las operaciones del microprocesador genrico que se van a considerar y estn resumidas en la Figura 6.30. Observar que las operaciones se referencian como instrucciones de salto, aunque los trminos salto y bifurcacin se considerarn sinnimos en este captulo. Algunos fabricantes hacen distinciones entre instrucciones de bifurcacin y de salto. Las operaciones de bifurcacin o de salto a veces se denominan instrucciones de transferencia de control. Como las operaciones de la Figura 6.30 son un subconjunto del

    Instrucciones de bifun:acin

    Descripcin de la operacin

    Salta a Loe aa

    SaIIlI a Loe aa si es O

    Modo de direcciona

    miento

    Inmediato

    Inmediato

    Nemotcnico

    JMP

    lZ

    Cd. de

    opero

    C3

    CA

    Bytes

    3

    3

    Fonnato de la instruccin

    Cdigo de op.

    ~ Ol rotoiD&:ria ~Olll'den~

    Cdigo de op.

    pm:. de roto inICrioi ~. de roto superio

    Simblico

    (I'C) .... (Direccin)

    Si el seilalizador

    de O- 1. entonces (I'C) .... (direccin)

    Senalizadon:s afectados

    SaIIlI a Loe aa si no es O Inmediato lNZ C2 3 Cdigo de op.

    prec. de Il'den inICrioi ~OlrotoSUtOO

    Si el seIlalizador

    de O O, entonces

    (I'C) .... (direccin)

    Salta aLOC da si se coloca el sealizador de arrastr

    Imnediato JC DA 3 Cdigo de op.

    Prec. de Il'den infeOO ~Ol roto superio

    Si el seilalizador de

    arrastre 1, entonces (I'C)

  • 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 ms tarde en este captulo.

    La microcomputadora normalmente ejecuta instrucciones en orden secuencial. El contador de programa de 16 bits del microprocesador genrico siempre sigue la pista de la direccin de la siguiente instruccin que se va a buscar en memoria y ejecutar. El contador de programa normalmente sigue una secuencia ascendente aumentando de uno en uno. Las instrucciones de salto o bifurcacin proporcionan un mtodo para cambiar el valor del contador de programa, alterando as la secuencia normal de ejecucin del programa.

    U.s instrucciones de salto o bifurcacin se subdividen normalmente en operaciones de salto incondicional y de salto condicional. La primera instruccin listada en la Figura 6.30 es una instruccin de salto incondicional. La instruccin saltar inmediato es una instruccin de 3 bytes, utilizada para cargar una direccin especfica en el contador del programa de la CPU. Un problema ejemplo que utiliza esta instruccin, de salto incondicional, se muestra en la Figura 6.31 donde la direccin 2000H se est cargando en el contador del programa. La informacin de la direccin sigue inmediatamente al cdigo de op, y por tanto, se denomina direccionamiento inmediato. Observar en la Figura 6.31 que la parte de orden inferior de la direccin 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 direccin. Una instruccin de este tipo se utiliza en un principio para inicializar el contador de programa cuando empiece la ejecucin de un nuevo programa. La instruccin de salto o bifurcacin incondicional puede considerarse como un mtodo de cargar una nueva direccin en el contador de programa.

    Cdigo de operacin

    Memoria de programa

    Antes de la operaciD Despus de la operacin

    Contador de programa

    Figura 6.31. Instruccin de bifurcacin incondicional.

    Las cuatro ltimas operaciones de bifurcacin, detalladas en la Figura 6.30, son instrucciones de salto condicional. Estas instrucciones harn que la direccin inmediata se coloque en el contador de programa slo si se satisface la condicin especificada. En cualquier otro caso el contador de programa, simplemente, contar en secuencia ascendente. Un problema ejemplo que utiliza la instruccin salta si cero aparece en la Figura 6.32. En este ejemplo, el contador de programa contiene 20 13H antes de la operacin y continuar en secuencia ascendente hasta que el sealizadar de cero se ponga a L La CPU evala la condicin del sealizador de cero en el registro de status y encuentra que est a l. Esto significa que el resultado de la ltima operacin lgica o aritmtica fue cero; las condiciones son correctas para un salto, y la MPU carga el contador de

    Memoria de

    Anf~

    Contador de Jl

    Registro

    programa con l. ma, por lo que instruccin que 2013H como PI memoria del po la memoria del l mente sea el m

    Las instrucci procesadores. Se salto o bifurcac dos tcnicas de I

    6.43. Las DI 0_

    Sol~ Las .

    da de C(J

    6.44. Se dice toma de

    Solucilr Las (1

    6.45. Acudir 1 salto. ~

    ~i~;] J

    III'~ ..... .

    http://librosysolucionarios.net

    www.elsolucionario.net

  • Ilrucciones de

    1. El contador Iireccin de la ;rama normalInes de salto o ma. alterando

    ~nes de salto a 6.30 es una nstruccin de le la CPU. Un :a en la Figuil informacin ccionamiento [l de 16 bits se te contiene la I un principio programa. La odo de cargar

    de programa

    PROGRAMACION DEL MICROPROCESADOR 167

    Cdigo de operacin

    Contador de programa I 00 1 O 0000 I000 100 1 1 I

    Despus de la opeftcln

    L..__--I-___..... Contador de programa

    Registro de status' t --1 1 I Cy z

    Figura 6.32. La Instruccin de salta si cero.

    programa con la nueva direccin 2008H. La nueva direccin proviene de la memoria de programa, por lo que se dice que esta instruccin utiliza direccionamiento inmediato. La siguiente instruccin que se va a ejecutar ser la instruccin de la posicin de memoria 2008H y no la de la 2013H como podria esperarse. El microprocesador genrico salta a una nueva posicin de la memoria del programa. Los saltos o bifurcaciones pueden hacerse hacia atrs o hacia adelante en la memoria del programa. El ejemplo de la Figura 6.32 ilustra un salto hacia atrs, que probablemente sea el ms comn.

    Las instrucciones de salto o bifurcacin se encuentran en casi todos los programas de microprocesadores. Son valiosas debido a su caracteristica de toma de decisiones. Las instrucciones de

    }salto o bifurcacin se utilizan para formar ciclos y saltos en el programa. Los ciclos y saltos son dos tcnicas de programacin que se estudiarn ms tarde en este captulo.

    PROBLEMAS RESUELTOS

    6.43. Las instrucciones de bifurcacin tambin se denominan de ___ (brinco, salto) o ___ de control.

    Solucin:

    Las instrucciones de bifurcacin tambin se denominan instrucciones de salto o de transferenrucciones cia de control,

    r en el contaD el contador 6.44. Se dice que las operaciones __ (lgicas, de salto condicional) son instrucciones de que utiliza la toma de decisin. de programa

    Solucin: le el sefUtliza

    Las operaciones de salto condicional son instrucciones de toma de decisin. el registro de cin lgica o 6.45. Acudir a la Figura 6.30. El nemotcnico del lenguaje ensamblador para la operacin de ,contador de salto, esbozada en la Figura 6.33, es ___ .

    Jhttp://librosysolucionarios.net

    www.elsolucionario.net

  • -'j5*':>

    168 fUNDAMENTOS DE LOS MICROPROCESADORES

    Cdigo de Direccin operacin

    Memoria de programa I

    20lOH cm 201m 00000000

    2012H 00100000

    Antes de la operacin {_~~~ ___ r---J-___Des_'_U_S_d..,e la operacin(

    ? Contador de programa Contador de programa I 00 1 O 0000 000 I 00 11 I Nemotecnico Registro de status 1 Ot --j 1 I

    Cy z

    Figura 6.33.

    Solucin:

    El cdigo de operacin para la operacin 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 nemotcnico del lenguaje ensamblador para esta operacin de salto es JNZ.

    6.46. Acudir a la Figura 6.30. El contenido del contador de programa de la Figura 6.33 despus de la operacin salta si no cero es ___ (hex).

    Solucin:j El sealizador de cero del registro de status de la Figura 6.33 se pone al, lo cual significa que el

    resultado de la ltima operacin aritmtica o lgica fue cero. La condicin para el salto no se satisface. La direccin 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 instruccin de salto condicional. La siguiente instruccin que se va a ejecutar se localiza en 2013H.

    6.47. Acudir a la Figura 6.30. El nemotcnico de la instruccin salta si arrastre de la Figura 6.34 es Je, mientras que el cdigo de operacin es __ (hex).

    Cdigo de Direccin operacin

    2000H ?

    Memoria de programa 0000 0000

    2002H 00100001

    Antes de la operacin Des,u& de la operacin

    Contador de programa lii~ 0000 00 11 ? Contador de programa1-------_.....1 Registro de status I 1 f-- j O I

    Cy z

    Figura 6.34.

    Solud

    El tabla (

    6.48. El COII es_

    Soludt

    E/s salto. 1. cin qu

    6.7. REPER OPERA,

    Las instruccionl' microprocesadol servar que el m instrucciones de

    La instrucci microprocesador un pequeo grol encuentra la prir salto en los siguie se guarda en la pi subrutina en la p segundo se ejecul

    Instrucciones de lIamdt .. '1

    Descripcin de la operacin

    Llama ala subrutita en lOC aa

    Vuelta de subrutina

    ( ) - contenido de - direccionamiento I Pe - contador de prognu SP - puntero de pila

    Figura 6.35.

    http://librosysolucionarios.net

    www.elsolucionario.net

  • operacin

    :::Ontador de programa

    .,33 es C2H. A partir I1Samblador para esta

    ~. =gura 6.33 despus

    tcuo! signifi"" que el D para el salto no se no son cargadas en el 10 estaba antes de la a:cutar se localiza en

    lnstre de la Figu

    (

    PROGRAMACION DEL MICROPROCESAOOR 169

    Solucin:

    El nemotcnico de la instruccin de

  • 170 FUNDAMENTOS DE LOS MICROPROCESADORES

    Programa principal

    Direccin Contenido

    CALL

    200EH OOH

    200DH

    Salta

    200FH IOH

    i 2010H

    ~

    1 IOOOH Subrutina

    que produce un retardo de I seg

    Figura 6.36. Flujo de programa del programa principal a la subrutina y vuelta utilizando las instrucciones de retorno y llamada.

    \

    en la pila (201OH) es devuelta al contador de programa, y la MPU contina 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 instruccin de llamada en la direccin 2020H. La MPU guarda en la pila la direccin de la siguiente instruccin (2023H) y salta a la subrutina en la direccin loooH. Hasta que se completa de nuevo la subrutina de retardo de tiempo, la instruccin de vuelta saca de la pila la direccin de la siguiente instruccin del programa principal (2023H) y la transfiere al contador de programa. Se puede utilizar muchas veces una subrutina en la ejecucin de un programa principal. La subrutina puede almacenarse en una RAM o ROM.

    La instrucci Figura 6.37 det contador de pr nueva direccil seguida a trav~

    Puntero de pila

    210AH ~

    Contador de progr.u

    Antes.

    Memoria de J)I'O@:l'

    1. El pum 2. El b~1e

    posicin 3. El punte 4. El byted

    2108H. S. La direc

    program 6. La dim::

    program

    La MPU ir ah< ejemplo). Esta e'!

    Considerar el tina. La instrucc programa. La SI crculos de la F~

    http://librosysolucionarios.net

    www.elsolucionario.net

  • ~ uce do I

    zando

    LprinciDID , instrucciones in 2020H. La subrutina en la lpo. la instrucrama principal 13 subrutina en l-\M o ROM.

    PROGRAMACION OEL MICROPROCESADOR 171

    La instruccin de llamada combina las funciones de las operaciones de introducir y saltar. La Figura 6.37 detalla el uso de la instruccin de llamada. Primero introduce el contenido actual del contador de programa en la pila. A continuacin, el contador de programa se carga con una nueva direccin, para realizar el salto a la de la subrutina. La secuencia de acciones puede ser seguida a travs de los nmeros inscritos en crculos en la Figura 6.37.

    Pila Pila Puntero 2107 de pila 2107Puntero

    de pila

    210AH'--__......J

    Contador de programa

    Antes de la operacin

    Memoria de programa f----f----j200FH 00010000

    2108

    2109

    2108

    2109 (!J3, - - - :12108H I

    1 , , , ~ ,

    I--..j....., 2 lOA , ,210A .... ___ ~"n----+--{ ,

    L-___~--~~~

    2000H COH

    200EH

    , ,

    Despus de la operacin

    Figura 6.37. La instruccin 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

    posicin 21 09H. 3. El puntero de pila se decrementa de 2109H a 2108H. 4. El byte de orden inferior del contador de programa es introducido en la pila en la posicin

    2108H. 5. La direccin de orden inferior es transferida desde el segundo byte de la memoria de

    programa al byte inferior del contador de programa. 6. La direccin de orden superior es transferida desde el tercer byte de la memoria de

    programa al byte superior del contador de programa.

    La MPU ir ahora a la nueva direccin sefialada por el contador de programa (1 OOOH en este ejemplo). Esta es la direccin de la primera instruccin de la subrutina.

    Considerar el ejemplo mostrado en la Figura 6.38 utilizando la instruccin de vuelta de subrutina. La instruccin de retomo (o de vuelta) debe transferir el contenido de la pila al contador de programa. La secuencia de acciones puede ser seguida a travs de los nmeros inscritos en crculos de la Figura 6.38.

    "

    http://librosysolucionarios.net

    www.elsolucionario.net

  • 172 RJNDAMENTOS DE LOS MICROPROCESADORES

    PilaPila Puntero

    2107de pila 2108 000100002108H

    2109 00100000

    ,'21OA ' . .,/ Antes de la operacin Despus de la operacin

    Contador de programa ---_......---' Figura 6.38. la instruccin de vuelta de subrutina.

    1. El tope de la pila (posicin 2108H) es sacado, y su contenido transferido al byte inferior del contador de programa.

    2. El puntero de pila es incrementado de 2108H a 2109. 3. La parte superior de la pila (ahora posicin 2109H) es sacada, y su contenido transferido

    al byte superior del contador de programa. 4. El puntero de pila es incrementado de 2109H a 2IOAH.

    El contador de programa ahora contiene la direccin de 16 bits (20 l OH) de la siguiente instruccin que se va a buscar en la memoria del programa.

    PROBLEMAS RESUELTOS

    6.49. La instruccin de ___ (llamada, vuelta) es parte del programa principal, mientras que la instruccin de __(llamada, vuelta) es el fin de una subrutina.

    Solucin: Ver la Figura 6.36. la instruccin de llamada es parte del programa principal, mientras que la

    instruccin de vuelta est al final de una subrutina.

    6.50. La llamada es una instruccin de __ (nmero) bytes. Los 2 ltimos bytes contienen la direccin de la primera instruccin de __ (memoria principal, una subrutina).

    Solucin: La llamada es una instruccin de 3 bytes, segn la tabla de la Figura 6.35. Los 2 ltimos bytes

    contienen la direccin de la primera instruccin de la subrutina.

    6.51. La operacin de llamada realiza las funciones de __(sacar, introducir) y de __ (sumar, saltar).

    Solucin: La operacin de llamada realiza las funciones de las instrucciones de introducir y saltar.

    6.52. Acudir a la Figura 6.39. El contenido de la posicin de la pila 2109H despus de la operacin de llamada ser de __ (8 bits).

    Puntero de pila

    210AH ~

    Contador de progran

    Antes

    Memoria de programo

    .'1

    Solucidll.: El conte

    ser 00 I ()()( pila, de ac-u

    6.53. Acudir a operacin

    Solucidll.: El COntI:

    I1amada ser

    6.54. Acudir a t cin de lIa

    Solucia: Desp.

    superior de

    655. Acudir a de llamad,

    Soludc'lc El conte

    ser OOIOH

    6.56. Las illStrul parejas. iD

    SolucWc Las instl

    http://librosysolucionarios.net

    www.elsolucionario.net

  • I

    Puntero de pila

    ~>----=-;12IOAH I g- operacin

    dor de programa

    tI byte inferior ~ nido transferido

    t iguiente instruc

    al. mientras que

    l mientras que la

    b~1es contienen a subrutina).

    2 ltimos bytes

    !:ir) y de __

    ~ cir y saltar.

    r despus de la

    t

    PROGRAMAClON DEL MICROPROCESADOR 173

    Pila Pila

    2107

    210

    2109

    2107

    2108'? PunteroPuntero de pila de pila 2109'?

    210AH ~L...:2--OA-L.:___..J I '? I: 2 lOA :

    Antes de la operacin Despus de la operacin Cdigo de operacin

    2000H CDH Contador de programa '--------'------'

    Memoria de programa 200 1H 1----+----1./

    2oo2H 0000 0000

    Figura 6.39.

    Solucin:

    El contenido de la posicin de pila 2109H de la Figura 6.39 despus de la operacin 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.

    6.53. Acudir a la Figura 6.39. El contenido de la posicin de la pila 2108H despus de la operacin de llamada ser __ (8 bits).

    Solucin:

    El contenido de la posicin de la pila 2108H en la Figura 6.39 despus de la operacin de llamada ser 00000o 11. El byte de orden inferior del PC ser almacenado en la segunda pila.

    6.54. Acudir a la Figura 6.39. El puntero de pila contendr __ (bex) despus de la operacin de llamada.

    Solucin:

    Despus de la operacin de llamada en la Figura 6.39, el puntero de pila sealar a la parte superior de la pila, que estar en la posicin 2108H.

    6.55. Acudir a la Figura 6.39. El contenido del contador e programa despus de la operacin de llamada ser __ (bex).

    Solucin:

    El contenido del conta