Fundamentos de Los Microprocesadores (Schaum) 2da Edicion Roger L. Tokheim
Short Description
Descripción: DDDDDDDDDD...
Description
SIGUENOS EN:
LIBROS UNIVERISTARIOS Y SOLUCIONARIOS DE MUCHOS DE ESTOS LIBROS GRATIS EN DESCARGA DIRECTA VISITANOS PARA DESARGALOS GRATIS.
http://librosysolucionarios.net
'4,.
¡
......
...
.. 1 .
1
~-
•
.=
.
,.
.
.;
-~-
,
1
..
~
~~.
.
'f
!
lf r
l
FUNDAMENTOS • DE LOS MICROPROCESADORES
~1
. l..
~
,
1
I
!
. .\
\
.
,
•
,
.'
..,.
1 l'
1I
I
•\-'.
-
.,
.
iI
I
•
•
!'
.
1
• I
.
."
-
.
/'
'"
-r
,
•
.•,.
.
~
.,,\Ik
~
\.;
..
•
J
It .
.,
Segunda edición
I1
L
~
'.~
".
J
t ~-
•
..
• ..
J
~
t'
"•
.'\
.
~ \ "
~
.....
\
-
~\ .-l'I---~.7"
.-
.
,.
.
~
http://librosysolucionarios.net ~ '2m
;
S
mí e
•
-
DeS~ '(f"O 1/0
. A~
w~~owS t ( DeVfctll\ I L ~ t1 \.JX ) clo"S "5r5+e~8t..S. 5{' o ( u fo.. "r0\ V\ \J si'- O'-. fM\, ve '5 c:p ., ~ de \t'\'teCC [
(
..
\
..:'",
Interfaz del teclado
---....
1
Línea de interrupciones
:1 I
¡. ¡
Decodificador
~ (t
~~_.~
...........
MPU
~
~
Fuente de alimentación
RAM.
~
+
Bus de direcciones _ (16 líneas)
r
Reloj
1
~
r
1 - Bus de control
Bus de datos (8 líneas)
~
--tIo>
,.)
ROM
---fIo> ~
1"
~
)
--+
l
alimentación
""'Í-
21 din 22H y utiliza
Las instrucciones de bifurcación son la cuarta categona de las operaciones del microprocesador genérico que se van a considerar y están resumidas en la Figura 6.30. Observar que las operacio nes se referencian como instrucciones de salto, aunque los términos salto y bifurcación se conside rarán sinónimos en este capítulo. Algunos fabricantes hacen distinciones entre instrucciones de bifurcación y de salto. Las operaciones de bifurcación o de salto a veces se denominan instruccio nes de transferencia de control. Como las operaciones de la Figura 6.30 son un subconjunto del
~
op = 22H) es !lStrucción del ~
~.
rl» (código de 11
del programa
Instrucciones de bifun:ación Modo de direcciona· miento
Nemotécnico
Cód. de opero
Bytes
Salta a Loe aa
Inmediato
JMP
C3
3
~ Ol rotoiD&:ria (I'C) .... (Dirección) ~Olll'den~
SaIIlI a Loe aa si es O
Inmediato
lZ
CA
3
p¡m:. de roto inICrioi
Descripción de la operación
Fonnato de la instrucción
Simbólico
Código de op.
t
Código de op.
::ción SACAR
Si el seilalizador de O- 1. entonces (I'C) .... (dirección)
~. de roto superio¡
tión OUT en la
Código de op.
SaIIlI a Loe aa si no es O Inmediato
lNZ
C2
3
Si el seIlalizador de O• O, entonces (I'C) .... (dirección)
p¡rec. de Il'den inICrioi ~OlrotoSU¡tOO
Código de op. Salta a LOC da si se coloca el señalizador de arrastr
,. L
,
Salta a LOC aa si no se coloca el señalizador de arrastre
Imnediato
JC
DA
3
Prec. de Il'den infeOO ~ Ol roto superio¡
Código de op. Inmediato
lNC
D2
3
Prec. de roto inferio ~. de onlen su¡x:rio
Si el seilalizador de arrastre 1, entonces (I'C) (A)
1 Almacena (A) en memoria
Almacena (L) en memoria
STOREL!
11
S I (a)
Diagrama de flujo detallado para comparar y almacenar el número mayor
,
Figura 6.49.
1
http://librosysolucionarios.net
:1[:
"1 '·,
11:1 ,1;
:11 "l·' 1./:1
:,1l'
'[!I
,Ii . "
PROGRAMACION DEL MICROPROCESAOOR
Etiqueta
:enar el mayor en blema se muestra los dos primeros .4 (acumulador) y e el contenido del ión no afectan el de diamante, del le decisión en el este ejemplo, el pma continúa y r se detiene por el lSión. es negativa.
,
Nemotécnico
A,OFH
; Carga acuml'lador con el primer número (15 10)
MVI
L,06H
; Carga el registro L con el segundo número (6 10 )
CMP
L
JC
2040H
; Salta a la posición de STORE L si CY = 1 (si A < L); de otra forma continúa con la siguiente instrucción ; Almacena (A) en la posición de memoria 2040H
HLT
; Detiene la MPU después de almacenar (A) ",••,"~",
"
STOREL
~"¡;,"
; Transfiere el contenido del registro L al acumulador
MOV
A,L
STA
2040H
,i
~
(b)
l
; Compara (A) y (L) Señalizador CY = 1 si A < L
STORE L
STA
HLT
".~ .
Comentarios
MVl
r ~
Operando
Etiqueta
; Almacena (A) en la posición de memoria 2040H ; Detiene la MPU después de almacenar el contenido de registroL
Programa en lenguaje ensamblador utilizando la bifurcación «almacenar A»
Nemotécnico
Operando
Comentarios
MVI
A,OAH
; Carga el acumulador con el primer número (10 10 )
MVI
L,OEH
; Carga el acumulador con el segundo número (14 10)
CMP
L
~ ':~"
, ~l
JC
; Compara (A) y (L) Señalízador CY = 1 si A (L) y, por tanto, el señalizador de arrastre (eY) se pone a O. La instrucción de saltar (nemotécnico de JC en este ejemplo) examina el señalizador de arrastre y encuentra que ey = O, lo que hace que la MPU continúe con la siguiente instrucción de la secuencia, que es «almacenar (A) en la dirección de memoria 2040H». El número mayor (OFH) se almacena en la posición de memoria 2040H mediante la operación «STA». A continuación la MPU la detiene por la instruc ción de alto (HLT). Las tres últimas instrucciones, sombreadas, del programa en lenguaje ensam blador de la Figura 6.49b no se utilizan en este ejemplo. En el diagrama de flujo que se muestra en la Figura 6.49a, el programa continúa linealmente y no bifurca a la derecha. Considerar el mismo programa en lenguaje ensamblador pero con el contenido del acumula dor menor que el contenido del registro L. Un listado de dicho programa se muestra en la Figura 6.49c. En este ejemplo el acumulador se carga con OAH (10 10 ), mientras que el registro L se carga con el valor mayor de OEH 14 10 ), La instrucción de comparar pone a l el señalizador ey porque (A) < (L); la operación «salta si señalizador de arrastre es 1» (nemotécnico JC en este ejemplo), examina el señalizador ey y comprueba que está a l. La instrucción de salto hace entonces que el contador de programa cambie a la dirección de la posición de la siguiente instruc ción (STORE L en este ejemplo). Observar que la MPU ha saltado dos instrucciones para llegar a la dirección simbólica STORE L que aparece listada en la columna «etiquetas». La MPU enton ces ejecuta las tres últimas instrucciones, las cuales almacenan el contenido del registro L (el número mayor, OEH en este ejemplo) en la posición de memoria 2040H. En el diagrama de flujo de la Figura 6.49a, el programa progresat::. al símbolo de decisión y después bifurcaba a la dere cha y seguía hasta alcanzar el símbolo «alto» inferior derecho. Observar de nuevo las tres últimas instrucciones de la Figura 6.49c. El objeto de estas instruc ciones es almacenar el contenido del registro L en la posición de memoria 2040H. Según la tabla del repertorio de instrucciones de la Figura 6.21 el microprocesador genérico no tiene ninguna instrucción para almacenar directamente en memoria el registro L. Por tanto, ha sido necesario transferir primero el contenido del registro L a A y después almacenar A en memoria. A veces se encuentra que los microprocesadores con repertorios limitados de instrucciones (como la MPU genérica) son más dificiles de programar que las unidades con repertorios de mayor alcance. En resumen, las técnicas de bifurcación observadas en el diagrama de flújo se ejecutan por instrucciones de salto (a veces denominadas de bifurcación). Las instrucciones de bifurcación condicional toman una decisión según la condición de un señalizador particular del registro de status. La técnica de bifurcación es muy utilizada en la mayoría de los programas.
PROBLEMAS RESUELTOS
6.86. Lainstn valor del
Solocióa: Las in una resta
6.87. La instn Z) en es
SoIIlCililE La im
ma. El se ninguna I
6.88. Acudir a señaliza¡: bifurcaC"
Solucióll: Si IAl
comparal
6.89. Acudir, instruro
ala~
SoIDdíll: Si .-4.
posición instruro. porque A
6.90. Acudir; STORE Sol~
Elap esto se d blador
6.91. Las iIlSl en los r So. . . . Las I comput;
6.85. La caja en forma de diamante de la Figura 6.49a se denomina _ _ _ _ (símbolo de decisión, diamante de bifurcación).
1
Solución: La caja en forma de diamante de la Figura 6.49a se denomina símbolo de decisión.
http://librosysolucionarios.net
.'
j .,
-
--~
PROORAMACION DEL MICROPROCESADOR
memoria, y la de flujo nos ra de secuencia. , coloca el valor servar que en el ras que el regis o). se encuentra Ilcción de saltar Ira que CY = 0, 1: es «almacenar 11 la posición de e por la instruc enguaje ensam que se muestra
6.86.
le estas instruc _Según la tabla • tiene ninguna l sido necesario oria. A veces se (como la MPU ror alcance. re ejecutan por de bifurcación . -:lel registro de ~
La instrucción «comparar A con 1:;, de la Figura 6.49b _ _ (cambia, no cambia) el valor del acumulador. Solución: Las instrucciones de comparación no cambian el valor del acumulador aún cuando se realice una resta interna (A - L en este ejemplo).
6.87.
La instrucción «comparar A con L» de la Figura 6.49b afecta al señalizador ___ (CY, Z) en este programa. Solución: La instrucción «comparar A con L» de la Figura 6.49b afecta al señalizador CYen este progra ma. El señalizador de cero (Z) también es afectado pero no es comprobado posteriormente por ninguna instrucción de bifurcación en este programa.
6.88.
lo del acumula-
muestra en la ¡ue el registro L señalizador CY oico JC en este o de salto hace guiente instruc les para llegar a ...a MPU en ton1:1 registro L (el agrama de flujo rcaba a la dere
191
Acudir a la Figura 6.49. Si el contenido del acumulador (A) y del registro L son iguales, el señalizador de arrastre es puesto a ___ (0, 1) por la instrucción de comparación y la bifurcación ___ ( [)
F
.,'"
10
:A &5
Multiplicando Multiplicador Producto
S x 3 = 15 10
!O
O ,~
20
El
C'9
:>roblema
-
Multiplicador - 2 Producto
Multiplicador - 3 Producto
OE+OE = JC l6
5 + 5 + 5 .. J5 10
I Multiplicando
'.
1
1
Multiplicando
"',"} ,, (a)
Multiplicación decimal
(b) Método de multiplicación
fe)
de sumas repetidas
Método de multiplicación de sumas repetidas
Figura 6.55.
..
En la Figura 6.56 se muestra un diagrama de flujo detallado para la subrutina de la multiplica ción. Cada bloque del diagrama corresponde a una sentencia del lenguaje ensamblador en el programa de la subrutina de la Figura 6.57. El primer bloque del diagrama de flujo de la Figura 6.56 guarda el contenido actual del registro par HL utilizando una operación de introducir (push). Es común en la mayoría de las subrutinas introducir el contenido de los registros de la MPU en la pila debido a que éstos pueden ser utilizados durante la ejecución de la subrutina y por tanto cambiar los valores que tenían. Por supuesto, el contenido del registro par HL será restaurado al final de la subrutina con una operación de sacar (pop) (ver la instrucción pop cercana al extremo inferior de este ejemplo). Los tres siguientes bloques de la Figura 6.56 inicializan los registros L, H Y A. El registro L contendrá el multiplicador (02H en este ejemplo), y será decrementado a OOH durante la rutina
http://librosysolucionarios.net
202
FUNDAMENTOS DE LOS MICROPROCESADORES Entrada del programa principal
Etiqueta Introduce el registro HL
Nem
•.
en la pila
)j
(L) - Multiplicador
I
(Ii) - Multiplicando
~
I
X
LOOP
Q
lmacena producto parcial en (A)
A
S
.. D ~menta
el multiplicador en I
,..
Ciclo
U Carga el producto pardal en A
n
JI Eurae el registro HL
de la pila
DONE
,. R
Al programa principal
Figura 6.56.
Diagrama de flujo detallado de la subrutina de multiplicación utilizada en el problema de instrumentación.
http://librosysolucionarios.net
nUiJIIIIIU¡;¡t:UJ . . .
-'
FiguraS."
PROORAMACION DEL MICROPROCESADOR
Etiqueta
LOOP
Nemotécnico
Operando
PUSH
H
Comentarios ; Introduce los registros (H) y (L) en la pila para guardar el contenido del registro HL
MVI
L,02H
MOV
H,A
XRA
A
; Pone A a cero
ADD
H
; Suma (H) + (A); almacena la suma en A
STA
2020H
MOV
A.L
DCR
A
MOV
L,A
LDA
2020H
; Carga el contenido de la posición de memoria 2020H en A (restaura el contenido de A de la memoria temporal 2020H)
JZ
DONE
; Salta a la posición DONE (dirección 2065H) si Z", l o si (L) es decrementado a OOH; de otra forma, continúa con la siguiente instrucción
; Carga el registro L con 02H (este es el factor de escala); 02H es el multiplicador ; Transfiere (A) -+ (H); contenido de H guarda la suma en H
= multiplicando;
; Almacena (A) en la posición de memoria 2020H (2020H se utiliza como almacenamiento temporal) ; Transfiere (L) a A ; Decrementa el registro A ; Transfiere (A) a L
.
DONE
JMP
LOOP
POP
H
RET
Figura 6,57.
lizada
203
; Salta siempre a la posición LOOP (dirección 2055H) ; Extrae de la pila y restaura el contenido del registro HL ; Vuelve de la subrutina
Versión en lenguaje ensamblador de la subrutina de multiplicación utilizada en el problema de instrumentación.
http://librosysolucionarios.net
204
FUNDAMENTOS DE LOS MICROPROCESADORES
de multiplicación. El registro H contendrá el multiplicando (OEH en este ejemplo). Esta fue la suma pasada a la subrutina desde el programa principal, en el acumulador, y después transferida al registro H. El acumulador (A) entonces se pone a OOH. El quinto bloque de la Figura 6.56 representa la suma del multiplicando (OEH en este ejem plo) con A. El producto parcial de OEH se almacena entonces temporalmente en la posición de memoria 2020H, mientras que el acumulador se utiliza para decrementar el contenido del regis tro L. Después de que el multiplicador es decrementado de 02H a 01 H, éste se vuelve a colocar en el registro L. A continuación el producto parcial se restaura en el acumulador. El símbolo de decisión de la Figura 6.56 hace la pregunta: ¿Es (L) = DO? Si la respuesta es no, el programa vuelve a saltar al ciclo. Sin embargo, si la respuesta a la pregunta es sí, el programa bifurca a la derecha y el contenido del registro par HL es restaurado por la operación de sacar. Finalmente, la operación de vuelta bifurca de nuevo al programa principal. De acuerdo con el diagrama de la Figura 6.54, la vuelta de la subrutiQa se hace a la dirección 200EH del programa principal. Como el multiplicador en este ejemplo es 02H, el programa pasará dos veces a través de la secuencia suma-almacena-transfiere-decrementa-transfiere-carga y después sale al programa principal. Observar que el producto final 1CH pasará al programa principal al estar en tI acumu lador. Un listado en lenguaje ensamblador para la subrutina de multiplicación se detalla en la Figura 6.57. Cada sentencia del lenguaje ensamblador corresponde a un bloque del diagrama de flujo detallado de la Figura 6.56. Intentar seguir el flujo del programa de la Figura 6.57, acudien- ~.• do al diagrama de flujo como ayuda. En resumen, cuando se utilizan instrucciones de llamada y vuelta, asegurarse que estén empa rejadas. Observar también que los registros adecuados están inicializados y utilizar las instruccio nes de introducir y sacar a pares. Tener en cuenta el número de parámetros (datos) que son pasados a y desde la subrutina. ;; Las subrutinas son muy utilizadas por los programadores. Las ventajas de utilizar subrutinas son:
t
l. 2.
3. 4.
Añaden una estructura al programa que lo hace más fácil de comprender. Hacen la depuración más fácil. Abrevian el programa. Permiten escribir grandes programas de una forma más fácil y eficiente.
6.100. Acwl
posic
Soluci
lJ¡
gura 6
6.101. Elpn el PUl
Solud
EJI
6.102. Si el So MPL"
SoJuci1i
Sic
busq~
6.103. LaiDSl contad a __
SoJIIdiI laiJ sea intn car se le
6.104. Lainst contad( So'__
laÍII
dores de 6.105. Un siml . sustitui<
La desventaja de utilizar subrutinas es que el programa se ejecutará generalmente de forma más lenta cuando se llama a las subrutinas.
grama. Solución: L'n So;
sustituid. ensambl.i cero».
PROBLEMAS RESUELTOS 6.99. El diagrama de flujo de la subrutina de la multiplicación de la Figura 6.56 utiliza el método de _ _ (suma y desplaza, adición repetida) para calcular un producto. Solución:
, Ce{
6.106. En la su registro. tro __
El diagrama de flujo de la subrutina de la multiplicación de la Figura 6.56 utiliza el método de la suma repetida para calcular un producto. El método de suma y desplazamiento es otro método
Solución: En la tro H mI(
más común de multiplicar que utiliza una serie de sumas y desplazamientos para calcular un pro ducto.
http://librosysolucionarios.net
".Ia 41,'::;U.lIII'
.. I I;!
ii!'Ii
PROGRAMACION DEL MICROPROCESADOR
a fueta nsferida
te ejem ¡ción de lel regis locar en
:a es no,
205
6.100. Acudir a la Figura 6.54. ¿Qué tipos de instrucciones del microprocesador utilizan la posición de memoria llamada pila? Solución: Llamada, vuelta, introducir y sacar utilizan el área de memoria UFO llamada pila en la Fi gura 6.54.
6.101. El propósito de la instrucción LXI SP de la Figura 6.53 es _ el puntero de pila.
(inicializar, examinar)
Solución: El propósito de la instrucción LXI SP en la Figura 6.53 es inicializar el puntero de pila.
rograma le sacar. o con el rograma ravésde rograma acumu
6.102. Si el señalizador de arrastre se pone a l en la Figura 6.53, la operación «lC» hará que la MPU busque la siguiente instrucción _ _ (HLT, LXI H).
la en la rama de lcudien
6.103. La instrucción de llamada en la Figura 6.53 hace que el contenido del _ _ (registro A, contador de programa) sea introducido en la pila y el contador de programa se ponga a _ _ (dirección hex).
n empa nruccio que son
Solución: La instrucción de llamada de la Figura 6.53 hace que el contenido del contador de programa sea introducido en la pila y el contador de programa se ponga a 2050H. La subrutina de multipli car se localiza en la dirección 2050H como muestra la Figura 6.54 .
.brutinas
6.104. La instrucción POP PSW de la Figura 6.53 saca el contenido del _ _ (acumulador, contador de programa) y de los señalizadores de la pila y los devuelve a la CPU.
Solución: Si el señalizador de arrastre se ¡jOhe a 1 en la Figura 6.53, la operación dO> hará que la MPU busque la siguiente instrucción LXI H en la dirección simbólica START.
Solución: La instrucción POP PSW de la Figura 6.53 saca el contenido del acumulador y de los señaliza dores de la pila y los devuelve a la CPU. Ver la tabla de instrucciones misceláneas (Fig. 6.40).
!
; I
t
:\ i¡
mamás
6.105. Un símbolo de decisión en forma de diamante como el de la Figura 6.56 normalmente es • sustituido por una instrucción de ___ (comparación, salto) cuando se escribe el pro grama. Solución: Un símbolo de decisión en forma de diamante como el de la Figura 6.56 normalmente es sustituido por una instrucción de salto cuando se escribe el programa. El programa en lenguaje ensamblador de la Figura 6.57 muestra que en este caso se utiliza la instrucción «le» o «salta si cero».
Iiliza el
,.
ttodo de ,método 'un pro-
6.106. En la subrutina de multiplicación de la Figura 6.57, el valor del multiplicando está en el registro _ _ (H, L) mientras que el valor del multiplicador está en el regís tro _ _ (H, L). Solución: En la subrutina de multiplicación de la Figura 6.57, el valor del multiplicando está en el regis tro H mientras que el del multiplicador está en el registro L.
http://librosysolucionarios.net
I
"¡
•
206
FUNDAMENTOS DE LOS MICROPROCESADORES
6.107. En la subrutina de m ultiplicación, el contenido del registro _ _ (H, L) es decrementa do hasta OOH. Solución: En la subrutina de multiplicación, el contenido del registro L es decrementado hasta OOH. 6.108. Acudir a las Figuras 6.53 y 6.57. Los registros H y L son utilizados co mo ______ (punteros de dirección, registros de datos) en el programa principal y como ______ (punteros de dirección, registros de datos) en la subrutina.
6.117. Elrq
Res.
los se Res.
6.119. Dul"3.l tro_
Solución:
Según la información de las Figuras 6.53 y 6.57. los registros H y L son utilizados como punte ros de dirección en el programa principal y como registros de datos en la subrutina de multiplica ción.
Co.
6.118.
Res.
6.120. Acudi rá_
Res.
*'!
.l
PROBLEMAS SUPLEMENTARIOS
'1
6.109. Un listado en lenguaje _ _ (ensamblador, máquina) se caracteriza por el uso de operandos, códigos de op y direcciones de memoria hexadecimales. Res. máquina. 6.110. Una sentencia de un programa en lenguaje ensamblador se divide en cuatro _ _ (campos, seg mentos) denominados etiqueta, nemotécnico, operando y comentario. Res. campos.
"
6.111. Una versión en lenguaje ensamblador, a veces, se denomina programa _ _ (objeto, fuente). Res. fuente. 6.112. BASIC es considerado un lenguaje de alto nivel porque cada sentencia del programa represen ta _ _ (menos, más) operaciones máquina del microprocesador que una sentencia en lenguaje ensam blador. Res. más. 6.1 13. Los señalizadores de la Figura 6.3 son parte del dispositivo de almacenamiento de la CPU denomi nado registro _ _ . • Res. de status. 6.114. Cuando los registros H y L se unen para formar el registro HL, habitualmente son utilizados para señalar _ _ . Res. direcciones.
I,
6.121. Despu. mientr
Res.
6.122. Interru do eL
Res.
!
6.123. Aleje( reinicia (mayor
Res. 6.124. Acudir rá
Res.
1
AaI
6.115. La pila en el sistema microprocesador genérico (o en un sistema 8080/8085) está localizada en _ _ . Res. la RAM.
~
.
6.116. El registro de 16 bits etiquetado SP en la Figura 6.3 es el _ _ _ . Res. puntero de pila.
."
http://librosysolucionarios.net
'dial
"li
!;
PROORAMACION DEL MICROPROCESADOR
207
les decrementa
6.117. El registro de 16 bits etiquetac:fo PC en la Figura 6.3 es el _ _' _ _ . Res. contador de programa.
lo hasta OOH.
6.118. Como regla general, las operaciones aritméticas del microprocesador _ _ (afectan, no afectan) a los señalizadores.
Res. afectan.
utilizados co
lma principal y rutina.
~ dos como punte na de multiplica
6.119. Durante la instrucción comparar de un microprocesador, solamente el contenido del regis tro _ _ (A. de status) es afectado por la operación.
Res. status (son afectados los señalizadores).
6.120. Acudir a la Figura 6.58. El contenido del acumulador después de la operación ADD L se rá _ _ (8 bits). Res. 0000000 l. o
Acumulador
Acumulador
ro de operandos, Registro de status
Registro L
Figura 6.58.
;eto. fuente).
6.121. Después de la operación ADD L de la Figura 6.58 el señalizador de arrastre estará a _ _ (O, 1) mientras que el señalizador de cero es igual a _ _ (O, 1).
Res. 1, Z=O.
trnma represen lIcia en lenguaje
6.122. Internamente el microprocesador no tiene hardware para restar; por tanto realiza restas convirtien do el _ _ (minuendo, sustraendo) a su forma en complemento a 2 y sumando.
Res. sustraendo.
t
la CPU denomi
1
utilizados para
6.123. Al ejecutar una instrucción de resta de la tabla de la Figura 6.4, un señaJizador de arrastre en reinicialización (CY O) significa _ _ (préstamo, no préstamo) o que el minuendo es _ _ (mayor, menor) que el sustraendo. Res. no préstamo, mayor. 6.124. Acudir a la Figura 6.59. El contenido del acumulador después de la operación SUB H se rá _ _ (8 bits), que es la representación en complemento a 2 de _ _ (decimal). Res. 11111110, -210' Acumulador
está localizada
100000001
I
Acumulador
Antes de la operación Registro H
Registro de status
Cy
z
Figura 6.59.
http://librosysolucionarios.net
208
6.125. Después de la operación SUB H de la Figura 6.59, el sefializador de arrastre (-
.'.
•
'~-
- -.
- '••
,.,.
slme
'o
-
246
FUNDAMENTOS DE LOS MICROPROCESADORES
7.66. ___ es una técnica por la cual cada dispositivo de E/S es periódicamente muestreado para deter
minar si está «listo» y necesita servicio.
l.
Res. escrutinio. 7.67. Acudir a la Figura 7.16. El dispositivo periférico de entrada de este sistema es el _ _ .
Res. teclado.
7.68. Acudir a la Figura 7.16. _ _ (el adaptador de la interfaz de salida, la RAM) almacena los datos de
salida y los mantiene en las entradas del visualizador de siete segmentos.
Res. adaptador de la interfaz de salida.
7.69. Acudir a la Figura 7.16. La sincronización de la transferencia de datos del adaptador de la interfaz de
entrada en este sistema se realiza utilizando un esquema de _ _ (escrutinio de interrupciones,
simple interrupción).
Res. simple interrupción.
I
í'
t
7.70. Acudir a la Figura 7.16. Las direcciones de la ROM y RAM están _ _ (completamente, parcial
mente) decodificadas en este sistema.
Res. completamente.
7':/1. Acudir a la Figura 7.16. Las direcciones del puerto de entrada y salida están _._ parcialmente) decodificadas en este sistema.
Res. parcialmente.
(completamente,
8.1.
El prin año el· maneja El niio sistema
CfUill¡
.alimeol Jos prg
char
)al
El 11 cada di mayoñ 8085 ti alguoru Uo. menos más de lotel8(
Las
bloque orgamz y un te: de 6 bil
las señé
un regl'
La,
interflU 2048 x El8 sadores microp de esto microo
I
•
http://librosysolucionarios.net
d.·.
1
.
::;...
Capítulo 8
EL MICROPROCESADOR INTEL 8080/8085
8.1. INTRODUCaON .,.
J
~
I
I
E! priIner microprocesador fue introducido por Inte1 eorporation en 1971. lnte! introdu'o ese año e e 1ts y e e Its. En 1974, Inte mtr uJo el microprocesador 8080, que maneja palabras de datos de 8 bits y tiene !6 líneas de dirección y un puntero de pila de 16 bits. El microprocesador Intel 8085 es una versión mejorada del 8080. Integra el reloj, control del ~tema y prioridad de las interrupciones en el el microprocesador, reduciendo así el número de g utilIzados en la mayoría de los SIstemas. El 8085 tambIén opera con una sencIlla fuente de ..alimentación de +5 V. La MPU 8085 utiliza las mismas instrucciones que el 8080, haciendo así Jos programas compatibles, El microprocesador 8085 tiene dos instrucciones más para aprore char las características del hardware añadido. El microprocesador genérico introducido en los capítulos anteriores fue una versión simplifi cada de la MPU del 8080/8085. Una vez familiarizado con el microprocesador genérico, la mayoría de los estudiantes tendrán poca dificultad para aprender la MPU del 8085. La MPU 8085 tiene más registros internos, muchas más posibles instrucciones, más señales de control y algunas características diferentes cuando se compara con el microprocesador genérico. Una tendencia en la evolución de los microprocesadores ha sido integrar más funciones en menos O. Un sencillo sistema basado en microprocesador, hace poco tiempo, habría necesitado más de 20 el. El sistema mostrado en la Figura 8.1 solamente contiene tres el. La MPU es el Intel 8085 que controla el bus del sistema y dos el especiales de interfaz de periféricos. Las pastillas de interfaz de periféricos, diseñadas especialmente, que se muestran en forma de bloque en la Figura 8.1 son los el 8155 y 8355. El 8155 contiene 2048 bits de RAM estática, organizada como una memoria de 256 x 8 bits. Esta unidad también contiene tres puertos de E/S y un temporizador. Dos de las E/S son puertos de propósito general de 8 bits. La unidad restante de 6 bits puede ser utilizada como puerto de entrada, como puerto de salida o como camino de las señales de control para los dos puertos de 8 bits. El 8155 es programable y también contiene un registro de status y un contador temporizador de 14 bits. La otra pastilla mostrada en el diagrama de bloques de la Figura 8.1 es el el periférico de interfaz 8355. El 8355 contiene 16.384 bits de ROM y está organizado como una memoria de 2048 x 8 bits. El 8355 también contiene dos puertos de E/S de propósito general de 8 bits. El 8080/8085 y sus parientes de 16 y 32 bits se han convertido en algunos de los microproce sadores de propósito general más ampliamente utilizados en el mundo. Entre los parientes del microprocesador 8080/8085 están los Intel 8086, 8088, 80186, 80188, 80286 y 80386. Algunos de estos circuitos integrados fueron seleccionados para utilizarlos como epu de las populares microcomputadoras IBM. 247
http://librosysolucionarios.net
~ I-.'~_ _'
r
_1"
¡ ,1
¡
248
FUNDAMENTOS DE LOS MICROPROCESADORES ,( ~
8085 MPU
,
"
El se] líneas de se cona: patillas ! micropn ción de tar las P' f!.ecueo<
Algo
RAM 8155 256 x 8 y temporizador
-
(
ROM 8355
2k x 8
y E/S
Figura 8.1. Diagrama de bloques del sencillo sistema 8085 que utiliza pastillas especiales de interfaz.
8.2. FUNCIONES Y DIAGRAMA DE PATILLAS DEL 8085 El microprocesador de 8 bits Intel 8085 está ubicado en un encapsulamiento de doble línea (OIP) de 40 patillas. El diagrama de patillas de la MPU 8085 se reproduce en la Figura 8.2a. En la Figura 8.2b hay una tabla donde se resumen los nombres y descripciones de las patillas. La información que da el fabricante puede especificar un microprocesador 8085 u 8085A. La unidad 8085A es una versión ligeramente revisada del microprocesador original 8085. Versiones poste riores incluyen dispositivos de más alta velocidad como el 8085A-2, .,8085AH, 8085AH-2 Y 8085AH~1. >lace.., d'~,Jt.I...... rlfOII
la operación
INXH
8.119.
I
.~
. Figura 8.41.
lUlO. ' ¡ 8.112. El símbolo V es usado por Intel para describir la operación lógica _ _ (ANO, ORlo Res. ORo 8.113.
Las instrucciones CALL están más relacionadas con las subrutinas, mientras que las instrucciones de reinicialización están más próximas a las _ . Res. interrupciones.
8.114. La instrucción JPE del 8080/8085 es una operación de salto _ _ (condicional, incondicional). Res. condicional. 8.115.
La instrucción RNZ del 8080/8085 comprueba el status del señalizador de _ _ antes de ejecutar la operación de vuelta. Res. cero (2).
8.116.
La instrucción RP del 8080/8085, mostrada en la Figura 8.42, es una instrucción de _ _ (núme ro) byte(s) con un código de op _ _ (hex). Res. 1, FO.
8.117. El contador de programa del 8080/8085 contendrá _ _ (hex) después de la operación «vuelta de subrutina si más» ilustrada en la Figura 8.42. Res. 2004H. 8.118. El puntero de pila del 8080/8085 contendrá _ la Figura 8.42. Res. 2082H.
(hex) después de la operación RP mostrada en
http://librosysolucionarios.net
.~
•.121.
j
..
~
1.122. •
iones
t
nal).
EL MICROPROCESADOR INTEL 8080/8085
317
Puntero de pila
Después ele la operachSn Registro de r-""=r-..,.-..,--,--r-,-....,.-.., status '--"'---'--.......0-1--'----'----'----'
Contador de '---_ _ _ 20A_ 1H_ _ _-' programa
?
Contador del programa
Figura 8.42.
1.119. Las operaciones PUSH y POP del 8080/8085 están especificadas con instrucciones de _ _ (1, 3) bytes y utilizan el direccionamiento _ _ . Res. 1, indirecto de registro.
1.111. Las operaciones IN y OUT del 8080/8085 están especificadas con instrucciones de _ _ (l, 2) bytes y utilizan direccionamiento _ _ .
Res. 2, directo.
U21. Al ejecutar la instruCción DI del 8085 ¿qué interrupciones se inhabilitarán? Res. INTR, RST 5.5. RST 6.5 y RST 7.5.
un.
¿Qué tres funciones pueden ser realizadas por la instrucción SIM del 8085? Res, programar la máscara de interrupciones para las interrupciones hardware RST 5.5, 6.5 Y 7.5; poner a O (reinicialización) el cerrojo de la interrupción disparada por flanco RST 7.5 y cargar el cerrojo de salida SOD.
~'
ecutar
,
núme
1
¡elta de
~.
rada en
http://librosysolucionarios.net
I
-
-~
--~
Capítulo 9 PROGRAMACION DEL MICROPROCESADOR 8080/8085
9.1. INTRODUCaON Para el programador, la microcomputadora básada: en el 8080/8085 consta del repertorio de instrucciones, memoria, registro de propósito general, contador de programa, puertos de entrada/ salida, sefializadores, puntero de pila y pila. Todo ésto, excepto la memoria y entradas y salidas paralelo, forman parte del microprocesador. Por conveniencia, el resumen del repertorio de instrucciones del microprocesador 8080/8085 se reimprime en la Figura 9.1. El repertorio de instrucciones se detalló en el Capítulo 8. El modelo de programación del 8080/8085 se reproduce en la Figura 9.2a. Lista los registros que conciernen al programador. El registro de status se muestra con mayor detalle en la Figu ra 9.2b. Una breve descripción de cada uno de los cinco sefializadores del registro de status también se da en la Figura 9.2b. Los programas fuente se escribirán en lenguaje ensamblador. El formato utilizado por lntel divide cada línea del lenguaje ensamblador en los siguientes campos:
Etiqueta
Código de op
Operando
Comentarios
Estos campos son similares a los utilizados en la programación en lenguaje ensamblador del Capítulo 6. La entrada del campo de etiqueta es opcional y representa el «nombre» de la línea. Generalmente las líneas que son el destino de saltos o bifurcaciones tendrán entradas en el campo de etiqueta. El campo de código de op contiene el nemotécnico del código de operación de la instrucción del 8080/8085 que se va a ejecutar. El campo de operando da el dato con el que va a operar el código de operación especificado. El campo de operando a veces se denomina argumen to. El campo de comentarios puede contener información útil para explicar la función de la instrucción. Los comentarios son opcionales, pero su uso es extremadamente importante para documentar el programa. Una línea de programa en lenguaje ensamblador para el 8080/8085 podría ser: DATA
MOV
A,M
; Entrar dato al acumulador
Cada uno de los cuatro campos tiene una entrada en este ejemplo. Se explican como sigue: l.
Campo de etiqueta: Contiene la entrada DATA. Este es el «nombre» de esta línea. Proba blemente es el destino de una instrucción de bifurcación posterior (o anterior).
318
http://librosysolucionarios.net
.-A___·~_,,'____
_ _ _ _ _ _7_ _
PROORAMACION DEL MICROPROCESADOR 8080/8085
ulo9 -
\
A
repertorio de de entrada/ Idas y salidas
lIS
DI' 8080/8085 llo 8. a los registros le en la Figu 5trO de status
!arlo por lntel
Lblador del .,. de la línea. IS en el campo peración de la UD el que va a
C I
a argumen ¡ción de la :1ante para
~: ~
L
sigue:
111 linea. Proba rior).
O
Nemotécnico ADDA ADDB ADDC ADDD ADDE ADDH ADDL ADDM ADlv AOCA AOCB AOCC AOCD AOCE AOCH AOCL AOCM ACI v ANA A ANAB ANAC ANAD ANA E ANAH ANAL ANA M ANI v CALLaa CZaa CNZaa CPaa CM aa CCaa CNCaa CPEaa CPOaa CMA CMC CMPA CMPB CMPC CMPD CMPE CMPH CMPL CMPM CPh DAA DADB DADD DADH DADSP
Código de op (hex) 87 80 81 82 83 84 85 86 C6 8F 88 89 8A 8B 8C 80 8E CE A7 AO Al A2 A3 A4
AS A6 E6 CD CC C4 F4 FC DO 04 EC E4 2F 3F BF B8 B9 BA BB
se
BD BE FE 27 09 19 29 39
Jii
319
Descripción Suma A a A (doble A) Suma B a A Suma CaA Suma DaA Suma E aA Suma HaA Suma L aA Suma LOC memoria (H & L) a A Suma dato inmediato v a A Suma A a A con arrastre (doble A con arrastre) Suma B a A con arrastre Suma C a A con arrastre Suma D a A con arrastre Suma E a A con arrastre Suma H a A con arrastre Suma L a A con arrastre Suma LOC memoria (H & L) a A con arrastre Suma dato inmediato v a A con arrastre Examina A y borra arrastre ANDB conA ANDCconA ANDD con A ANO E con A ANDHconA ANDL con A ANO LOC memoria (H & L) con A ANO dato inmediato v con A CaJl subrutina en dirección aa Sí cero, CALL en dirección aa Si no cero, CALL en dirección aa Si más, CALL en dirección aa Si menos. CALL en dirección aa Si arrastre. CALL en dirección aa Si no arrastre, CALL en dirección aa Si paridad par, CALL en dirección aa Si paridad impar, CALL en dirección aa Complementa A Complementa arrasve Pone a 1 el señalizador de cero Compara A con B Compara A con C Compara A con D Compara A con E Compara A con H Compara A con L Compara A con LOC memoria (H & L) Compara A con dato inmediato v Ajuste decimal A Suma B & Ca H & L Suma D & E a H & L Suma H & L a H & L (doble H & L) SumaSPa H&L
l.
"
Figura 9.1. Resumen del repertorio de instrucciones para el microprocesador 8080/8085. (Todos los nemotécnicos tienen derecho de copia © de
http://librosysolucionarios.net Intel Corporation, 1976.)
)
""
320
)
,
FUNDAMENTOS DE LOS MICROPROCESADORES
O
E H
I
J
L
M
Nemoté:-nico OCRA OCRB OCRe OCRD OCRE OCRH OCRL OCRM OCXB OCXD OCXH OCXSP DI El HLT IN v INRA INRB INRe INRD INRE INRH INRL INRM INXB INXD INXH INXSP JMPaa JZaa JNZaa JPaa JMaa JCaa JNCaa JPEaa JPOaa LOA aa LOAXB LOAXD LHLOaa LXI B,vv LXID,vv LXIH,vv LXI SP,vv MOVA,B MOVA,e MOVA,D MOVA,E MOVA,H MOVA,L MOVA,M
Código de op (hex) 3D 05 00 15 ID 25 20 35 OB lB 2B 3B F3 FB
76 OB 3C 04
OC 14 IC 24 2C 34 03 13 23 33 C3 CA C2
F2 FA DA 02 EA E2 3A OA lA 2A 01 11 21 31 78 79 7A 78 7C 7D 7E
Descripción Decrementa A Decrementa B Decrementa e Decrementa D Decrementa E Decrementa H Decrementa L Decrementa LOC memoria (H & L) Decrementa B & e Decrementa D & E Decrementa H & L Decrementa SP Inhabilita interrupciones Habilita interrupciones Alto hasta interrupción Entrada del dispositivo v Incrementa A Incrementa B Incrementa e Incrementa D Incrementa E Incrementa H Incrementa L Incrementa LOC memoria (H & L) Incrementa B & e Incrementa D & E Incrementa H & L Incrementa SP Salta a dirección aa Si cero, JMP en dirección aa Si no cero. JMP en dirección aa Si más, JMP en dirección aa Si menos, JMP en dirección aa Si arrastre, JMP en dirección aa Si no arrastre, JMP en dirección aa Si paridad par, JMP en dirección aa Si paridad impar, JMP en dirección aa Carga A de dirección aa Carga A de LOC memoria (B & C) Carga A de LOC memoria (D & E) Carga H & L de dirección aa Carga B & e con dato inmediato vv Carga D & E con dato inmediato vv Carga H & L con dato inmediato vv Carga SP con dato inmediato vv Transfiere B a A Transfiere e a A Transfiere D a A Transfiere E a A Transfiere H a A Transfiere L a A Transfiere LOC memoria (H & L) a A
Figura 9.1.
(continuaCión).
http://librosysolucionarios.net
~~
'SS'
I
PROGRAMACION OEL MICROPROCESADOR 8080/8085
M
Nemotécnico MOV B,A MOV B,e MOV B,D MOV B,E MOVB,H MOV B,L MOV B,M MOVe,A Move,B MOVC,D Move,E Move,H Move,L Move,M MOV D,A MOVD,B MOVD,e MOVD,E MOVD,H MOVD,L MOVD,M MOVE,A MOVE,B MOVE,e MOVE,D MOVE,H MOV E,L MOVE,M MOVH,A MOVH,B MOVH,e MOVH,D MOVH,E MOVH,L MOVH,M MOV L,A MOV L,B MOV L,e MOV L,D MOV L,E MOVL,H VL,M MOV M.A MOVM,B MOVM,e MOVM,D MOVM,E MOVM,H MOVM,L MVIA,v MVIB,v MVI C,v MVID,V MVIE,v MVIH,v MVIL,v
~
Código de op (hex)
47 41 42 43 44
45 46 4F 48 4A 48 4C
40 4E 57 50 51 53 54 55 56 5F 58 59 5A 5e 50 5E 67 60
61 62 63 65 66
6F 68 69 6A
68 6C
6E 77
70 71
72 73
74 75 3E
06
OE 16 lE 26 2E Ñgura 9.1.
321
Descripción Transfiere A a B Transfiere e a B Transfiere D a B Transfiere E a B Transfiere Ha B Transfiere L a B Transfiere LOC memoria (H & L) a B Transfiere A a e Transfiere B a e Transfiere D a e Transfiere E a e Transfiere H a e Transfiere L a e Transfiere Loe memoria (H & L) a e Transfiere A a D Transfiere B a D Transfiere e a D Transfiere E a D Transfiere H a D Transfiere L a D Transfiere Loe memoria (H & L) a D Transfiere A a E Transfiere B a E Transfiere e a E Transfiere D a E Transfiere H a E Transfiere L a E Transfiere LOC memoria (H & L) a E Transfiere A a H Transfiere BaH Transfiere e a H Transfiere D a H Transfiere E a H Transfiere L a H Transfiere LOC memoria (H & L) a H Transfiere A a L Transfiere B a L 11 Transfiere e a L Transfiere Da L Transfiere E aL Transfiere Ha L Transfiere LOC memoria (H & L) a L Transfiere A a LOC memoria (H & L) Transfiere B a Loe memoria (H & L) Transfiere e a Loe memoria (H & L) Transfiere D a Loe memoria (H & L) Transfiere E a Loe memoria (H & L) Transfiere H a LOC memoria (H & L) Transfiere L a Loe memoria (H & L) Transfiere dato inmediato v a A Transfiere dato inmediato va B Transfiere dato inmediato va e Transfiere dato inmediato v a D Transfiere dato inmediato v a E Transfiere dato inmediato va H Transfiere dato inmediato vaL }
(continuación).
http://librosysolucionarios.net
i
.~
~.'---------=~-'~-~"--~-----"-'_.------------._!~------------~ 322
FUNDAMENTOS DE
M N
O
t :f
ORAH ORAL ORA M ORI v OUT v PCHL POPB POPD
1.
,f
Nemotécnico MVIM,v NOP ORA A ORAB ORAC ORAD ORA E
POPH P
: 't.,'
i ~
ti ;~
R
S
POPPSW PUSHB PUSHD PUSHH PUSHPSW RAL RAR RLC RRC RIM RET RZ RNZ RP RM RC RNC RPE RPO RSTO RST I RST2 RST3 RST4 RST5 RST6 RST7 SIM SPHL SHLDaa STA aa
STAXB STAXD STC
LOS MICROPROCESADORES Código de op (hex) 36 00 87
BO 81 82 83 54
85 86 F6 D3 E9 CI DI El FI C5 D5 E5 F5 17 IF 07 OF 20 C9 C8 CO FO F8 D8 DO E8 EO C7 CF D7 DF E7 EF F7
FF 30
F9 22 32 02 12 37
Figura 9.1.
Descripción Transfiere dato inmediato va memoria LOC (H & L) No operación Examina A y borra arrastre OR Bcon A OR Ccon A OR DconA OR EconA OR H con A OR LconA OR LOC memoria (H & L) con A OR dato inmediato v con A Saca A a dispositivo v Salta a LOC memoria contenida en (H & L) Saca B & C de pila Saca D & E de pila Saca H & L de pila Saca A y los señalizadores de pila Introduce B & C en pila Introduce D & E en pila Introduce H & L en pila Introduce A y los señalizadores en pila Desplazamiento circular CY + A a la izquierda Desplazamiento circular CY + A a la derecha Desplazamiento circular A a la izquierda y arrastre Desplazamiento circular A a la derecha y arrastre Lee máscara de interrupción (8085 sólo) Vuelve de subrutina Si cero, vuelve de subrutina Si no cero, vuelve de subrutina Si más, vuelve de subrutina Si menos, vuelve de subrutina Si arrastre, vuelve de subrutina Si no arrastre, vuelve de subrutina Si paridad par, vuelve de subrutina Si paridad impar, vuelve de subrutina Rearrancar subrutina en dirección OOH Rearrancar subrutina en dirección 08H Rearrancar subrutina en dirección IOH Rearrancar subrutina en dirección 18H Rearrancar subrutina en dirección 20H Rearrancar subrutina en dirección 28H Rearrancar subrutina en dirección 30H Rearrancar subrutina en dirección 38H Pone a I máscara de interrupción (8085 sólo) Carga SP de H & L Almacena H & L en LOC memoria aa Almacena A en LOC memoria aa Almacena A en LOC memoria (B & C) Almacena A en LOC memoria (D & E) Pone a I señalizador de arrastre
.
"
(continuaciÓn).
http://librosysolucionarios.net
, 1
m
,
PROGRAMACION DEL MICROPROCESADOR 8080/8085
Nemotécnico
I
S
X
SUBA SUBB SUBC SUBD SUBE SUBH SUBL SUBM SU! v SBBA SBBB SBBC SBBD SBBE SBBH SBBL SBBM SBIv XCHG XTHL XRAA XRAB XRAC XRAD XRAE XRAH XRAL XRAM XRIv
Código de op (hex) 97 90 91 92 93 94 95 96
D6 9F 98
99
9A 9B 9C 90 9E DE EB E3 AF A8 A9 AA AB AC AD AE EE
323
Descripción Borra A Resta B deA Resta CdeA Resta D de A Resta E de A Resta H deA Resta L de A Resta contenido de LOC memoria (H & L) de A Resta dato inmediato v de A Pone A con arrastre menos Resta B de A con préstamo Resta C de A con préstamo Resta D de A con préstamo Resta E de A con préstamo Resta H de A con préstamo Resta L de A con préstamo Resta LOC memoria (H & L) de A con préstamo Resta dato inmediato v de A con préstamo Cambia D & E con H & L Cambia tope de pila con H & L Borra A OR exclusiva de B con A , OR exclusiva de C con A OR exclusiva de D con A OR exclusiva de E con A OR exclusiva de H con A OR exclusiva de L con A OR exclusiva de LOC memoria (H & L) con A OR exclusiva de dato inmediato v con A
Figura 9.1.
(continuación).
2. Campo código de op: Contiene la entrada MOV. Esta dice a la CPU que es una instruc ción de transferencia de datos. La CPU entonces busca el siguiente campo de operando para encontrar la fuente y destino de la transferencia del dato. 3. Campo de operando: Contiene la entrada A,M. A (acumulador) es el destino del dato mientras que la memoria (Al) es la fuente. La posición de memoria está indicada por el registro par HL en esta instrucción de registro indirecto. 4. Campo comentario: Contiene la entrada «; Entrar datos al acumulador». Este campo describe qué ocurre cuando se ejecuta la instrucción. En este caso, el dato es introducido en el acumulador desde una posición de memoria señalada por el registro par HL. El punto y coma (;) se utiliza como delimitador para separar el campo del operando del campo de comentario. Los campos de código de op y operando deben rellenarse, pero los campos'de etiqueta y comenta rio son opcionales. Algunas instrucciones inherentes requieren una entrada en el campo de códi go de op y ninguna en el campo de operando. Recordar del Capítulo 6 que los diagramas de flujo, programas fuente en lenguaje ensambla dor y ensambladores son todos ayudas en la programación de un sistema basado en microproce sador. El listado del programa objeto ensamblado es el resultado final deseado utilizado por la mi crocomputadora.
http://librosysolucionarios.net
324
FUNDAMENTOS DE LOS MICROPR()CESAOORES
Señalizadores
(8)
A
(8)
B
(8)
C
(8)
D
(8)
E
(8)
H
(8)
L
(8)
Registro de status
S
I
z
I
I
} "'"m"rodo",
~,_rio~oon_ d, d,..
SP
(16)
Puntero de pila
PC
(16)
Contador de programa
Modelo de programación para el microprocesador 8080
(a)
I
Acumulador principal
I
AC
I
p
I
I
Cy
L
I
Registro de status CY - I si hay arrastre
P - 1 si la paridad es par
AC - I si hay arrastre auxiliar del bit 3 al bit 4 Z - I si el resultado es O
s- MSB
(bit más significativos) del resultado igual al bit del signo si S - O, el numero es positivo si S - 1, el numero es negativo
(b)
Señalizadores del registro de status del 8080/8085
Figura 9.2.
9.2. PROGRAMAS LINEALES Considerar el diagrama de flujo funcional de la Figura 9.3a. Representa un programa lineal ya que no contiene bifurcaciones. El diagrama de flujo también representa un programa que carga un número binario, lo convierte a su forma en complemento a 2 y finalmente almacena la representación en complemento a 2 en memoria. Recordar que los diagramas funcionales como el de la Figura 9.3a son una descripción general de la solución del problema. Un diagrama detallado para el mismo problema se muestra en la Figura 9.3b. Este diagrama se completó con las funciones de un microprocesador espeCífico -la MPU 8080(8085 en este caso-o Del diagrama detallado de la Figura 9.3b, puede obtenerse un programa en lenguaje ensamblador, el cual aparece en la Figura 9.4a. Observar que cada instrucción del programa tiene
http://librosysolucionarios.net
1,'
...... * .. ::a~
I a •
-
PROORAMACION DEL MICROPROCESADOR 8080/8085
C
Inicio
)
Inicia el programa
+
Cargar el registro HL con 2020H
_de datos
(
Inicio
t
)
t Cargar número binario de memoria
+
Complementar número
binario a la forma de
complemento a uno
Cargar el registro B con OIH
Cargar el acumulador desde la posición de memoria 2020H
td bit 3 al bit 4
t~
del resulta~o
(
.0
t
Alto
Complementar el acumulador
Sumar BaI acumulador
Forma el complemento a dos
t
)
( Diagrama para el programa binario -a-complemento-a-2
Forma él complemento a uno
t
Almacenar el acumulador en la posición de memoria 2020H
(a)
Carga el número binario
t
+
Almacenar el resultado del complemento a dos en memoria
Inicializa el registro B
t
+
Sumar + I a la forma de complemento a uno para formar el complemento a dos
Inicializa el registro HL
+ )
Almacena el complemento a dos
Fin del programa
Alto
(h) Diagrania detallado para el programa binario
-a-complemento-a-2
Figura 9.3.
a lineal ya
-:a que carga !le almacena la lCÍonales como
Este diagrama "085 en este Da en lenguaje programa tiene
un bloque rectangular comparable en la Figura 9.3b. Como ejemplo, el primer bloque rectangular
de la Figura 9.3b, que dice «cargar el registro par HL con 2020H», se corresponde con la senten cia del programa ensamblador «LXI H, 2020H» en la Figura 9.4. El siguiente paso será traducir el programa fuente en lenguaje ensamblador de la Figura 9.4a a su equivalente en lenguaje máquina. Este «ensamblamiento» o proceso de traducción puede hacerse utilizando un programa especial de computadora denominado ensamblador o puede hacerse manualmente. El repertorio de instrucciones de la Figura 9.1 puede ser utilizado para /
http://librosysolucionarios.net
326
FUNDAMENTOS DE LOS MICROPROCESADORES
Etiqueta
Código op LXI
Comentarios
Operando H,2020H
~
MVI
B,Om
MOV
A,M
tradu. lasdiJ cadai
; Inicializa registro par HL con 2020H
el coo
; Inicializa registro B con 01H
¡nstru
01 etiquc
tanto ; Transfiere número binario de posición de memoria 2020H al acumulador ; Complementa acumulador
CMA
9.1. ADD
B
MOV
M,A
; Transfiere número complemento a 2 del acumulador a posición de memoria 2020H
9.2.
; Detiene la MPU
HLT (a)
; Suma B a A para fonnar complemento a 2
Programa en lenguaje ensamblador para el problema binario-a-complemento-a-2
'.
Dirección (hex)
Contenido (hex) Etiqueta
2000 2001 2002 2003 2004 2005
21 20 20 06 01 7E
t;.,
2006 2007
2F 80
t'
2008
77
..
Código op
Operando
Comentarios
LXI
H.2020H
; Inicializa registro par HL con 2020H
MVI
B,OIH
MOV
A,M
CMA ADD MOV
M,A
:t
2009
76
HLT
; Inicializa registro B con 01 H
.
; Transfiere número binario de posición de memoria 2020H al acumulador ; Complementa acumulador ; Suma B a A para fonnar complemento a 2 ; Transfiere número complemento a 2 de acumulador a posición de memoria 2020H ; Detiene la MPU
. (b) Programa objeto para el problema binario-a-complemento-a-2
Figura 9.4.
http://librosysolucionarios.net
,.3.
.~
I
fA.
•
"W
I
•
sr
I ,1
PROORAMAClON DEL MICROPROCESADOR 8080/8085
327
traducir manualmente el programa en lenguaje ensamblador. El programa de la Figura 9.4b tiene las direcciones de la memoria de programa y el listado del código máquina hexadecimal para cada instrucción y operando. La sección no sombreada a la izquierda de la Figura 9.4b representa el código máquina tal como puede aparecer en la memoria de programa. Observar que el programa listado en la Figura 9.4b no contiene entradas en el campo de etiqueta. Esto es porque las etiquetas se utilizan habitualmente para mostrar el destino de una instrucción de bifurcación. El programa de la Figura 9.4 representa un programa lineal y por tanto no contiene saltos.
(
[)20H
PROBLEMAS RESUELTOS 9.1. El listado de la Figura 9.4 es un ejemplo de programa _ _ (de bifurcación, lineal). Solución:
El listado de la Figura 9.4 es un ejemplo de programa lineal.
9.2. Acudir a la Figura 9.5. El resultado encontrado en la memoria de datos después de correr el programa listado en la Figura 9.4 será _ _ (8 bits). Este resultado será la representa ción en complemento a _ _ (1, 2) de 00000o 102,
f
Solución: El resultado que se encuentre en la memoria de datos de la Figura 9.5 después de correr el programa será 11111110. Este resultado es la representación en complemento a 2 de 00000o 102,
Después de la operación
Antes de la operación
20:!OH L-_ _....I.-Direcci-·--·ó-n...l
I
Memoria de datos
Rgura9.5.
:posición
9.3. Acudir a la Figura 9.5. La dirección de la memoria de datos donde se depositará el resulta do despuéS de la ejecución del programa será _ _ (hex). Solución: El registro par HL apuntará todavía a la posición 2020H después del programa. Por tanto la dirección en la memoria de datos de la Figura 9.5 donde el resultado se depositará después de la ejecución del programa será 2020H.
9.4. El diagrama de la Figura 9.6 representa un segmento de programa que introduce un número ASCII y enmascara los 4 bits ___ (menos, más) significativos. El resultado es el equivalente _ _ (BCD, binario) del número ASCII.
http://librosysolucionarios.net
,11
t:!____
m._;q_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _~_. . . . . .~
,
328
'\
ruNDAMENTOS DE LOS MICROPROCFSAOORES
(
Inicio
)
Comienzo del programa
t Entrar desde el puerto número OIH
Entra número ASCII
t
Enmascara los 4 bits más significativos. El resultado es el equivalente BCD de los números
AND del acumulador con la máscara
I
0000 1111
ASCII (0-9)
+ Almacenar acumulador en posición de memoria 2040H
.~
I l' "
j
+
C
~
Alto
)
Figura 9.6.
"
, ~'
Almacena número BCD en memoria
Operación de alto
Diagrama detallado del problema.
,1
I ;
Solución:
~ ' ,
El diagrama de la Figura 9.6 representa un segmento de programa que introduce un número
ASCII y enmascara los 4 bits más significativos. El resultado es el equivalente BCD del número
ASCII.
;~
J!,
~'::
,
9.5. Basándose en el diagrama detallado en la Figura 9.6, completar las líneas 2 y 3 del seg mento de programa del 8080/8085 mostrado más abajo.
I'j
1.;
Etiqueta
~
LINEA LINEA LINEA LINEA
n~ I,
,", ,1
,
4
()
!,
,1
;1
~ ~~
'1
01H
4
HLT
; Entrada número ASCII desde puerto 01 H ; AND acum. con 00001111 (OFH) ; Almacenar acum. en posición 2040H ; Parar MPU
9.6.
.
~
.E;!Ii
mL~
r
Un posible segmento de programa que realice la tarea detallada en la Figura 9.6 es el siguiente:
"
;~,
IN
2 3
Comentarios
Solución:
,l
1
1
Código de op Operando
Etiqueta
Código de op
LINEA LINEA LINEA LINEA
IN ANI
1
2 3 4
STA
HLT
Operando
OIH OFH 2040H
Comentarios ; Entrada número ASCII desde puerto 01 H ; AND acum. con 00001111 (OFH) ; Almacenar acum. en posición 2040H ; Parar MPU
Listar el código máquina hexadecimal del 8080/8085 requerido para ejecutar el programa del Problema 9.5. El programa comenzará en la posición de memoria 2000H como sigue:
t,
http://librosysolucionarios.net
e:
...
.".
~
~"'"
u
a~ ~ él VII
-
PROORAMACION DEL MICROPROCESADOR 8080/8085
Posición de memoria (hex) 2000 2001
2002
2003
2004
329
Contenido (hex)
BD 1 } instrucción de entrada O
Soludón: Acudir al repertorio de instrucciones de la Figura 9.1 para los códigos de op. Lo que sigue es un listado en código máquina 8080/8085 que ejecutará el programa del Problema 9.5: Posición de memoria (hex) 2000 2001
2002 2003 2004 2005 2006
2007
Contenido (hex) BO 01 E6
OF 32 40 20 76
un número D del número
9.3. PROGRAMAS CICLICOS ~
y 3 del seg
l ..
puerto 01H
¡:u)
_ . .+OH
L"
,
",,"cnte:
Ide puerto 01 H 'FH) ,,:.2040H
~ el programa 2000H como
Considerar el diagrama de bloques de la Figura 9.7a de un sistema microcomputador basado en el 8080/8085. Suponer que el visualizador de 8 bits binario cuenta de forma ascendente empezan do en OOOOOOOOr La Figura 9.7b muestra un diagrama detallado que resuelve el problema de cuenta binaria. Un segmento del programa en el lenguaje ensamblador 8080/8085 que realizará la función de cuenta binaria está en la Figura 9.7c. El primer bloque rectangular del diagrama de la Figura 9.7b muestra que el acumulador se inicializa con OOH. El segundo bloque representa la transferencia de la cuenta del acumulador al puerto de salida 02H. El tercer bloque muestra que la cuenta se incrementa en l por el acumula dor. A continuación el programa vuelve a enlazar al bloque de salida. El programa visualizará a gran velocidad, en binario, la salida de la cuenta ascendente. El programa en el lenguaje ensamblador 8080/8085 de la Figura 9.7c realizará la función de cuenta binaria representada en el diagrama anterior. La instrucción XRA A borra el acumulador. La instrucción OUT transfiere el contenido del acumulador al puerto de salida 02H. La cuenta en el acumulador es incrementada en l utilizando la instrucción INR A. La instrucción JMP hace que la MPU bifurque, hacia atrás, a la instrucción con la etiqueta simbólica LOOP. El programa entonces está en un ciclo continuo a través de la secuencia OUT, INR A Y JMP. En la práctica actual, el programa representado en la Figura 9.7 contará mucho más rápido de lo que una persona pueda observar. Debido al rápido secuenciamiento, las lámparas de visualiza ción de la salida binaria parecerán que están luciendo continuamente. Para ralentizar el proceso de cuenta, es habitual afiadir un retardo de tiempo en el programa. El diagrama de la Figura 9.8a representa un programa de cuenta binaria que incluye un retardo de tiempo.
http://librosysolucionarios.net
¡
12
(
~
~.
Almacena la suma BCD en posición de memoria 2032H
t
Alto )
(b)
r ~
t
r-
L,
Inicializa registro par HL con 2030H
Diagrama detallado para el problema ejemplo
Figura 9.12: {continuaci6n}.
http://librosysolucionarios.net
343
344
FUNDAMENTOS DE LOS MICROPROCESAOORES
9.35. La función representada por el bloque 8 de la Figura 9.12b podría producirse por ¿qué instrucción del 8080/8085?
Res, ADDB. 9.36. La función representada por el bloque 9 de la Figura 9.12b podría producirse por ¿qué instrucción del 8080/8085? Res, DAA.
9.37. La función representada por el bloque 11 de la Figura 9.12b podría producirse por ¿qué instrucción del 8080/8085?
Res. MOV M,A.
9.38. La función representada por el bloque 12 de la Figura 9.12b podría producirse por ¿qué instrucción del 8080/8085?
Res. HLT.
9.39. Escribir un programa en lenguaje ensamblador 8080/8085 para el problema representado en la Figu ra 9.12.
.. ~
-
'-40t0
! ftICI
t'.SÜ:
:mq
Res. Etiqueta
....
Código de op LXI MOV ANI MOV INX MOV ANI ADD DAA INX MOV HLT
Operando H,2030H
A,M
OFH B,A H A,M
OFH B H M,A
Comentarios . ;'lnicializa registro HL ; Carga A con primer número ASCII ; Enmascara 4 bits más significativos de A ; Guarda número BCD en B ; Incrementa registro HL a 2031 H ; Carga A con segundo número ASCII ; Enmascara 4 bits más significativos de A ; Suma número BCD en A y B ; Ajusta suma en A para que sea igual al número BCD ; Incrementa registro HL a 2032H ; Almacena suma BCD en posición de memoria 2032H ; Detiene MPU
9.40. Después que el programa de la Figura 9.12 ha sido ejecutado, la suma BCD _ _ (BCD) será depositada en la posición _ _ de la memoria de datos (hex). Res. 0001 OlOOBCD' 2032H. ..
http://librosysolucionarios.net
6SH( f3hic Á..liIHC
..
. \ I
EPR(
.le g I
El dprñ
~rq
~'O!
3!' 3':
~(
Capítulo 10
cción
cción
EL MICROPROCESADOR
MOTOROLA 6800
cción
cción
Figu
BCD
32H será
r.
10.1. INTRODUCCION Motorola Corporation introdujo su microprocesador 6800 de 8 bits en la década de los aftos setenta. Motorola ha desarrollado desde entonces «la familia 6800» con nuevas pastillas que generalmente son una extensión software y hardware compatible con la MPU 6800. El 6800, 6802 (6800 con reloj interno y alguna RAM) y el más potente 6809 son microprocesadores de 8 bits que son fáciles de utilizar. Versiones especializadas de la família 6800, como las 6801, 6804, 68HC04, 6805, 68HC05 y 68HC 11 se describen como computadoras de una sola pastilla. El fabricante las denomina unidades microcomputadoras (MCU). Una pastilla MCU, tal como la 68HC11, puede incluir una unidad microprocesadora de 8 bits (como el 6800), un temporizador, ROM, RAM, un conversor A/D, un oscilador, líneas de E/S programables e incluso una EPROM. El 68HC 11 podría compartir el repertorio de instrucciones del 6800. MCU en pastillas de 8 bits son populares en los sistemas computadoras dedicadas de bajo costo. En 1980, Motorola introdujo su microprocesador avanzado de 16 bits: el 68000. El 68000 fue el primer microprocesador que introdujo una arquitectura interna de 32 bits y grandes conjuntos de registros de propósito generaL Otros miembros de la familia 68000 son el 68HCOOO (CMOS), 68008,68010,68020 Y 68030. Las características de la MPU 68000 son una arquitectura interna de 32 bits con un bus externo de datos de 16 bits, y 16 megabytes (M bytes) de direcciones de memoria. La MPU 68008 tiene la misma arquitectura interna de 32 bits con un bus de datos externo de 8 bits. El 68010 es una MPU de memoria virtual mejorada de 16 bits externos/32 bits internos. El muy popular 68020 es una MPU de memoria virtual de 32 bits internos/32 bits externos. Más recientemente, Motorola ha sacado su más potente microprocesador de 32 bits mejorado: el 68030. Las MPU de la serie 68000 no son compatibles con la familia más antigua de microprocesadores: la 6800 de 8 bits. .. La memoria virtual es una característica de MPU avanzadas, tales como la 68010, 68020 Y 68030. El término memoria virtual significa que un programador puede escribir programas como si la capacidad de memoria fuese ilimitada. La técnica de memoria virtual permite programas mayores que la capacidad de la memoria principaL La parte «extra» del programa se almacena en memoria secundaria (como por ejemplo discos), pero es accedida como si estuviese en memoria principal. El microprocesador 6800 se usa normalmente en un sistema microcomputador. Una configu ración mínima de sistema se ilustra en la Figura 10.1. El microprocesador 6800 requiere una fuente de alimentación de +5 V y un reloj externo de dos fases (no se necesita reloj externo en la MPU 6802). La entrada de rearranque a la MPU 6800 mostrada en la Figura 10.1 es una inte rrupción hardware conectada a la patilla de REINICIALIZACION de la pastilla y se utiliza para
345
http://librosysolucionarios.net
,
"dumnnnl 'IIIILI··
346
1 FUNDAMENTOS DE LOS MICROPROCESADORES
J
IRearranquel
1'IdI
....-~
Bus de direcciones
-
+
Reloj
......
~
)
ROM
y
,
_
v'
Bus de datos
~ I\
Líneas de datos_
.....
RAM
.........
PIA 6820
t
.,,
~
~J
Bus de control
----,1
:So
.iI"II
.-....
l
~ ~
t-
Fuente de alimentación de +5 V
-.-.
-~
........
MPU 6800
Líneas de control Dispositivos de E/S
t
....,-
.:1
,--
-
f-- Líneas de datos
..
f
Figura 10.1.
i. (
Diagrama de bloques de un sistema mínimo basado en el 6800.
inicializar el sistema. La MPU 6800 tiene 16 líneas de dirección y 8 lineas de datos bidirecciona les. Las líneas de control están etiquetadas como el bus de control de la Figura 10.1. A la MPU en la Figura 10.1 se le ha añadido la memoria en forma de ROM y RAM. La interfaz entre la MpU y los dispositivos de entrada/salida en la Figura 10.1 se hace con el adaptador de interfaz de periféricos 6820 (PIA) especial de Motorola. Observar que la PIA 6820 proporciona dos caminos de datos de 8 bits que pueden ser utilizados como puertos de entrada o de salida. La PIA tiene también 4 líneas de control entre la PIA y los dispositivos periféricos. La PIA 6820 tiene registros internos que la pueden hacer programable y permite almacenamiento
http://librosysolucionarios.net
...s .. .11
EL MICROPROCESADOR MOTOROLA 6800
347
temporal de datos para simplificar la transferencia de datos. Observar, en la Figura 10.1, que los pulsos de interrupción pueden ser enviados desde la PIA, vía el bus de control, a la MPU 6800. En resumen, la PIA 6820 forma un enlace de comunicación de dos direcciones y un dispositivo de almacenamiento temporal entre el microprocesador y los dispositivos periféricos. Motorola también produce otros dispositivos especiales compatibles con el microprocesador 6800. Algunos son el adaptador de interfaz de comunicaciones asíncronas 6850 (ACIA) que se . utiliza para transmisión asíncrona de datos serie, las pastillas de reloj de la serie 6870 de Motorola que pueden ser utilizadas para proporcionar los pulsos de reloj de dos fases que requiere la MPU, y el controlador de acceso de memoria directa 6844 que proporciona, a los sistemas basados en el 6800, la lógica para soportar cuatro canales de acceso directo a memoria (DMA). Otras muchas pastillas de soporte están disponibles para las series de microprocesadores 6800 y 68000.
10.2. FUNCIONES Y DIAGRAMA DE PATILLAS DEL 6800 El microprocesador de 8 bits Motorola 6800 está ubicado en un encapsulamiento de doble línea de 40 patillas (DIP). El diagrama de patillas de la MPU 6800 se ilustra en la Figura 1O.2a. En la Figura 10.2b hay una tabla que resume los nombres y descripciones de las patillas. La patilla estándar MPU MC6800 opera con una frecuencia de reloj de 1,0 MHz. Existen versiones más rápidas de la MPU 6800. El MC68AOO es el mismo procesador pero opera con una frecuencia de reloj de 1,5 MHz, mientras que el MC68BOO opera con 2,0 MHz. Las entradas y salidas de la MPU 6800 pueden agruparse como entradas de reloj, entradas de alimentación, entradas/salidas del bus de datos, salidas del bus de direcciones y entradas/salidas de control. Las flechas en el diagrama de patillas de la Figura 10.2a muestran la dirección del flujo de sefiales. La función de cada patilla del microprocesador 6800 está descrita brevemente en los párrafos que siguen. En cada párrafo, acudir a la Figura 10.2 para la localización de cada patilla y un resumen de sus funciones.
Tie"a (V.. ) (patillas 1 y 21) Estas patillas están conectadas a la parte negativa de la fuente de alimentación de 5 V d.c.
Alto (1lAU') (patilla 2) Cuando la entrada HArT está activada por un nivel BAJO, la MPU 6800 entra en el modo alto. En este modo las líneas de tres estados van a su estado de alta impedancia y el procesador se detiene. Esta entrada puede utilizarse para «ir paso a paso» en el proceso de depuración de un programa. Muchas veces la entrada HALT se inhabilita al conectarla a +5 V.
¡;jona PUen
con el • 6820 rada o os. La niento
Reloj (01 Y 02) (patillas 3 y 37) Estas patillas de entrada reciben sefiales de reloj no solapadas de la circuitería de reloj externa al sistema .
Línea de petición de interrupción (11fQ) (patilla 4) Cuando la entrada IRQ es activada con un nivel BAJO, el microprocesador 6800 completará la instrucción actual, introducirá todos los registros en la pila, pondrá a 1 el sefializador 1, y
http://librosysolucionarios.net
•
-
(.....:: z11I1I1í1l..iI........................................--~-----------348
.
-~
~
FUNDAMENTOS DE LOS MICROPROCESADORES Vss HALT 01 IRQ VMA NMI BA~ V __
1 2 3 4 5 6 7 , 8
REINICIALIZACION TSC
ce
~
.,1
I
AO Al A2 A3 A4 AS A6 A7 A8 A9 AIO All
9 10 MC6800 11 12 13 14 15 16 17 18 19 20
(a)
Nombres de las patillas ·AO-AIS ·DO-D7 ·HALT ·TSC *R/W ·VMA *DBE 'loBA ·IRQ REINICIALIZACION NMI 01,02 V... Va:
ff-BtL
02 DBE
1
,
ia.':&.-ia
R/W DO DI D2 D3 D4 D5 D6 D7 A15 AI4 AI3
~
-~ :"1.:
~
~
A12
V.
Diagrama de patillas de la MPU 6800
Descripción Lineas de dirección Lineas del bus de datos Alto Control de tres estados Lectura/escritura Dirección válida de memoria Habilitación bus de datos Bus disponible Petición de interrupción Reinicialización Interrupción no enmascarable Señales de reloj Alimentación
.. Estas señales se conectan al bus del sistema. (b) Nombres de las patillas y funciones
Figura 10.2.
Tipo Salida, tres estados Bidireccional. tres estados Entrada Entrada Salida, tres estados Salida Entrada Salida Entrada Entrada Entrada Entrada
LB cionaI ddÍ
La" ~
etce: : una lo:mI tu.ra.
'Ii.'
1
,
http://librosysolucionarios.net
EL MICROPROCESAOOR MOTOROLA 6800
349
saltará a la rutina de servicio de interrupción seí\alada por las posiciones de memoria FFF8H y
FFF9H. La interrupción IRQ puede ser enmascarada.
Dirección pálida de memoria (JI'MA) (patilla 5)
Cuando la salida VMA va al nivel ALTO, indica a otros dispositivos del sistema que la dirección en el bus de direcciones es válida. 4
Interrupción no enmascarable (NMI) (patilla 6)
Cuando la entrada NMl va al nivel BAJO, la respuesta del microprocesador 6800 es similar a su respuesta cuando la entrada IRQ alcanza el nivel BAJO. La interrupción NMI es no enmasca rable y su vector de direcciones se encuentra en las posiciones de memoria FFFCH y FFFDH. Los contenidos de FFFCH y FFFDH apuntan entonces al comienzo de la rutina de servicio de in terrupción. Bus disponible (BA) (patilla 7)
Cuando la salida HA alcanza el nivel ALTO indica a los dispositivos externos que el micropro cesador 6800 ha dejado de ejecutar instrucciones. La MPU 6800 cesa de ejecutar instrucciones debido a una instrucción de espera (WAI) o a una entrada hardware HALT. La línea de control HA proporciona un método de decir a los dispositivos externos que los buses de direcciones y datos de la MPU 6800 están en el estado de tres estados y pueden ser utilizados para cosas como, por ejemplo, operaciones DMA. Alimentación (JI'ce) (patilla 8)
La parte positiva de la fuente de alimentación de 5 V d.c. se conecta a la patilla 8 del CI microprocesador 6800. Líneas de dirección (Ao-A I !!) (patillas 9-20, 22-25)
Las 16 salidas de dirección de la MPU 6800 (Ao-A ,s ) están conectadas al bus de direcciones del sistema. Estas líneas son utilizadas para direccionar dispositivos como ROM, RAM Y de E/S. • Líuas IR .tol (Do-O,) (patillas 26-33)
Las ocho patillas de datos (Do-D7 ) de la MPU 6800 están conectadas al bus de datos bidirec cional del sistema. Las líneas del bus de datos están para transferir datos a y desde memoria o dispositivos de E/S. Control de lectura/escritura (R/W) (patilla 34)
La salida R/Wes una línea de control que indica a un dispositivo externo (RAM, ROM, PIA, etcétera) si la MPU 6800 está leyendo o escribiendo. Una salida ALTA de la línea R/W indica una lectura, mientras que una salida BAJA indica que se está realizando una operación de escri tura.
http://librosysolucionarios.net
•
,
:;:::sr
a
350
iR. . . .
FUNDAMENTOS DE LOS MICROPROCESAOORES
Habilitación del bus de datos (DBE) (patilla 36) La entrada DBE controla las excitaciones del bus de datos del microprocesador 6800. Una entrada ALTA en la patilla DBE habilita las líneas de datos, mientras que una entrada BAJA inhabilita, o pone en tres estados, a las líneas de datos. Debido a que las transferencias de datos entre memoria y E/S ocurren cuando el reloj 02 está en el nivel ALTO, la patilla DBE está muchas veces conectada a la línea 02 del reloj.
Control de tres estados (rSC) (patilla 39) Cuando la patilla de entrada TSC está excitada en ALTO por un dispositivo externo, todas las líneas de dirección y la línea de E/Westarán en tres estados. La línea TSC se utiliza con configu raciones DMA. Cuando no se utiliza DMA la patilla TSC puede conectarse a tierra.
Línea de reinicialización (REINICIALIZACION) (patilla 40)
-
,
I
\ :i
I.j
Cuando la patilla de REINICIALlZACION pasa del nivel ALTO al BAJO, el microprocesa dor 6800 pone el señalizador 1 a 1 y salta a la rutina de servicio de interrupciones de reinicializa ción señalada por FFFEH y FFFFH. La entrada de REINICIALIZACION se utiliza típicamente para inicializar o reinicializar el sistema.
PROBLEMAS RESUELTOS
10.1.
Solución:
1
El Motorola 6800 es un microprocesador de 8 bits. Su acumulador es de 8 bits, y transfiere datos en grupos de 8 bits vía el bus de datos.
;~ ,~
!
El Motorola 6800 es un microprocesador de _ _ (8, 16) bits.
10.2.
iti f ~
Una sencilla fuente de alimentación de _ _ -V se utiliza para alimentar el micropro cesador 6800. En la Figura 10.2a, la parte positiva de la fuente de alimentación está conectada a la patilla ___ , mientras que la negativa va a las patillas etiqueta das _ _ .
Solución: Se utiliza una fuente de alimentación de 5 V para alimentar el mi~roprocesador 6800. En la Figura 1O.2a, la parte positiva de la fuente de alimentación está conectada a la patillas etiqueta
das V" (patillas 1 y 21).
10.3.
El microprocesador 6800 utiliza _ _ (número) patillas como líneas de dirección y _ _ (número) patillas como líneas de datos bidireccionales. Solución:
El microprocesador 6800 utiliza 16 patillas como líneas de dirección y 8 patilIas como líneas de datos bidireccionales.
10.4.
Las tres interrupciones hardware del microprocesador 6800 son las de REINICIAliZA
O, entonces bifurca Si minuendo> sustraendo, entonces bifurca AND de A con M, seftalizadores afectados (A y M no cambian)
AND de B con M, señalizadores afectados (B y M no cambian) Si el número en complemento a 2 ~ O. entonces bifurca Si sustraendo ~ minuendo, entonces bifurca
Figura 10.26. Resumen del repertorio de instrucciones del microprocesador 6800.
I &
http://librosysolucionarios.net
;$
377
'~:;:~~í;lll""""""""""""""""""""""""----------------------~--~~~"~ ....~~... 378
FUNDAMENTOS DE LOS MICROPROCESADORES
B
I
Nemotécnico BLT BMI BNE BPL BRA BSR BVC BVS CBA CLC CLI
~
I !
.J{" .
C
DAA
DEC
6A
CLR CLRA CLRB CLV CMPA
CMPB
COM COMA COMB CPX
D
f
2D 2B 26 2A 20 8D 28 29 11
OC OE 6F 7F 4F 5F OA 81 91 Al BI CI DI El FI 63 73 43 53 8C 9C AC Be 19
I
':,.'.... '
Código de operación (hex)
DECA DECB DES DEX EORA
E EORB
7A 4A 5A 34 09 88 98 A8 B8 C8 D8 E8 F8
Modo de direccionamiento Relativo Relativo Relativo Relativo Relativo Relativo Relativo Relativo Inherente Inherente Inherente Indexado Extendido Inherente Inherente Inherente Inmediato Directo Indexado Extendido Inmediato Directo Indexado Extendido Indexado Extendido Inherente Inherente Inmediato Directo Indexado Extendido Inherente Indexado Extendido Inherente Inherente Inherente Inherente Inmediato Directo Indexado Extendido Inmediato Directo Indexado Extendido
Descripción Si el número en complemento a 2 < O, entonces bifurca Si menos (N - 1), entonces bifurca Si no igual a O (Z = O), entonces bifurca Si más (N = O), entonces bifurca Bifurca siempre Bifurca a subrutina (PC a pila) Si overflow borrado (V = O), entonces bifurca Si overflow a 1 (V = 1), entonces bifurca Compara A con B (A - B) Borra senalizador C Bon;a senalízador 1
J
Borra posición de memoria Borra A Borra B Borra senalizador V Compara A con M (A - M)
Compara B con M (B
L
M)
Complementa M (complemento a 1) Complementa A (complemento a 1) Complementa B (complemento a 1) Compara registro índice con M (XH/XL) (MjM + 1) Ajuste decimal de A .. (conviene la suma binaria de caracteres de BCD al formato BCD) Decrementa M Decrementa A Decrementa B Decrementa el puntero de pila Decrementa el registro de índice OR exclusiva de A con M .... A
OR exclusiva de B con M .... B
Figura 10.26.
(continuación).
http://librosysolucionarios.net
R
EL MICROPROCESADOR MOTOROLA 6800
LSRA
64 74 44
Modo de direcciona miento Indexado Extendido Inherente Inherente Inherente Inherente Indexado Extendido Indexado Extendido Inmediato Directo Indexado Extendido Inmediato Directo Indexado Extendido Inmediato Directo Indexado Extendido Inmediato Directo Indexado Extendido Indexado Extendido Inherente
LSRB
54
Inherente
60 70 40 50 01 8A 9A AA BA CA DA EA FA 36 37 32 33 69 79
Indexado Extendido Inherente
Nemotécnico INC INCA INCB INS INX
I
JMP J JSR
LDAA
LDAB
LDS
L
Código de operación (hex)
LDX
6C 7C 4C 5C 31 08 6E 7E AD BD 86 96 A6 B6 C6 D6 E6 F6 8E 9E AE BE CE DE EE
FE
I
LSR
NEG
N ) al formato BCD)
NEGA NEGB NOP ORA A
O ORAB
P
PSHA PSHB PULA PULB
R
ROL
Descripción Incrementa M Incrementa A Incrementa B Incrementa el puntero de pila Incrementa el registro de índice Salta a dirección Salta a subrutina (pe en pila)
Carga Men A
Carga Men B
Carga M en SP. M -. SPH • (M + 1) -,XL
Carga M en registro índice, M -. X H • (M + 1) -+XL Desplazamiento lógico de M a la derecha en arrastre Desplazamiento lógico de A a la derecha en arrastre Desplazamiento lógico de B a la derecha en arrastre Complemento a 2 de M -+M Complemento a 2 de A -+ A
lemento Inher~
Inhere Inmediato Directo Indexado Extendido Inmediato Directo Indexado Extendido Inherente Inherente Inherente Inherente Indexado Extendido
379
a 2 de B -+ B peración (se utilizan 2 -ciclos)
OR de A con M -+ A
OR de Bcon M-+B
¡:I', Introduce A en la pila Introduce B en la pila Saca A de la pila Saca B de la pila
Figura 10.28.
izquierda por medio del acarreo
(continuación).
http://librosysolucionarios.net
~
~
\
, 380
R
FUNDAMENTOS DE LOS MICROPROCESADORES
Nemotécnico
Código de operación (hex)
Modo de direccionamiento
ROLA
49
Inherente
Rota A a la izquierda por medio del acarreo
ROLB
59
Inherente
Rota B a la izquierda por medio del acarreo
ROR
Indexado Extendido Inherente
Rota M a la derecha por medio del acarreo
RORA
66 76 46
RORB
56
Inherente
Rota B a la derecha por medio del acarreo
RTI
3B
Inherente
RfS SBA
39 10 82 92 A2 B2 C2 D2 E2 F2 OD OF OB 97 A7 B7 D7 E7 F7 9F AF BF DF EF FF 80 90 AO
Inherente Inherente Inmediato Directo Indexado Extendido Inmediato Directo Indexado Extendido Inherente Inherente Inherente Directo Indexado Extendido Directo Indexado Extendido Directo Indexado Extendido Directo Indexado Extendido Inmediato Directo Indexado Extendido Inmediato Directo Indexado Extendido Inherente Inherente Inherente Inherente Inherente Indexado Extendido
Vuelve de la interrupción (los señalizadores A, B, X, PC son sacados de la pila) Vuelve de la subrutina (PC es sacado de la pila) Resta B de A _ A
SBCA
SBCB SEC SEI SEV STA A S
STAB
STS STX
SUBA
BO
CO DO EO
SUBB
FO
T
SWI TAB TAP TBA TPA TST
3F 16 -
06 17 07 6D 7D
Descripción
T
Rota A a la derecha por medio del acarreo
Resta M de A con arrastre (A - M - M)
1 10.40.
Resta M de B con arrastre (B M - C -+B) Pone seftalizador e en 1 Coloca la bandera len l (coloca la mascarilla de interrupción Pone seflalizador V en 1 Almacena A en M
10.41.
Almacena B en M J
Almacena SP en M, SPH-+ M, SPL ...;,(M + 1) Almacena X en M, X H M. Xt...;,(M + 1)
Resta M de A-+A
10.41.
Resta M de B_ B Interrupción software Transfiere A a B Transfiere A al CCR del procesador Transfiere B a A Transfiere CCR del procesador a A Test de M por (M) 00, (los señalizadores N y Z se ponen a 1 Ó O)
Figura 10.26.
(continuaci6n).
http://librosysolucionarios.net
1
10.43.
EL MICROPROCESADOR MOTOROLA 6800
,
Nemotécnico
T
W
i
Código de operación (hex)
Modo de direcciona miento
TSTA
40
Inherente
TSTB
SO
Inherente
TSX TXS
30 35
Inherente Inherente
WAI
3E
Inherente
381
Descripción Test de B por (B) 00, (los señalizadores N y Z se ponen a I ó O) Test de A por (A) 00, (los señalizadores N y Z se ponen a 1 Ó O) Transfiere SP + 1 ~X Transfiere X - I ~SP Espera interrupción (pe /, Z, B, CCR son introducidos en la pila)
X. PC
Figura 10.26. {continuaci6n}.
PROBLEMAS RESUELTOS
~ ~
.....
10.40.
I
Solución: Motorola subdivide las instrucciones del microprocesador 6800 en instrucciones de acumula dor y memoria, instrucciones de registro índice y puntero de pila, instrucciones de salto y bifurca ción e instrucciones de registro de códigos de condición.
lIterrupción
t.
10.41.
r
!
~
Acudir a la Figura 10.26. La instrucción ADDA puede ser utilizada en uno de _ _ (número) modos de direccionamiento. La instrucción ADD A suma el contenido del acumulador ___ (A, B) al contenido de una posición _ _ . El resultado se coloca en ______ . Solución: La instrucción ADD A listada en la Figura 10.26 puede ser utilizada en uno de cuatro modos de direccionamiento. La instrucción ADD A suma el contenido del acumulador A al contenido de una posición de memoria. El resultado se coloca en el acumulador A.
J 10.42.
Acudir a la Figura 10.27. El código de op para la instrucción ADD B del 6800 utilizado en este ejemplo es ___ (hex). Este código de op especifica que la instrucción «suma B a M» utiliza el modo de direccionamiento ___ . Solución: Ver la instrucción ADD B en la Figura 10.26. El código de op para la instrucción ADD B del 6800 utilizado en el ejemplo de la Figura 10.27 es DBH. Este código de op especifica que la instrucción «suma B a M) utiliza el modo de direccionamiento directo.
t
,
Motorola subdivide las instrucciones del microprocesador 6800 ert cuatro grupos. Lis tados.
10.43.
Acudir a la Figura 10.27. El contenido del acumulador B después de la operación de sumar será Solución: La suma binaria 0000 1111 + 00000oo l = 000 l 0000. Por tanto el contenido del acumulador B despuéS de la operación de suma de la Figura 10.27 será 00010000 2,
http://librosysolucionarios.net
.\
i
382
FUNDAMENTOS DE LOS MICROPROCESADORES
Acumulador B
Acumulador B Después de la operación
AIItes de la operación
0006
DBH
Memoria de programa
Memoria de datos
Figura 10.27.
• 10.44. Acudir a la Figura 10.28. La operación de borrado en este ejemplo utiliza el código de op _ _ (hex). Esta instrucción utiliza el modo de direccionamiento _ _ . U
Solución: Ver la instrucción CLR de la Figura 10.26. La operación de borrado mostrada en la Figu ra 10.28 utiliza el código de op 7FH. Esta instrucción utiliza el modo de direccionamiento exten dido.
10.45. Acudir a la Figura 10.28. Listar el contenido de las posiciones de la memoria de datos 0080H, 0081H Y0082H despUés de la operación de borrado. Solución: El contenido de las posiciones de la de la operación de borrado son: Posición de memoria 0080 = 11111111 Posición de memoria 0081 = 00000000 Posición de memoria 0082 = 00001111
memoria de datos mostradas en
hi Figura 10.28 después
(no cambia) (borrada) (no cambia)
Código de operación
'.~
Memoria de programa
00\0
7FH
0011
00000000 byte superior
0012
10000001 byte inferior
,t
1 "'~ .~
;
Desp. de la operad4n
Aates de la operadcSll
~
11..6. Memoria de datos
0080
1111 1111
0081
00110011
0082
0000 1111
I
1
Figura 10.28.
http://librosysolucionarios.net
?
0080
?
0081
?
0082
Memoria de datos
Eire! está
J
bade
~
J
I D'luJador B
la operación
EL MICROPROCESADoR MOTOROLA 6800
383
10.46. Acudir a la Figura 10.29. El código de op para la instrucción DEC en este problema es _ _ (hex). La operación «decrementar M» utilizada en este problema emplea el modo de direccionamiento ___ . Solución: Ver la instrucción DEC de la Figura 10.26. El código de op para la instrucción DEC utilizada en la Figura 10.29 es 6AH. La operación ((decrementar M» utilizada en este problema emplea el modo de direccionamiento indexado. Código de operación ·'~moria
l·el código de
_.
l
en la Figu mento exten
de programa Después de la operaciÓD
Antes de la operaciÓD
Memoria de datos
OOF3 OOF4 OOF5 OOF6
~
11111111
?
11111111
?
1111 1111
?
1111 1111
?
OOF3 OOF4 OOF5 OOF6
Memoria de datos
ria de datos Registro de índice
0000 0000 1111 00 11
Figura 10.29.
0.28 después
10.47. Acudir a la Figura 10.29. Listar el contenido de las posiciones de la memoria de datos OOF3H, OOF4H, OOF5H YOOF6H después de la operación «decrementar M». Solución: Al utilizar el direccionamiento indexado, la nueva dirección a la que se apunta en la memoria de datos es OOF3 + 3 - OOF6H. Por tanto, el contenido de las posiciones de la memoria de datos después de la operación «decrementar M» será: Posición de memoria OOF3 11111111 (no cambia) Posición de memoria OOF4 = 11111111 (no cambia) Posición de memoria OOF5 = 11111111 (no cambia) Posición de memoria OOF6 - 11111110 (decrementadas)
10.6. INSTRUCCIONES DE MEMORIA Y ACUMULADOR DEL 6800 .cemoria de latos
El resumen de las instrucciones de memoria y acumulador del microprocesador 6800 de Motor~la está reproducido en la Figura 10.30. Estas incluyen las instrucciones aritméticas, lógicas, de prue ba de datos y de transferencia de datos. Considerar la primera operación listada en la Figura 10.30. La operación de suma regular puede ser realizada bien en el acumulador A o en el B. Por tanto, se listan dos nemotécnicos para \
http://librosysolucionarios.net
•••
\
384
~
I
'¡
?-;
FUNDAMENTOS DE LOS MICROPROCESADORES
-
INMEDIATO ~
-
AOOA
88
Aooa ABA
ca
Sum."-" Suma con arrastre
AOCA
es
2
ADCI ANOA ANOI a'TA BiTa CLA CtRA CLAa CM'A CM'" CeA COM COilA COM8 NEG NEGA
NEGB DAA
...C9CI
1
ANO Test di bit
lIon'a
CompIrI
Compo,,_ Compilmlntl • I
Com¡;e"-a2 ¡Negar)
--
I\¡uII1I-'A
c.va OR._
""""""".. _
E,~
OtspIaztmientO drQIIt ata ¡zQ\ll&f'da
-
1loopII''''''''O_.''
Delpl&zamilnto. la ilquierda arltJMtiCO
OtspIazam18f1to 8 la . . cM, IritméhCO
--
a 11 dere-
.... lógiCO
-"""-
A001l"""-
Tr_""'_
,.Cero._
2 2
2 2 2 2
11
2
CI
2
INDllADO
-
EITEIIDIDO
O,
OP
2 Al Ea
S S
DIRECTO OP
-
2 58 08
3 3
;
z
;
z
1 A9 I
2 89
¡ ¡
2 FI
2 95 2 01
¡ 1
2 ES 2 M 2 e. 2 Al 2 ES a.
2 11 2 01
. .. ca
•
2
2
2
ti 2 lA 2 CA 2
2 II
2 fl
3
J
1
J
2 2 O.
1
H
A.M.C
8·M.C"'8 A' M-A
4
J J
1
2 1J I
J
2 Al 5 2
3
3 1
IJ
1
E' IC
2 Al 2 El 2 AA 2 EA
I 1
lA
2
'.
I
•• ••
• •
. •• .. •
2 2 fl
1 1C
S S S
2 2 FI
S
2 fA
2 lA
I
I
••
• •
ASR
..
SUBe SBA
ca
saCA S8ca TAl TIA
n C2
11 01
•
1
2 9Q 2 DO
4 1 1
2 2
2 12 2 DI
1 3
2
7t
10 lO 11
2 2
.. le
1
I
11
•
¡
1
2
l.
I
3
ti I
2 11
I 5 I
1 1 1
4
l
S
10 1
15T
Código do _ _ {1le'IIdecimaI): _ do cídOS do,. MPU: Numero de bytes de program&; Más8littnitiéo:
~ do la posIdón ......1Ida por 01_ do pII;
l
2 10
4 '3
•
-
1 1
2
2 2
2 2
1 1 1
1 1
,
l 'A 1-1 00
00 - A-A 00 - a-8la ...... _ _ do CclrMorIo
M-.
car_
Jl
••• •
1
51
2 J
1 1
B
2 2
I
SI
I
1 I
. . .. 51
2
41 51
I 2
.. ,.
2 2
I
I
1 1 1
1
¡
2 I
I 1
3'40 10
I
1
2
1
11
n
1
16 11
=} c::a - iJiiitID:l C
I
boQeInI
lit
-
c:x::t:=-O =}CCmñm - o :} - e 0e
1
110
bl
"
t
lit
0-=-0
.1 A-M e-M .. -M-A e M-, A B-A A M~t-A 8-M e-e A-a S-A M-DI .. - 00 1-00
I ! ! ! I
o o • • R R R
!
! I I ! I R S I R S
t
! ! I
• o ! ! • o. o ! 1
] •• ••
¡O•
1
•
I • IR. • o I IR. I I R 1 R
~} LiJe - CJIlIIlIlOJ bl lO
8
o o ! ! ! •o.o I o. !
•• •• •• • • II ••I
8 +"-8 A'Msr,SP-I-$I' 8'Msp,Sp-I-sr sr-, "$I',Msp-A sr·l--SP,Msp--.B
1
,
1 I
A+M-A
1 1
I • 1 ¡ 1 I • ! ! ! 1 o ! I ¡ ! o I ! ! I o ! ! I ! ! R ! I R •o o. ! R o o 1 1 R R S • • A • o R S R R • • R S o • 1 1 I o • 1 ! !
•e
• o ! ¡ • o I 1 I o t ¡ R o. I • I II
ti ,tI .... M A t l-A B +1 - 8
1
5 • J 1 I
K I N Z V
••
BCD._BCD M 1-11 A l -~A I I-a AE!'lIl-A a$M-I
AND_: • 00-.._; CA exclusm:
•
.
M-A .. '8
JI
11
2 El
Leyenda:
i
2
31
•
TSTA
....
2
J J
1
I Bl 2 Fl
1
3
&
2 A2 5
1
DE CONIlICION
••
00 -A 00 -a A M a-II A,a
l
!I
S S
I
53
SC
I
Fl 2 lO 2 fO
1
2
11
SA
1
I
2
1
J
~A
11-11
54
TST' OP
I1
J J J
B ·A
OO-M
J
2 11
Al 2 El 2 AS 1 EO
,,*
a' M ·a A'M a·M 4f SF
1
I
", .. M-A
I
J J
I
.
ASIlA ASRI LSR LSRA LSRI STAA STAI SUlA
2
,
2
J J J
J
~
B'" M +8
la
31
1
"
•
5 5
2 la
(1'_ ..................
4
2 1I 2 fl
1
J 3
2 Al 2 El
2 M 2 f4
.. ....
lII'IJCI!l)
= O,
••
2 lI'i 2 f5 2 /F
1
2 Da 1 2 9A J 2 OA 1
-
S S I I S 1
lA
EDRA EORa 'NC INCA INca LDAA LOA'
ORAA ORAa !'$HA !'$HI PULA 'UL8 ROL ROLA ROU ROA RORA RORe ASL ASLA ASLI
;
2 99 1 O, 2 94 2 O.
lO
OEta
I~
T..
IS cs
DEC DeCA
00_
I
O,
Suma
DtspJaI~O
_
1EGlS11IO DI CODIOOS
OI'I!AACIOIIIIQOI.!ANAIAAIl'1IETlCA
lit
•
http://librosysolucionarios.net
.....
opliDi mmed
operac
.. bajo
La
••
ra 10.3 memO! comoi
·.
l..~
• •• • • • 1 • •• • •• • •• • •• • •• • •• • ••11• ••1 •• 1 I I • • II II II ••I I I •• • • II II II •• I 1 I •• I 1 I
·. ··• ..• ·•• .•• ·.• ···...
•• •o II •• I
I I
I
I
• • R • • R I
I I
:
I • • R I ! ! R •
•
I 1 II I I I I I I I I
Las
I 1
•I •I
.......
I I I 1
1 I I
I
I I R • I 1 R • I I R R I I R R
• o I I R R
Mil l
fII
~delt.
O 00
8yIo •
V C
BíI._
Trantllrir a; CIfO:
Figura 10.30. Instrucciones del acumulador V memoria. (Cortesfa de Motoro/a, /nc.)
I
la.
rcdizI
.....
1
un
-
1I
t11111 '11i
EL MICROPROCESAOOR MOTOROLA 6800 ......... c6dIgot ... -
H I
H
Z V
M._....
_
"" ........... c6dIgot ... (SeCOlOc:aoibilt
..
!.AI ~
10.8. INSTRUCCIONES DE BIFURCACION y SALTO DEL 6800
,
1
'
WAI
Las instrucciones de bifurcación y salto para el microprocesador 6800 están detalladas en la Figura 10.37. Estas instrucciones se utilizan para controlar la transfere!lcia de operaciones de un punto a otro del programa. Observar que todas las operaciones de bifurcación utilizan el modo de direccionamiento relativo. La instrucción de «no operación» (NOP) solamente hace avanzar una unidad el contador de programa y no tiene ningún efecto sobre sefializadores, registros o posicio nes de memoria. Considerar la instrucción «saltar a subrutina» (JSR) de la Figura 10.37. La instrucción JSR utiliza direccionamiento indexado o extendido. Detalles de la operación JSR se dan en la Figu ra 10.38. Las instrucciones «bifurcar a subrutina» (BSR) tienen la misma función que la opera ción JSR. Sin embargo, utiliza direccionamiento relativo. La instrucción «bifurcar a subrutina» también se explica con mayor detalle en la Figura 10.38. Las instrucciones de saltar (JMP) y «volver de subrutina» (RTS) se listan en la tabla de la Figura 10.37. Mayor detalle sobre su funcionamiento se da en la Figura 10.38. La «interrupción software» (SWI) y «espera interrupción» (WAl) están también listadas en la tabla de la Figu ra 10.37. De nuevo, se da mayor detalle sobre estas dos instrucciones en el apartado de interrup ciones de la Figura 10.38. Finalmente, la instrucción «vuelta de interrupciÓn>) (RTI) se lista y detalla en las Figuras 10.37 y 10.38. La instrucción RTS se utiliza como la última instrucción de una subrutina, mientras que la instrucción RTI realiza el mismo propósito en una rutina de servicio de interrupción.
http://librosysolucionarios.net
es
-:-..:uencia I :0.38. la .l.. Despw
_.) hasta , ~).
1;2.
Te
mi
..
So
1Ul.
t
-
TCl cM:
.
:~. ~
. - "1 4
k!
J4$P1ii
t
391
EL MICROPROCESADOR MOTOROLA 6800
lIEGISTlIO DE COOIGOll DE CONOICION
RELAnYO III!IIO'IEQICO
01'
Bifurca $' arrastre a 1 Bifurca si ;# O Bifurca sí ;. O BíflJrC3 sí > O Bllurea " es mayor Brturca SI ~ O Bifurca $l es menor O.: BifurCA sí < O eifurca Si es menos Bifurca si no es • 8 cero Bíl SI overflow a O Brt. SI overflow a 1 Bifurca Si es más Brturea a su~rutina
BRA Bee BCS BEQ BGE BGT BHf BlE BlS BU BMI BNE BVe BVS BPl BSR
20 24 25 2i 2C 2E 22 2F 23 20 2B 26 28 29 lA 80
Sal1a
JMP
Salta • subrutina
JSR NOI' RTI RTS
OPERACIONeS 8!furcaclOo Bifurca SI arrastre a O
,pila
I
de
la
No oporacIOn Vuelta 00 lf1!8!TUpciÓn Vuelta 00 subrutina Inteffupcron solIViare
Espora la ,nterrupOOn
SWI WAI
lOa
4
4 4 4 4
4
4 4
4 4
4 4 4 4
8
O,
-
ti
OP
-
ti
IMPUCITO
01'
-
1'RT DE IIIFIIRCACIOII
#
Ninguno e-o C=l
2 2
2 2
Z-1
2
N@V-O 1 + IN (j V), O C+Z=O Z. (N@VI-' C+Z-l N@V-' N' 1
2 2 2 2 2 2 2 2 2 2 2
l=O V-O V· 1 N-O
6E AO
4
8
2 7E 2 BO
3 9
}
Ver ope.-- aspeciale$
3 3 01 3B 3lI
3F lE
2 lO 5 12 9
1 1 1
I
1
Sólo avanza eI_oI di! programa
}
Vor ~ especialeS
carga el registro 00 códigos 00 condICión de la pila. ¡Yor operaciones especiales).
S
4
3
2
1
H
I
11
Z
V
•
e
• • • • • • • • • • • • • • •
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
• • • • • • • • • • • • • •
• • • • • • •
• •
• • • • •
• • • • • • • • • • • • • • --- 0 - • • • • • ~•
· . . .l· · ··I®·)1·1·1· • · · ••
•
Se pone a 1 cuando la ,nterrupción ocurre. Si a.tá Pfeviamenle a 1. se reqUl8,., una interrupcIÓn no enmucIIIIbIII perI-'D di! esIII
38_=_RT_I_.....¡
r - 1_ _
PC
I
SP
n
Programa principal
Sig, ¡nstme. principal
SPt I Código de condición SP+2 Acumulador B SP+ 3 Acumulador A SPt4 Registro índice X( H) SPt l Registro índlce (Xd SPt6
NH
SPt 7
NL
Figura 10.38.
10.64.
Pila
SP
Programa de interrupciÓll
i
I
j
I
te.6'7.
¡
(continuaci6n),'
Acudir a la Figura 10.39. El código de op para la operaClon «bifurca si cero» es _ _ (hex). El contenido de la posición de memoria del programa 0028H es igual _ _ (a la dirección, al desplazamiento), que es _ _ (-, +) 7H. Solución: Ver la instrucción SEQ de la tabla de la Figura 10.37. El código de'op para la operación «bifurca si cero» de la Figura 10.39 es 27H, El contenido de la posición 0028H de la memoria de programa es igual al desplazamiento, que es - 7H, El desplazamiento de - 7H sugiere una bifurca ción hacia atrás,
10.65.
Acudir a la Figura 10.39. La condición de bifurcación es _ _ (falsa, cierta) en este problema. Solución: La condición de bifurcación para la instrucción SEQ es bifurcar si Z = 1 de acuerdo con la tabla de la Figura 10.37, Por tanto, la condición de bifurcación es cierta en el problema de la Fi gura 10.39.
Código de
Memoria de programa
Antes de la operación
Después de la operación
Contador de , - - - - - - - . . . L . , programa 0000 0000 0010 01 11 Registro de Códigos. ~e condlclon
I 1100 0100
L--_ _ _?_,_ _ _.....11
1'.68.
Contador de programa
I
Figura 10.39.
t ,
http://librosysolucionarios.net
,
"'·!
-
s
('d!!k! i!. ,ÜIJ.ÚLh ¡a~jAJ411
...
7
395
EL MICROPROCESAOOR MOTOROLA 6800
g
~
10.66. Acudir a la Figura 10.39. El contenido del contador de programa después de la opera ción «bifurca si cero» será ___ (hex).
Solución: La condición de bifurcación es verdadera en la Figura 10.39. El desplazamiento -7H dicta una bifurcación hacia atrás. Por tanto, el. contenido del contador de programa después de la operación «bifurca si cero» de la Figura 10.39 será 0022H [(0027 + 2) -7 0022H].
10.67. Acudir a la Figura 10.40. La operación de «saltar a subrutina» en este problema está
especificada por el código de op _ _ (hex). Esta operación utiliza direccionamien
to _ _ .
I
Solución: Ver la instrucción JSR de la Figura 10.37. La operación de «saltar a subrutina» de la Figu ra 10.40 está especificada por el código de op BDH. Esta operación utiliza direccionamiento ex tendido. Código de
operación
si cero» ( es igual
0006
t
0007 \1emoria de programa
operación emona de la bifurca
1) en este
BDH 00000000 01000000
0009
Memoria de datos
0040
1111 1000
0041
00000000 Pila
!
Pila
03FD
rdo con la la de la Fí
Puntero de pila
03FFH
Puntero de pila
t -_ _t -03FD _ _-l ? 03FE
03FE
?
1-+ '------'------
+-
I
?
03FF
03FF
Antes de la operaciÓD
Después de la operación JSR
Contador de programa [ 0000 0000 0000 01 10
I
""'-_ _ _?_ _ _.... Contador de programa
Figura 10.40.
10.68. Acudir a la Figura 10.40. Listar los contenidos del puntero de pila y las posiciones de la
pila 03FEH y 03FFH después de la operación JSR.
programa
Solución: Ver los detalles de «JSR extendido» en la Figura 10.38. Después de la operación
View more...
Comments