Capitulo_8.__Microprocesadores

29
Universidad de Santiago Facultad de Ingeniería JGL 1 CAPITULO 8 MICROPROCESADORES

description

Texto guía sobre Microprocesadores

Transcript of Capitulo_8.__Microprocesadores

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    1

    CAPITULO 8

    MICROPROCESADORES

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    2

    EL MICROPROCESADOR 8080

    El microprocesador 8080 es un Chip de alta integracin ( LSI ) de 40 pines que contiene un BUS de

    Direcciones de 16 lneas , un Bus de Datos de 8 lneas, 10 lneas de control, 4 lneas para fuentes de

    poder y dos entradas para un reloj de dos fases.

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    3

    CICLO DE OPERACION

    El procesador ejecuta instrucciones que residen en una memoria externa. Las

    instrucciones son de 1, 2 3 bytes, siendo siempre el primer byte el cdigo de la instruccin. Las

    instrucciones deben estar puestas en posiciones consecutivas de la memoria, constituyendo un programa.

    El procesador, en un instante dado trae, desde la posicin de memoria indicada por el

    CONTADOR DE PROGRAMA, un byte (el cdigo de la instruccin) y lo coloca en el REGISTRO DE

    INSTRUCCIONES. Posteriormente, incrementa el Contador de Programa en 1 y procede a la ejecucin

    de la instruccin. Terminada la ejecucin vuelve a repetir el ciclo. Es decir, el traer un byte desde la

    posicin de memoria indicada por el contador de programa, colocarlo en el registro de instrucciones,

    incrementar el contador de programa y ejecutar la instruccin es un ciclo que se repite indefinidamente

    en el tiempo, mientras el procesador se encuentre encendido.

    Debe tenerse presente que el contador de programa se incrementa en 1 cada vez que se

    ingresa a la CPU un byte de instruccin.

    REGISTROS DE PROPOSITO GENERAL

    Existen 7 registros de propsito general, a saber, A, B, C, D, E, H y L. Estos registros de

    8 bit pueden ser usados por el usuario para acumular informacin. Pueden ser incrementados o

    decrementados en 1.

    El registro A es conocido como el ACUMULADOR y puede, adems de servir como

    registro de acumulacin, efectuar operaciones aritmeticas de suma y resta u operaciones lgicas AND,

    OR, OR-EXCLUSIVO Y COMPARE. Trabaja con 5 banderas de condicin (flip-flops) que dan cuenta

    de su estado.

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    4

    EL PUNTERO DE PILA (STACK POINTER)

    El Stack o Pila es una regin de memoria usada para guardar datos transitoriamente y que

    debern ser usados posteriormente. Esta regin est apuntada por el registro puntero del stack (SP).

    Cuando se ingresa un byte en el stack el puntero primero se decrementa en 1. Cuando se saca un byte

    del stack, primero se extrae el dato y despus se incrementa. Luego, el puntero est siempre indicando la

    posicin de memoria del ltimo dato ingresado al stack.

    Este sistema es conocido con el nombre LIFO (Last In First Out).

    El stack es usado por las instrucciones de llamado a subrutinas CALL y por las

    Interrupciones. Adems, pueden ingresarse o sacarse datos del stack por medio de las instrucciones

    PUSH Y POP

    SEALES Y BUSES DEL MICROPROCESADOR

    FUENTES DE PODER

    pin 28 +12 Volts

    pin 20 +5 Volts

    pin 2 Tierra ( GND )

    pin 11 -5 Volts

    RELOJ

    El 8080 requiere de un RELOJ DE DOS FASES NO TRASLAPADO

    pin 22 Fase 1 del reloj

    pin 15 Fase 2 del reloj

    BUS DE DIRECCIONES

    El microprocesador 8080 puede direccionar directamente hasta 65.536 ( 64 Kilos ) de posiciones

    de memoria a travs del uso de un bus de direcciones de 16 lneas.

    pin 25 Bit A0., el bit menos significativo ( LSB )

    pin 26 Bit A1

    pin 27 Bit A2

    pin 29 Bit A3

    pin 30 Bit A4

    pin 31 Bit A5

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    5

    pin 32 Bit A6

    pin 33 Bit A7, el bit ms significativo ( MSB ) del cdigo de dispositivo

    pin 34 Bit A8, el bit menos significativo del cdigo de dispositivo

    pin 35 Bit A9

    pin 1 Bit A10

    pin 40 Bit A11

    pin 37 Bit A12

    pin 38 Bit A13

    pin 39 Bit A14

    pin 36 Bit A15, el bit ms significativo ( MSB )

    BUS DE DATOS

    El 8080 es un microprocesador de 8 bits, lo que significa que tiene un registro acumulador de 8

    bit, varios registros de propsitos generales de 8 bit y un bus de datos bidireccional de 8 bit. El que este

    bus sea bidireccional significa que los datos pueden salir del microprocesador o ser ingresados a travs

    de el. Y, adems es un bus de tres estados ( 1, 0 desconectado ).

    pin 10 Bit D0 del dato, el menos significativo

    pin 9 Bit D1 del dato

    pin 8 Bit D2 del dato

    pin 7 Bit D3 del dato

    pin 3 Bit D4 del dato

    pin 4 Bit D5 del dato

    pin 5 Bit D6 del dato

    pin 6 Bit D7 del dato, el ms significativo

    CONTROLES

    Los controles determinan como debe funcionar el microprocesador.

    Existen cuatro seales de entrada de control, que son :

    pin 12 RESET. Un 0 lgico en esta entrada lleva a cero el contador de programa

    pin 14 INT, Requerimiento de Interrupcin. Un 1 lgico en esta entrada generar un

    requerimiento de interrupcin, que el microprocesador reconocer al finalizar la

    ejecucin de la instruccin presente o cuando est detenido. Si la CPU est en el

    estado HOLD, o si la bandera de permiso de interrupcin est en 0, el

    requerimiento de interrupcin no ser concedido.

    pin 23 READY. Un 1 lgico le indicar al 8080 que un dato est listo en el bus de

    datos. Esta seal, de acuerdo con la literatura Intel, es usada para sincronizar la

    CPU con memorias lentas o con dispositivos I/O. Si despus de enviar una

    direccin por el bus de direcciones el 8080 no recibe un 1 lgico en READY, el

    microprocesador entrar en un estado WAIT, mientras esta lnea permanezca en

    0. Esta entrada puede ser usada tambin para llevar la CPU paso a paso.

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    6

    pin 13 HOLD. Un 1 lgico en esta entrada hace que la CPU entre al estado HOLD, que

    permite a un dispositivo externo tomar el control de los buses de dato y

    direcciones, tan pronto como el 8080 halla terminado de usarlos en el ciclo de

    mquina presente. Cuando la CPU entra al estado HOLD, el bus de datos y el de

    direcciones tomarn el estado de alta impedancia (tercer estado). La CPU

    indicar que est en el estado HOLD por medio de la seal HLDA.

    HOLD es reconocido bajo dos condiciones:

    1) La CPU se encuentra en el estado HALT, o

    2) La CPU est en el estado T2 o Tw y la seal READY se encuentre en

    1.

    Las 6 salidas de control del 8080 son:

    pin 24 WAIT. Esta seal indica con un 1 lgico que la CPU se encuentra en el estado

    WAIT.

    ___

    pin 18 WR o WRITE. Esta seal es usada para escribir en Memoria o en un dispositivo

    I/O. Cuando este pin esta en 0 lgico el dato en el bus de datos est estable y

    puede ser ledo.

    pin 21 HLDA o HOLD ACKNOWLEDGE. Esta salida toma el valor lgico 1 en

    respuesta a la seal de entrada HOLD. Indica que el bus de datos y de

    direcciones toman el estado de alta impedancia. La seal HLDA comienza: 1)

    en T3 para una operacin de lectura de memoria o de entrada, o 2) el perodo de

    reloj que sigue a T3 para una operacin de escritura en memoria o salida.

    pin 16 INTE o INTERRUPT ENABLE. Esta seal indica el contenido de la bandera

    interna de permiso de interrupcin. Este flip-flop (bandera) puede ser puesto en 0

    o en 1 para habilitar o deshabilitar el sistema de interrupciones por medio de las

    instrucciones EI o DI respectivamente. Esta bandera es limpiada

    automticamente ( y por lo tanto desabilitando el sistema de interrupciones ) en

    el tiempo T1 del ciclo de mquina FETCH cuando una interrupcin es aceptada.

    Esta bandera tambin es limpiada por medio de la seal RESET.

    pin 19 SYNC ( seal de sincronizacin ). Esta seal se mantiene en 1 lgico durante el

    primer ciclo de reloj de cada ciclo de mquina.

    pin 17 DBIN o DATA BUS IN. Cuando esta seal toma el valor lgico 1 indica que el

    Bus de Datos se encuentra en su modo de entrada

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    7

    REPERTORIO DE INSTRUCCIONES PARA EL MICROPROCESADOR

    INTEL 8080/8085

    Nemotcnico

    Bytes

    Cdigo de op

    (hex)

    Descripcin

    ADD A

    1

    87

    Suma A a A (doble A)

    ADD B

    1

    80

    Suma B a A

    ADD C

    1

    81

    Suma C a A

    ADD D

    1

    82

    Suma D a A

    ADD E

    1

    83

    Suma E a A

    ADD H

    1

    84

    Suma H a A

    ADD L

    1

    85

    Suma L a A

    ADD M

    1

    86

    Suma LOC memoria (H&L) a A

    ADI v

    2

    C6

    Suma dato inmediato v a A

    ADC A

    1

    8F

    Suma A a A con arrastre (doble A con arrastre)

    ADC B

    1

    88

    Suma B a A con arrastre

    A

    ADC C

    1

    89

    Suma C a A con arrastre

    ADC D

    1

    8A

    Suma D a A con arrastre

    ADC E

    1

    8B

    Suma E a A con arrastre

    ADC H

    1

    8C

    Sauma H a A con arrastre

    ADC L

    1

    8D

    Suma L a A con arrastre

    ADC M

    1

    8E

    Suma LOC memoria (H&L) a A con arrastre

    ACI v

    2

    CE

    Suma dato inmediato v a A con arrastre

    ANA A

    1

    A7

    Examina A y borra arrastre

    ANA B

    1

    A0

    AND B con A

    ANA C

    1

    A1

    AND C con A

    ANA D

    1

    A2

    AND D con A

    ANA E

    1

    A3

    AND E con A

    ANA H

    1

    A4

    AND H con A

    ANA L

    1

    A5

    AND L con A

    ANA M

    1

    AND LOC memoria (H&L) con A

    ANI v

    2

    AND dato inmediato v con A

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    8

    Nemotcnico

    Bytes

    Cdigo de op

    (hex)

    Descripcin

    CALL aa

    3

    CD

    Llama a subrutina en direccin aa

    CZ aa

    3

    CC

    Si cero, llama a subrutina en direccin aa

    CNZ aa

    3

    C4

    Si no cero, llama a subrutina en direccin aa

    CP aa

    3

    F4

    Si ms, llama a subrutina en direccin aa

    CM aa

    3

    FC

    Si menos, llama a subrutina en direccin aa

    CC aa

    3

    DD

    Si arrastre, llama a subrutina en direccin aa

    CNC aa

    3

    D4

    Si no arrastre, llama a subrutina en direccin aa

    CPE aa

    3

    EC

    Si paridad par, llama a subrutina en direccin aa

    C

    CPO aa

    3

    E4

    Si paridad impar, llama a subrutina en direccin aa

    CMA

    1

    2F

    Complementa A

    CMC

    1

    3F

    Complementa arrastre

    CMP A

    1

    BF

    Pone en 1 la bandera de cero

    CMP B

    1

    B8

    Compara A con B

    CMP C

    1

    B9

    Compara A con C

    CMP D

    1

    BA

    Compara A con D

    CMP E

    1

    BB

    Compara A con E

    CMP H

    1

    BC

    Compara A con H

    CMP L

    1

    BD

    Compara A con L

    CMP M

    1

    BE

    Compara A con LOC memoria (H&L)

    CPI v

    2

    FE

    Compara A con dato inmediato v

    DAA

    1

    27

    Ajuste decimal A

    DAD B

    1

    09

    Suma B&C a H&L

    DAD D

    1

    19

    Suma D&E a H&L

    D

    DAD H

    1

    29

    Suma H&L a H&L (doble H&L)

    DAD SP

    1

    39

    Suma SP a H&L

    DCR A

    1

    3D

    Decrementa A

    DCR B

    1

    05

    Decrementa B

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    9

    Nemotcnico

    Bytes

    Cdigo de op

    (hex)

    Descripcin

    DCR C

    1

    0D

    Decrementa C

    DCR D

    1

    15

    Decrementa D

    DCR E

    1

    1D

    Decrementa E

    DCR H

    1

    25

    Decrementa H

    DCR L

    1

    2D

    Decrementa L

    D

    DCR M

    1

    35

    Decrementa LOC memoria (H&L)

    DCX B

    1

    0B

    Decrementa B&C

    DCX D

    1

    1B

    Decrementa D&E

    DCX H

    1

    2B

    Decrementa H&L

    DCX SP

    1

    3B

    Decrementa SP

    DI

    1

    F3

    Inhabilita interrupciones

    E

    EI

    1

    FB

    Habilita interrupciones

    H

    HLT

    1

    76

    Alto hasta interrupcin

    IN v

    2

    DB

    Entrada desde el dispositivo v

    INR A

    1

    3C

    Incrementa A

    INR B

    1

    04

    Incrementa B

    INR C

    1

    0C

    Incrementa C

    INR D

    1

    14

    Incrementa D

    I

    INR E

    1

    1C

    Incrementa E

    INR H

    1

    24

    Incrementa H

    INR L

    1

    2C

    Incrementa L

    INR M

    1

    34

    Incrementa LOC memoria (H&L)

    INX B

    1

    03

    Incrementa B&C

    INX D

    1

    13

    Incrementa D&E

    INX H

    1

    23

    Incrementa H&L

    INX SP

    1

    33

    Incrementa SP

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    10

    Nemotcnico

    Bytes

    Cdigo de op

    (hex)

    Descripcin

    JMP aa

    3

    C3

    Salta a direccin aa

    JZ aa

    3

    CA

    Si cero salta a direccin aa

    JNZ aa

    3

    C2

    Si no cero, salta a direccin aa

    JP aa

    3

    F2

    Si ms, salta a direccin aa

    J

    JM aa

    3

    FA

    Si menos, salta a direccin aa

    JC aa

    3

    DA

    Si arrastre, salta a direccin aa

    JNC aa

    3

    D2

    Si no arrastre, salta a direccin aa

    JPE aa

    3

    EA

    Si paridad par, salta a direccin aa

    JPO aa

    3

    E2

    Si paridad impar, salta a direccin aa

    LDA aa

    3

    3A

    Carga A con contenido direccin aa

    LDAX B

    3

    0A

    Carga A con contenido de LOC memoria ( B & C )

    LDAX D

    3

    1A

    Carga A con contenido de LOC memoria ( D & E )

    L

    LHLD aa

    3

    2A

    Carga H&L con contenido direccin aa (L con LOC aa, H con LOC aa+1)

    LXI B,vv

    3

    1

    Carga B & C con dato inmediato vv

    LXI D,vv

    3

    11

    Carga D & E con dato inmediato vv

    LXI H,vv

    3

    21

    Carga H & L con dato inmediato vv

    LXI SP,vv

    3

    31

    Carga SP con dato inmediato vv

    MOV A,B

    1

    78

    Transfiere B a A

    MOV A,C

    1

    79

    Transfiere C a A

    MOV A,D

    1

    7A

    Transfiere D a A

    MOV A,E

    1

    7B

    Transfiere E a A

    MOV A,H

    1

    7C

    Transfiere H a A

    M

    MOV A,L

    1

    7D

    Transfiere L a A

    MOV A, M

    1

    7

    Transfiere LOC memoria ( H & L ) a A

    MOV B,A

    1

    47

    Transfiere A a B

    MOV B,C

    1

    41

    Transfiere C a B

    MOV B,D

    1

    42

    Transfiere D a B

    MOV B,E

    1

    43

    TransfiereE a B

    MOV B,H

    1

    44

    Transfiere H a B

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    11

    Nemotcnico

    Bytes

    Cdigo de op

    (hex)

    Descripcin

    MOV B,L

    1

    45

    Transfiere L a B

    MOV B,M

    1

    46

    Transfiere LOC memoria ( H & L ) a B

    MOV C,A

    1

    4F

    Transfiere A a C

    MOV C,B

    1

    48

    Transfiere B a C

    MOV C,D

    1

    4A

    Transfiere D a C

    MOV C,E

    1

    4B

    Transfiere E a C

    MOV C,H

    1

    4C

    Transfiere H a C

    MOV C,L

    1

    4D

    Transfiere L a C

    MOV C,M

    1

    4

    Transfiere LOC memoria ( H & L ) a C

    MOV D,A

    1

    57

    Transfiere A a D

    MOV D,B

    1

    50

    Transfiere B a D

    MOV D,C

    1

    51

    Transfiere C a D

    MOV D,E

    1

    53

    Transfiere E a D

    M

    MOV D,H

    1

    54

    Transfiere H a D

    MOV D,L

    1

    55

    Transfiere L a D

    MOV D,M

    1

    56

    Transfiere LOC memoria ( H & L ) a D

    MOV E,A

    1

    5F

    Transfiere A a E

    MOV E,B

    1

    58

    Transfiere B a E

    MOV E,C

    1

    59

    Transfiere C a E

    MOV E,D

    1

    5A

    Transfiere D a E

    MOV E,H

    1

    5C

    Transfiere H a E

    MOV E,L

    1

    5D

    Transfiere L a E

    MOV E,M

    1

    5

    Transfiere LOC memoria ( H & L ) a E

    MOV H,A

    1

    67

    Transfiere A a H

    MOV H,B

    1

    60

    Transfiere B a H

    MOV H,C

    1

    61

    Transfiere C a H

    MOV H,D

    1

    62

    Transfiere D a H

    MOV H,E

    1

    63

    Transfiere E a H

    MOV H,L

    1

    65

    Transfiere L a H

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    12

    Nemotcnico

    Bytes

    Cdigo de op

    (hex)

    Descripcin

    MOV H,M

    1

    66

    Transfiere LOC memoria (H & L ) a H

    MOV L,A

    1

    6F

    Transfiere A a L

    MOV L,B

    1

    68

    Transfiere B a L

    MOV L,C

    1

    69

    Transfiere C a L

    MOV L,D

    1

    6A

    Transfiere D a L

    MOV L,E

    1

    6B

    Transfiere E a L

    MOV L,H

    1

    6C

    Transfiere H a L

    MOV L,M

    1

    6E

    Transfiere LOC memoria ( H & L ) a L

    MOV M,A

    1

    77

    Transfiere A a LOC memoria ( H & L )

    MOV M,B

    1

    70

    Transfiere B a LOC memoria ( H & L )

    MOV M,C

    1

    71

    Transfiere C a LOC memoria ( H & L )

    M

    MOV M,D

    1

    72

    Transfiere D a LOC memoria ( H & L )

    MOV M,E

    1

    73

    Transfiere E a LOC memoria ( H & L )

    MOV M,H

    1

    74

    Transfiere H a LOC memoria ( H & L )

    MOV M,L

    1

    75

    Transfiere L a LOC memoria ( H & L )

    MVI A,v

    2

    3E

    Transfiere dato inmediato v a A

    MVI B,v

    2

    06

    Transfiere dato inmediato v a B

    MVI C,v

    2

    0E

    Transfiere dato inmediato v a C

    MVI D,v

    2

    16

    Transfiere dato inmediato v a D

    MVI E,v

    2

    1E

    Transfiere dato inmediato v a E

    MVI H,v

    2

    26

    Transfiere dato inmediato v a H

    MVI L,v

    2

    2E

    Transfiere dato inmediato v a L

    MVI M,v

    2

    36

    Transfiere dato inmediato v a LOC memoria (H & L )

    N

    NOP

    1

    00

    No operacin

    ORA A

    1

    B7

    Examina A y borra arrastre

    ORA B

    1

    B0

    OR B con A

    O

    ORA C

    1

    B1

    OR C con A

    ORA D

    1

    B2

    OR D con A

    ORA E

    1

    B3

    OR E con A

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    13

    Nemotcnico

    Bytes

    Cdigo de op

    (hex)

    Descripcin

    ORA H

    1

    B4

    OR H con A

    ORA L

    1

    B5

    OR L con a

    O

    ORA M

    1

    B6

    OR LOC memoria ( H & L ) con A

    ORI v

    1

    F6

    OR dato inmediato v con A

    OUT v

    2

    D3

    Saca A a dispositivo v

    PCHL

    1

    E9

    Salta a LOC memoria contenida en ( H & L )

    POP B

    1

    C1

    Carga B & C desde la pila

    POP D

    1

    D1

    Carga D & E desde la pila

    POP H

    1

    E1

    Carga H & L desde la pila

    P

    POP PSW

    1

    F1

    Carga A y sus banderas desde la pila

    PUSH B

    1

    C5

    Introduce B & C en la pila

    PUSH D

    1

    D5

    Introduce D 6 E en la pila

    PUSH H

    1

    E5

    Introduce H & L en la Pila

    PUSH PSW

    1

    F5

    Introdcuce A y sus banderas en la pila

    RAL

    1

    17

    Desplazamiento circular CY + A a la izquierda

    RAR

    1

    1F

    Desplazamiento circular CY + A a la derecha

    RLC

    1

    07

    Desplazamiento circular A a la izquierda y arrastre

    RRC

    1

    0F

    Desplazamiento circular A a la derecha y arrastre

    RIM

    1

    20

    Lee mascara de interrupcin ( 8085 solamente )

    RET

    1

    C9

    Vuelve de subrutina

    R

    RZ

    1

    C8

    Si cero, vuelve de subrutina

    RNZ

    1

    C0

    Si no cero, vuelve de subrutina

    RP

    1

    F0

    Si ms, vuelve de subrutina

    RM

    1

    F8

    Si menos, vuelve de subrutina

    RC

    1

    D8

    Si arrastre, vuelve de subrutina

    RNC

    1

    D0

    Si no arrastre, vuelve de subrutina

    RPE

    1

    E8

    Si paridad par, vuelve de subrutina

    RPO

    1

    E0

    Si paridad impar, vuelve de subrutina

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    14

    Nemotcnico

    Bytes

    Cdigo de op

    (Hex)

    Descripcin

    RST 0

    1

    C7

    Va a subrutina en direcci{on 0000H

    RST 1

    1

    CF

    Va a subrutina en direcci{on 0008H

    RST 2

    1

    D7

    Va a subrutina en direcci{on 0010H

    R

    RST 3

    1

    DF

    Va a subrutina en direcci{on 0018H

    RST 4

    1

    E7

    Va a subrutina en direccin 0020H

    RST 5

    1

    EF

    Va a subrutina en direccin 0028H

    RST 6

    1

    F7

    Va a subrutina en direccin 0030H

    RST 7

    1

    FF

    Va a subrutina en direccin 0038H

    SIM

    1

    30

    Pone en 1 mscara de interrupcin ( 8085 solamente)

    SPHL

    1

    F9

    Carga SP desde H & L

    SHLD aa

    3

    22

    Almacena H & L en LOC memoria aa

    STA aa

    3

    32

    Almacena A en LOC memoria aa

    STAX B

    1

    02

    Almacena A en LOC memoria ( B & C )

    STAX D

    1

    12

    Almacena A en LOC memoria ( D & E )

    STC

    1

    37

    Coloca en 1 bandera de arrastre

    SUB A

    1

    97

    Borra A

    SUB B

    1

    90

    Resta B de A

    SUB C

    1

    91

    Resta C de A

    S

    SUB D

    1

    92

    Resta D de A

    SUB E

    1

    93

    Resta E de A

    SUB H

    1

    94

    Resta H de A

    SUB L

    1

    95

    Resta L de A

    SUB M

    1

    96

    Resta contenido de LOC memoria ( H & L ) de A

    SUI v

    2

    D6

    Resta dato inmediato v de A

    SBB A

    1

    9F

    Pone A con arrastre menos

    SBB B

    1

    98

    Resta B de A con prestamo

    SBB C

    1

    99

    Resta C de A con prestamo

    SBB D

    1

    9A

    Resta D de A con prestamo

    SBB E

    1

    9B

    Resta E de A con prestamo

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    15

    Nemotcnico

    Bytes

    Cdigo de op

    (Hex)

    Descripcin

    SBB H

    1

    9C

    Resta H de A con prestamo

    S

    SBB L

    1

    9D

    Resta L de A con prestamo

    SBB M

    1

    9E

    Resta LOC memoria ( H& L ) de A con prestamo

    SBI v

    2

    DE

    Resta dato immediato v de A con prestamo

    XCHG

    1

    EB

    Intercambia D & E con H & L

    XTHL

    1

    E3

    Intercambia tope de la pila con H & L

    XRA A

    1

    AF

    Borra A

    XRA B

    1

    A8

    OR exclusivo de B con A

    X

    XRA C

    1

    A9

    OR exclusivo de C con A

    XRA D

    1

    AA

    OR exclusivo de D con A

    XRA E

    1

    AB

    OR exclusivo de E con A

    XRA H

    1

    AC

    OR exclusivo de H con A

    XRA L

    1

    AD

    OR exclusivo de L con A

    XRA M

    1

    AE

    OR exclusivo de LOC memoria ( H & L ) con A

    XRI v

    2

    EE

    OR exclusivo de dato inmediato v con A

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    16

    BREVE DESCRIPCION DE LAS INSTRUCCIONES DEL 8080

    Las instrucciones estn constituidas de 1, 2 o 3 bytes. El primer byte contiene el cdigo de operacin de

    la instruccin y los bytes siguientes contienen un datos.

    1.- Instrucciones de transferencias de datos.

    MOV x,y. Son instrucciones de un byte, que copian el contenido de un registro y, en otro registro x. Los

    registros x e y pueden ser cualesquiera de los registros de propsito general del procesador, o, un

    registro de la memoria. En este ltimo caso, la direccin del registro de memoria est contenida

    en el par de registros H y L. Por ejemplo, MOV M,B , copia el contenido del registro B en la

    posicin de memoria indicada por HL.

    MVI X,v

    Son instrucciones de movimiento inmediato de dos bytes. El primer byte indica el cdigo de la

    instruccin y, el segundo byte, contiene el dato v que ser copiado en el registro X. X es

    cualquiera de los registros de propsito general, o, una posicin de memoria indicada por HL.

    LXI P,vv Son instrucciones de movimiento inmediato de tres bytes. El primer byte indica el cdigo de la

    instruccin y los dos bytes restantes contienen el dato vv que ser cargado en el par de registros

    P. P puede ser el par de registros BC, DE, HL el puntero de pila SP.

    Instrucciones de transferencias del Acumulador

    STAX B

    STAX D

    Son instrucciones de un byte, que transfieren el contenido del Acumulador a la posicin de

    memoria indicada por el par de registros BC o DE, respectivamente.

    LDAX B

    LDAX D Son instrucciones de un byte, que cargan el Acumulador con en contenido de la posicin de

    memoria indicada por el par de registros BC o DE, respectivamente.

    STA aa Es una instruccin de tres bytes que copia el contenido del Acumulador en la posicin de

    memoria indicada en los bytes 2 y 3 de la propia instruccin (aa).

    LDA aa Es una instruccin de tres bytes que carga el Acumulador con el contenido de la direccin

    indicada en los bytes 2 y 3 de la propia instruccin (aa).

    Instrucciones de transferencia para el par HL

    SHLD aa

    Instruccin de tres bytes que copia el contenido del registro L en la direccin aa y el contenido

    de H en aa + 1.

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    17

    LHLD aa

    Instruccin de tres bytes que carga el registro L con el contenido de la direccin aa y H con el

    contenido de la direccin aa + 1.

    SPHL

    Instruccin de un byte que copia el contenido del par HL en el registro puntero de pila SP.

    Instrucciones de intercambio

    XCHG

    Instrucin de un byte que intercambia el contenido del par HL con el contenido del par DE

    XTHL Intercambia el tope de la Pila con el contenido de HL. El contenido del registro L es

    intercambiado con el contenido de la posicin de memoria cuya direccin est especificada por

    SP. El contenido del registro H es intercambiado con el contenido de la posicin de memoria

    SP+1.

    Instrucciones de trasferencias con la Pila

    PUSH x

    Instrucciones de un byte que cargan la pila con el par de registros x. Por ej. PUSH B, introduce

    el contenido del registro B en la posicin de memoria SP-1, y el contenido del registro C en SP-

    2 (SP = Contenido del Puntero de Pila).

    POP x Instrucciones de un byte que permiten extraer dos bytes desde la pila y cargarlos en el par de

    registros nombrado. Por ej. POP B extrae el contenido de la posicin de memoria SP y lo carga

    en el registro C y, el contenido de SP+1 lo carga en B.

    2.- Instrucciones aritmticas y lgicas

    Existen ocho operaciones aritmticas y lgicas :

    Suma

    Suma con acarreo

    Resta

    Resta con reserva

    AND

    OR-Exclusivo

    OR

    Compare

    Estas operaciones se realizan sobre el Acumulador y el resultado queda en el

    Acumulador ( excepto el COMPARE ). Por ejemplo ADD B suma al Acumulador el contenido

    del registro B y el resultado queda en el Acumulador. En la suma con acarreo (o resta con

    reserva), se suma (o resta) el contenido de la bandera de condicin CY al bit menos significativo

    del Acumulador. Las operaciones aritmticas se desarrollan en notacin de complemento a 2.

    Las operaciones lgicas AND, OR y OR-EXCLUSIVO se realizan bit a bit entre el

    registro correspondiente y el Acumulador.

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    18

    La operacin COMPARE compara si el contenido de un registro es igual, mayor o menor

    que el contenido del acumulador. Esto lo realiza el procesador de la misma manera que una

    resta, pero sin guardar el resultado en el acumulador y slo son afectadas las banderas de

    condicin Z y S, concordantemente con el resultado de la eventual resta.

    Operaciones con registros. Son instrucciones aritmticas o lgicas de un slo byte, en que est denominado el

    registro cuyo contenido va a ser operado con el acumulador. Por ej. ADD B, SUB M, CMP L,

    etc.

    Tal como en el caso de las instrucciones MOV, el registro M es aquel registro de la

    memoria cuya direccin est indicada por el par de registros H y L.

    Operaciones Inmediatas

    En este tipo de instrucciones de dos bytes, la propia instruccin contiene el dato a operar

    con el acumulador. Por ej. ADI 20h, suma 20h al acumulador.

    Complementar el acumulador La instruccin de un byte CMA, complementa el acumulador

    Operaciones de suma al par HL Las instrucciones de un byte DAD B, DAD C, DAD H y DAD SP, suman a HL el

    contenido del par de registros nombrado en la instruccin.

    3.- Incrementar/Decrementar

    Son instrucciones de un slo byte que suman o restan un 1 en la posicin menos significativa de

    un registro, posicin de memoria indicada por HL, par de registros de propsito general, o, al

    puntero de pila ( por ejemplo: DCR C,INX B ).

    4.- Rotaciones

    Estas operaciones, de un slo byte, se realizan slo en el acumulador.

    RLC

    Desplaza el contenido del acumulador una posicin a la izquierda. El bit ms significativo (que

    se perdera en el desplazamiento) es introducido en el bit menos significativo del acumulador y

    adems en la bandera de acarreo CY

    RRC Desplaza el contenido del acumulador una posicin a la derecha. El bit menos significativo (que

    se perdera en el desplazamiento) es introducido en la posicin ms significativa del acumulador

    y adems en la bandera de acarreo CY.

    RAL

    Desplaza el contenido del acumulador una posicin a la izquierda a travs de la bandera de

    acarreo CY. Simultneamente, introduce el bit ms significativo del acumulador en la bandera

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    19

    de acarreo y el contenido de la bandera de acarreo es introducido en la posicin menos

    significativa del acumulador.

    RAR Desplaza el contenido del acumulador una posicin a la derecha a travs de la bandera de

    acarreo CY. Simultneamente, introduce el bit menos significativo del acumulador en la bandera

    de acarreo y el contenido de la bandera de acarreo es introducido en la posicin ms significativa

    del acumulador.

    5.- Instrucciones de Salto

    Estas instrucciones alteran el contenido del Contador de Programa, permitiendo con ello

    romper la secuencia natural de ejecucin de instrucciones por el procesador. Existen tres tipos de

    instrucciones de salto, los JUMP, los CALL y los RETURN

    Las instrucciones JUMP son de tres bytes. Los bytes 2 y 3 deben contener una direccin

    de memoria. La ejecucin de este tipo de instrucciones consiste en reemplazar el contenido del

    Contador de Programa por el contenido de los bytes 2 y 3 de la instruccin. Entonces, como

    consecuencia de esta operacin, la siguiente instruccin que se ejecutar ser la que se encuentra

    en la posicin de memoria indicada por los Bytes 2 y 3 de la instruccin y no aquella que se

    encuentra a continuacin de la instruccin Jump (produciendo un salto del programa. Esto es

    similar a las instrucciones GOTO de los lenguajes de alto nivel).

    Las instrucciones CALL son tambin de tres bytes y realizan la misma operacin que los

    JUMP, excepto que, previo a reemplazar el contenido del Contador de Programa con los bytes 2

    y 3, guarda el contenido del Contador de Programa en la Pila (en las posiciones de memoria

    indicadas por el Puntero de Pila SP menos 1 y menos 2.

    Las instrucciones RETURN constan de un slo byte y lo que realizan es tomar dos bytes

    desde la pila (desde SP y SP + 1) e ingresarlos al Contador de Programa.

    La pareja CALL, RETURN permite el uso de Subrutinas. Por medio del CALL se llama

    a ejecutar una subrutina que comienza en la posicin de memoria indicada por los bytes 2 y 3 de

    la instruccin y con el RETURN se vuelve al programa principal ( Return debe ser la ltima

    instruccin de la subrutina).

    Las instrucciones JUMP, CALL y RETURN son Incondicionales y Condicionales. Las

    Incondicionales funcionan de la manera descrita anteriormente. En las Condicionales su

    ejecucin depender del valor de alguna de las banderas de condicin del Acumulador. Si la

    bandera elegida est en un valor determinado ( 0 1 ), se efecta el salto, en caso contrario el

    contador de programa no es alterado y por consiguiente no se efecta el salto, continuando la

    ejecucin del programa con la instruccin que sigue al JUMP, CALL o RETURN en uso. Por ej.

    JNZ 2020h, salta a la direccin 2020h si la bandera de cero Z se encuentra en 0, en caso

    contrario ( Z = 1 ) se continua con la instruccin siguiente del programa principal.

    Adems de las instrucciones CALL descritas, existen las instrucciones CALL de un slo

    byte RSTi (i=0...7), que son llamadas a Subrutinas en posiciones fijas de la memoria. Por ej.

    RST0 salta a la posicin de memoria 0000h, RST1 salta a 0010h, RST2 a 0020h, etc.

    Por ltimo, existe la instruccin JUMP de un byte PCHL, que carga el Contador de

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    20

    Programa con el contenido del par de registros HL. Esto permite efectuar saltos a posiciones de

    memoria indicadas por el par HL.

    6.- Instrucciones I/O

    IN v, OUT v

    Son instrucciones de dos bytes que permiten trasferir un byte desde un registro externo v

    (distinto de la memoria) al acumulador (IN v) o desde el acumulador a un registro externo v. El

    segundo byte de la instruccin debe contener el cdigo del registro externo involucrado. Por ej.

    OUT 5Bh, transfiere el contenido del acumulador al registro externo cuyo cdigo es 5Bh

    7.- Instrucciones de control

    EI y DI

    Permiten habilitar (EI) o deshabilitar (DI) el sistema de interrupciones. EI coloca en 1 la bandera

    de permiso de interrupcin INTE y DI la coloca en 0.

    HLT

    Detiene el microprocesador. Los registros y banderas no son afectados

    NOP No realiza ninguna operacin, slo gasta tiempo.

    CMP

    Complementa bandera de acarreo CY

    STC Colca en 1 la bandera de acarreo CY

    RIM Lee mscara de interrupcin ( 8085 solamente )

    SIM

    Pone en 1 mscara de interrucin ( 8085 solamente )

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    21

    Ejemplo de programacin: Sumar tres nmeros que se encuentran en las posiciones de memoria

    2010H, 2011H, 2012H y acumular el resultado en la posicin 2013H

    Direccin

    (hex)

    Contenid

    o

    (hex)

    Etiqueta

    Nemotcnico

    Comentarios

    2020

    21

    LXI H,2010H

    Carga el registro par HL con 2010H

    2021

    10

    2022

    20

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    22

    2023

    7E

    MOV A,M

    Carga el acumulador con el primer

    nmero, contenido en la posicin de

    memoria 2010H

    2024

    23

    INX H

    Incrementa el registro par HL a 2011H

    2025

    86

    ADD M

    Suma el segundo nmero, contenido

    en la posicin 2011H, al acumulador

    2026

    23

    INX H

    Incrementa el registro par HL a 2012H

    2027

    86

    ADD M

    Suma el tercer nmero, contenido en la

    posicin 2012H, al acumulador

    2028

    23

    INX H

    Incrementa el registro par HL a 2013H

    2029

    77

    MOV M,A

    Almacena la suma del acumulador el

    la posicin de memoria 2013H

    202A

    76

    HLT

    Detiene la CPU

    (c) Programas en lenguaje ensamblador y de mquina

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    23

    Ejemplo de programacin: Comparar dos nmeros y almacenar el mayor

    Diagrama de flujo detallado

    Etiqueta

    Nemotcnico

    Comentarios

    MVI A,0FH

    ; Carga acumulador con el primer nmero (1510)

    MVI L,06H

    ; Carga registro L con el segundo nmero (610)

    CMP L

    ; Compara (A) y (L)

    Bandera CY = 1 si A< L

    JC ACUM_L

    ; Salta a la posicin de ACUM_L si CY = 1 ( si A < L )

    STA 2040H

    ; Almacena (A) en posicin de memoria 2040H

    HLT

    ; Detiene la CPU

    ACUM_L

    MOV A,L

    ; Transfiere el contenido del registro L al acumulador

    STA 2040H

    ; Almacena (A) en la posicin de memoria 2040H

    HLT

    ; Detiene la CPU

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    24

    Ejemplo de programacin: Cuenta del 0 al 9 y los almacena en posiciones consecutivas de memoria.

    Diagrama de flujo detallado de "cuenta

    y almacena"

    Etiqueta

    Nemotcnico

    Comentarios

    LXI H,2040H

    ; Carga el registro HL con 2040H

    XRA A

    ; Pone el acumulador a 00H

    LOOP

    MOV M,A

    ; Almacena el contenido de A en la posicin de memoria

    apuntada por HL

    INX H

    ; Incrementa HL

    INR A

    ; Incrementa el acumulador

    CPI 09H

    ; Compara es (A) igual a 09H ?

    Si (A) = 09H, entonces la bandera Z se coloca en 1

    JNZ LOOP

    ; Salta a la posicin LOOP si Z = 0 ( si (A) < 09H, en caso

    contrario contina con la siguiente instruccin

    HLT

    ; Detiene la CPU

    Programa en lenguaje ensamblador de "cuenta y almacena"

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    25

    BITS DE ESTATUS Y CICLOS DE MAQUINA

    B I T S D E S T A T U S

    CICLOS DE MAQUINA

    MEM

    R

    D7

    INP

    D7

    M1

    D5

    OUT

    D4

    HLTA

    D3

    STACK

    D2

    -----

    WO

    D1

    INTA

    D0

    FETCH

    1

    0

    1

    0

    0

    0

    1

    0

    MEMORY READ

    1

    0

    0

    0

    0

    0

    1

    0

    MEMORY WRITE

    0

    0

    0

    0

    0

    0

    0

    0

    STACK READ

    1

    0

    0

    0

    0

    1

    1

    0

    STACK WRITE

    0

    0

    0

    0

    0

    1

    0

    0

    INPUT

    0

    1

    0

    0

    0

    0

    1

    0

    OUTPUT

    0

    0

    0

    1

    0

    0

    0

    0

    INTERRUPT

    0

    0

    1

    0

    0

    0

    1

    1

    HALT

    1

    0

    0

    0

    1

    0

    1

    0

    INTERRUPT WHILE

    HALT

    0

    0

    1

    0

    1

    0

    1

    1

    CAPTURA DE LOS BITS DE STATUS

    Los bits de status aparecen por el bus de datos, cuando la seal de sincronismo (SYNC) se

    encuentra en 1. Es decir, en el primer ciclo de reloj de cada ciclo de mquina (respecto de la fase 2 del

    reloj).

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    26

    CICLOS DE MAQUINA

    FETCH

    Es el primer ciclo de mquina de toda instruccin. Consiste de 4 o 5 pulsos de reloj, con la

    excepcin de los estados WAIT, HLDA y HLTA, que tienen cualquier nmero de ciclos de

    reloj mayor que 3.

    Durante este ciclo, el cdigo de operacin de la instruccin es trado (fetched) desde la

    posicin de memoria indicada por el contador de programa y puesto en el registro de

    instrucciones. Una vez realizado esto, incrementa el contador de programa en 1.

    Durante este ciclo de mquina se producen adems transferencias simples entre los registros

    internos de la CPU y tambin se realizan operaciones aritmticas y lgicas. Para algunas

    instrucciones, este es el nico ciclo de mquina requerido.

    MEMORY READ Este ciclo de mquina consiste de 3 ciclos de reloj. Durante este ciclo, es transferido un byte

    desde la posicin de memoria indicada por el contador de programa y puesto en alguno de los

    registros internos del procesador. Al final incrementa el contador de programa en 1.

    MEMORY WRITE Este ciclo de mquina consiste de 3 o 4 ciclos de reloj. Durante este ciclo, el contenido de un

    registro es transferido a la posicin de memoria indicada por el para de registros HL. HL

    puede ser tambin incrementado o decrementado.

    OUTPUT

    Este ciclo de mquina consiste de 3 ciclos de reloj, durante los cuales es puesto en el bus de

    direcciones el cdigo del dispositivo de salida y, el contenido del acumulador, es puesto en el

    bus de datos.

    INPUT Este ciclo de mquina consiste de 3 ciclos de reloj, durante los cuales el cdigo del dispositivo

    de entrada es puesto en el bus de direcciones y, el buffer/latch del bus de datos es puesto en su

    modo de entrada para capturar el dato del bus de datos externo y llevarlo al acumulador.

    STACK WRITE

    Durante este ciclo de mquina consistente de 3 ciclos de reloj, un byte es puesto en el bus de

    datos externo y transferido a la posicin de memoria indicada por el registro puntero del stack

    (SP) menos 1 o menos 2, es decir, M(SP - 1) o M(SP - 2). Debe tenerse presente que primero

    el registro SP es decrementado y posteriormente se escribe en esa nueva posicin indicada por

    SP.

    STACK READ

    Durante este ciclo de mquina de 3 ciclos de reloj, un byte es transferido desde la posicin de

    memoria indicada por SP o SP + 1 a alguno de los registros internos del procesador tales como

    H, L, B, C ,D, E, o, el contador de programa. Debe tenerse presente que primero se efecta la

    transferencia y posteriormente el registro SP es incrementado.

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    27

    HALT

    Este ciclo de mquina contiene cualquier nmero entero de ciclos de reloj mayor que 3. El

    microprocesador permanece en el estado WAIT mientras la seal de entrada READY se

    encuentre en 0 lgico. La salida WAIT del 8080 toma el valor lgico 1 para indicar que la

    CPU se encuentra en el estado WAIT.

    INTERRUPT

    Este ciclo de mquina de 5 ciclos de reloj, se asemeja al ciclo FETCH, excepto que el contador

    de programa no es incrementado, para permitir que el estatus existente, previo a la

    interrupcin, sea salvado en el stack. Esto permite un retorno ordenado al programa

    interrumpido despus que el requerimiento de interrupcin ha sido procesado.

    BITS DE STATUS

    INTA Un 1 lgico en esta seal indica que una interrupcin ha sido concedida. Esta seal debera ser

    usada para colocar una instruccin RST en el bus de datos externo para ser introducida al 8080

    cuando DBIN tome el valor 1.

    ___

    W0

    Si la operacin del ciclo de mquina en curso es una escritura en memoria o una operacin de

    salida a un dispositivo externo, este bit tomar el valor 0. Si la operacin es una lectura desde

    la memoria o entrada desde un dispositivo externo, este bit tomar el valor 1.

    STACK Un 1 lgico indica que el bus de direcciones contiene la direccin indicada por el registro

    puntero del stack.

    HLTA

    Seal de reconocimiento de una instruccin HALT. Cuando el procesador est en el ciclo de

    mquina HALT, este bit toma el valor 1 lgico.

    OUT Cuando este bit toma el valor 1 lgico, indica que el bus de direcciones contiene el Cdigo del

    Dispositivo de salida (8 bits. El cdigo aparece repetido en las 8 lneas menos significativa y

    en las 8 lneas ms significativas del bus de direcciones ) y que el bus de datos externo

    contendr el contenido del acumulador cuando la seal de salida WR tome el valor 0 lgico.

    M1 Este bit toma el valor 1 lgico para indicar que la CPU se encuentra en un ciclo Fetch.

    INP

    Cuando este bit toma el valor 1 lgico, indica que el bus de direcciones contiene el Cdigo del

    Dispositivo de entrada (8 bits. El cdigo aparece repetido en las 8 lneas menos significativa y

    en las 8 lneas ms significativas del bus de direcciones ) y que el dato deber ser puesto en el

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    28

    bus de datos externo cuando la seal DBIN tome el valor 1 lgico.

    MEMR

    Un 1 en este bit indica que el bus de datos externo contendr datos provenientes de la memoria

    durante el ciclo de mquina MEMORY READ.

    LAS INTERRUPCIONES

    Por interrupcin se entiende al acto en que un dispositivo externo solicita al procesador ser

    atendido y para ello, la CPU debe suspender transitoriamente la tarea que este realizando, para despus

    que haya atendido al dispositivo, reinicie la ejecucin de dicha tarea.

    Para el caso del 8080, el dispositivo externo solicita la interrupcin colocando un 1 en la

    entrada de control INT. El procesador, al trmino de cada instruccin que este ejecutando, verifica el

    estado de la bandera de permiso de interrupcin (INTE). Si esta se encuentra en 0, indicando que el

    sistema de interrupciones est deshabilitado, no concede la interrupcin y continua con la siguiente

    instruccin del programa que est ejecutando. En cambio, si la bandera est en 1, indicando que el

    sistema de permiso de interrupcin est habilitado, verifica si la seal INT se encuentra en 1 ( un

    dispositivo externo est solicitando servicio ), concede la interrupcin y vuelve a cero la bandera de

    permiso de interrupcin.

    Cuando el procesador concede la interrupcin guarda el contenido del Contador de Programa

    en el Stack y el dispositivo externo debe colocar en el bus de datos una de las 8 instrucciones RST. El

    8080 coloca esta instruccin en el Registro de Instrucciones y procede a ejecutarla.

    Debemos recordar que las instrucciones RST son del tipo CALL a posiciones fijas de la

    memoria, por consiguiente en dicha direccin debe estar el comienzo de la subrutina de servicio que

    atiende al dispositivo que solicit la interrupcin. Como toda subrutina, la ltima instruccin debe ser

    del tipo RETURN, para retomar la ejecucin del programa que fue interrumpido.

    Cada vez que se concede una interrupcin, la bandera INTE vuelve a cero, quedando

    deshabilitado el sistema para subsecuentes requerimientos de interrupciones. La bandera INTE se puede

    colocar en 1 o en 0 con las instrucciones DI y EI respectivamente.

  • Universidad de Santiago

    Facultad de Ingeniera

    JGL

    29

    DISPOSITIVOS DE ENTRADA / SALIDA