-
Captulo 6
PROGRAMACION
DEL MICROPROCESADOR
6.1. LENGUAJES MAQUINA Y ENSAMBLADOR
En el nivel ms bsico, el microprocesador responde a un listado de operaciones que se denomina programa mquina. El contenido de la memoria de programa de la Figura 6.1 a representa un programa en cdigo mquina, que comienza en la direccin 2000H con el cdigo de operacin 00 1111102 Y finaliza en la direccin 2006H con 01110 1102, Los programas en esta forma son casi imposibles de comprender para los seres humanos.
El programa mquina de la Figura 6.1 a puede hacerse algo ms fcil de manejar si los nmeros binarios se representan en notacin hexadecimal. En la Figura 6.1 b se repite el mismo programa en hexadecimal. El segmento del programa de la Figura 6.lb se considera todava en cdigo mquina, an cuando el binario est representado en notacin hexadecimal. Los programas de esta forma tambin son muy dificiles de comprender.
En un nivel ms humano, el programa anteriormente descrito en cdigo mquina puede describirse como sigue:
l. Cargar el nmero binario (lOt 10100) en el acumulador del microprocesador. 2. Complementar cada bit del nmero binario del acumulador para formar el complemento
a l. 3. Almacenar el resultado, del complemento a 1, en la posicin 2100 16 de la memoria de
datos.
El segmento de programa descrito cambia un nmero binario de 8 bits a su forma equivalente de complemento a l.
Surge la siguiente pregunta: Cmo transformar la descripcin del lenguaje humano del programa al cdigo mquina? La respuesta se encuentra en un sencillo lenguaje de programacin prximo al programa mquina observado en la Figura 6.1. Un lenguaje ensamblador utiliza palabras y frases para representar los cdigos mquina del microprocesador. Generalmente, una frase o sentencia en lenguaje ensamblador constar de la 3 bytes de cdigo mquina. La idea fundamental de este proceso de ensamblamiento se muestra en la Figura 6.2a. Aqu, a ttulo de ejemplo, la segunda instruccin del programa es representada por un nico nemotcnico de tres letras CMA (complementar el acumulador). Las letras del nemotcnico son traducidas primero a su representacin ASCII equivalente (American Standard Code for Information Interchange). Los tres cdigos ASCII son evaluados entonces, en orden, por un programa ensamblador especial, y el cdigo mquina para complementar al acumulador resulta ser 00101111 2, 2FH. El nemotcnico ha generado un simple byte de cdigo de lenguaje mquina.
136
Memoria de pro
Direccin Co (hex) (b
2000 00
2001 10
2002 00
2003 00
2004 OCI
2005 OCI
2006 01
2007
la) Programa e
'~
unsegmj
Figura 6.2a. Se (l) etiqueta, (2) : siempre y apam ne el nemotcni blador esencialr cin sobre regs. los campos de : rrecto en lengu. memoria de pn programa enSll para comprend
http://librosysolucionarios.net
www.elsolucionario.net
t turo 6
:omplemento
l...emoria de
~ luivalente de
WlO del prorogramacin lador utiliza Ilmente, una ina. La idea L a ttulo de mIco de tres as primero a nterchange). rior especial, . 2FH. El
-',
Direccin Contenido (hex) (hex)
_Comienzo del 2000 3E programa
2001 84
2002 2F
t se denomina 2003 I 32 representa un de operacin
2004 00orma son casi
r si los nme 2005 21 !1ismo progra~ia en cdigo 2006 76 programas de ~
Fin del programa 2007quna puede
PROGRAMACION DEL MICROPROCESADOR 137
Memoria de programa Memoria de programa
Direccin Contenido (hex) (binario)
2000 00111110
2001 10110100
2002 OOlOllll
2003 00110010
2004 00000000
2005 00100001
2006 O
2007
,
- Comienzo del programa
~ Fin del programa
la) Programa en cdigo mquina binario (b) Programa en cdigo mquina hexadecimal
Figura 6.1.
Un segmento de programa en lenguaje ensamblador escrito a mano, puede parecerse al de la Figura 6.2a. Se acostumt.ra a dividir las sentencias del lenguaje ensamblador en cuatro campos: (1) etiqueta, (2) nemotcnico, (3) operando y (4) comentarios. El campo de etiqueta no se utiliza siempre y aparece vaco en este sencillo segmento de programa. El campo de nemotcnico contiene el nemotcnico exacto que proporciona el fabricante. Este campo indica al programa ensamblador esencialmente la operacin que se va a realizar. El campo de operando contiene informacin sobre registros. datos o direcciones asociados con la operacin. Utilizando la informacin de los campos de nemotcnico y operando, el programa ensamblador puede generar el cdigo correcto en lenguaje mquina. El programa ensamblador puede tambin asignar posiciones de la memoria de programa a los listados en cdigo mquina. El campo de comentario no lo evala el programa ensamblador, solamente lo imprime. El campo de comentario es una ayuda valiosa para comprender qu ocurre en el programa. f*
I
http://librosysolucionarios.net
http:acostumt.rawww.elsolucionario.net
..
138 FUNDAMENTOS DE LOS MICROPROCESADORES
Cdigo nemotcnico de Representacin Traduccin del lenguaje Cdigo mquina de complementar el acumulador ASCII ensamblador al lenguaje de mquina complementar el acumulador
C 01000011 ---_ Programa - __...._ 001011110 2FH ensamblador
M 01001101---__ A 01000001 ---__
(a) Traduccin del nemotcnico del lenguaje ensamblador al cdigo mquina por un programa ensamblador
Etiqueta Nemotcnico Operando Comentarios
MVI A. B4H ; Carga el acumulador con el dato que sigue inmediatamente, que es B4H
CMA ; Complementa el contenido del acumulador
STA 2100H ; Almacena el contenido del acumulador en la posicin de memoria 21 OOH
HLT ; Se detiene la MPU
(b) Programa en lenguaje ensamblador
Direccin (hex)
Contenido (hex) Etiqueta Nemotcnico Operando Comentarios
2000
2001 2002
2003
2004 2005 2006
3E
B4
2F
32
00 21 76
MVI
CMA
STA
HLT
A.B4H
2100H
; Carga acumulador con el dato que sigue inmediatamente, que es B4H
; Complementa el contenido del acumulador
; Almacena el contenido del acumulador en la posicin de memoria 21 OOH
; Se detiene la MPU
Una vez qi listado anlog, mquina (lista ser la de (1 ) t~ posiciones con versin del len hacerse manw
Un progral lenguaje ensar programa fuel mquina, a s1 mtodo de h (BASIC, FOR una sentencia mquina. El t to a microcorr instrucciones ( ayuda a comp
6.1. Los 50
-Sohri
U. mqui
6.2. Un le instro
Solu
ces!! 6.3. Uu_
cir el
Soluci
\JI dor al
(e) Programa en lenguaje ensamblador y mquina combinados 6.4. ListaJ
Soluci
Figura 6.2. Ve lengw
http://librosysolucionarios.net
www.elsolucionario.net
f
@o mquina de enlar el acumulador
11 o 2FH
~
l ensamblador
nmediatamente,
1 posicin de
ios
el dato que ,que es B4H
:llIdo del
del oonde
PROGRAMACION DEL MICROPROCESADOR 139
Una vez que el programa ensamblador de la Figura 6.2 ha sido ensamblado, se obtiene un listado anlogo al programa de la Figura 6.2c. Aqu se han aadido las direcciones y cdigos mquina (listados bajo la columna contenido). En resumen, la tarea del ensamblador parece ser la de (1) traducir los nemotcnicos y operandos al cdigo mquina equivalente y (2) asignar posiciones consecutivas de memoria a cada cdigo de op y operando. La tarea de conseguir de la versin del lenguaje ensamblador de la Figura 6.2b la versin ensamblada de la Figura 6.2c puede hacerse manualmente o con un programa ensamblador especial.
Un programa compuesto por sentencias simblicas, tal como el segmento de programa en lenguaje ensamblador de la Figura 6.2b, a veces se denomina programa fuente. Una vez que el programa fuente ha sido traducido (por el ensamblador o compilador) a su forma en cdigo mquina, a sta se denomina programa objeto. La programacin en lenguaje ensamblador es un mtodo de hllmanizar las operaciones de un microprocesador. Los lenguajes de alto nivel (BASIC, FORTRAN, Pascal, etc.) hacen la tarea de programar an ms sencilla. Por ejemplo, una sentencia en BASIC, FORTRAN o Pascal puede ser equivalente a unos 20 a 30 cdigos mquina. El ttulo del captulo hace referencia a la programacin de un microprocesador (opuesto a microcomputadora) puesto que el captulo tratar de utilizar directamente el repertorio de instrucciones del microprocesador. Se utilizar la programacin en lenguaje ensamblador porque ayuda a comprender las operaciones y el repertorio de instrucciones del microprocesador.
lo 1/ OJO(J PROBLEMAS RESUELTOS O I O~ I OI :roo O I } () O
--------------~--~~~~~=======---q 6.1. Los segmentos de programacin mostrados en la Figura 6.1 se consideran programas C.
___ (ensambladores, mquina).
Solucin: Los segmentos de los programas mostrados en la Figura 6.1 se consideran programas
mquina.
6.2. Un lenguaje ___ (ensamblador, mquina) utiliza palabras y frases para representar instrucciones de microprocesador.
Solucin:
Un lenguaje ensamblador utiliza palabras y frases para representar instrucciones del microprocesador .
6.3. Un ___ (ensamblador, monitor) es un programa especial de computadora para traducir el lenguaje ensamblador al lenguaje mquina.
Solucin:
Un ensamblador es un programa especial de computadora para traducir el lenguaje ensamblador al lenguaje mquina.
6.4. Listar los cuatro campos tpicos de una sentencia de lenguaje ensamblador.
Solucin:
Ver las etiquetas en la parte superior de la Figura 6.2b. Los cuatro campos de una sentencia en lenguaje ensamblador son etiqueta, nemotcnico, operando y comentarios.
/
,~.' r "
http://librosysolucionarios.net
www.elsolucionario.net
1 , "
\ ~
" ,
140 FUNDAMENTOS DE LOS MICROPROCESADORES
6.5. Una vez que se ha ensamblado el programa ensamblador, ste contendr las direcciones de memoria y el cdigo __ (BASIC, mquina) de cada sentencia del lenguaje ensamblador.
Solucin: Observar un segmento de programa ensamblado en la Figura 6.2c. Una vez que el programa
ensamblador se ensambla, contendr las direcciones de memoria y el cdigo mquina de cada instruccin del lenguaje ensamblador.
En la segun datos/direccion propsito genel utilizados para
En la parte. de programa (} pila (SP) conti, RAM.
6.2. REPERTORIO SIMPLIFICADO DE INSTRUCaONES
Se presentar un repertorio de instrucciones para el microprocesador genrico ilustrado en la Figura 5.7. Los nemotcnicos y cdigos de operacin utilizados son un subconjunto del repertorio de instrucciones del microprocesador 8080/8085. Los derechos de copia de los nemotcnicos y de los cdigos de op se utilizan con el permiso de lntel Corporation. Se pens en utilizar nemotcnicos arbitrarios para el microprocesador genrico. Sin embargo~ se decidi que utilizar un subconjunto del repertorio de instrucciones del 8080/8085 dar al estudiante un punto de partida sobre la MPU cuando se estudien los Captulos 8 y 9. Debe mencionarse que los programas del 8080/8085 son compatibles con los sistemas 8086 y 8088.
Un resumen de los registros disponibles al programador, en el microprocesador genrico, se ilustra en la Figura 6.3. En la parte superior derecha est el acumulador (A) de propsito general de 8 bits. En la parte superior izquierda est el registro de status de 8 bits que contiene los sealizadores. En la visin expandida del registro de status, el sealizador de arrastre (eY) se muestra en la posicin B7 , mientras que el sealizador de cero (2) se localiza en la posicin Bo' Las posiciones 1 a 6 no se utilizan en el registro de status del microprocesador genrico simplificado. Es costumbre que los microprocesadores reales tengan algunos sealizadores ms.
, ,~
Figura 8.3. Modelo de programacin para el microprocesador genrico.
El repertori. categoras espe
1. Instrucc 2. lnstrucc 3. Instrucc 4. lnstrucc 5. Instrucc 6. lnstrucc 7. Instruc,
La MPU genr del repertorio e considerar ca'. 6.6. Las 6"
qu re So__
Las de inSU' bies COI
6.7. AcudiJ sador I
Solucici El ..
geDel1lll
6.8. Acudil proces
Soluc:WI De
sealiz:
.~
Sealizadores (8) A (8)
H (8) L (8)
pe (16)
SP (16)
http://librosysolucionarios.net
www.elsolucionario.net
..
lr las direcciones del lenguaje ensam-
I vez que el programa igo mquina de cada
rico ilustrado en la anjunto del repertole los nemotcnicos ~ pens en utilizar lecidi que utilizar liante un punto de lI'Se que los progra
esador genrico, se e propsito general s que contiene los le arrastre (eY) se , en la posicin Bo' DeDrico simplificares ms.
rico.
t
PROGRAMACION DEL MICROPROCESADOR 141
En la segunda lnea de la Figura 6.3 se encuentran los registros H y L. Estos son registros de datos/direcciones multipropsito. Pueden ser usados separadamente como registros de datos de propsito general o como un registro par (llamado el registro par HL). Como registro par son utilizados para apuntar o sealar direcciones.
En la parte inferior de la Figura 6.3 se localizan dos registros dedicados de 16 bits. El contador de programa (PC) seala la siguiente instruccin que se va a ejecutar en la CPU. El puntero de pila (SP) contiene la direccin del tope de la pila. En este sistema la pila est localizada en la RAM.
El repertorio de instrucciones del microprocesador genrico est dividido en las mismas siete categoras especificadas en el Captulo 4. Estas categoras son:
l. Instrucciones aritmticas. 2. Instrucciones lgicas. 3. Instrucciones de transferencia de datos. 4. Instrucciones de bifurcacin. 5. Instrucciones de llamada a subrutina. 6. Instrucciones de vuelta o de retorno. 7. Instrucciones miscelneas.
La MPU genrica puede ejecutar solamente 67 instrucciones diferentes comparadas con las 239 del repertorio completo de instrucciones del Intel 8085. Para ayudar a su estudio, solamente se considerar cada vez una categora de instrucciones.
PROBLEMAS RESUELTOS :.1 !,
6.6. Las 67 operaciones ejecutadas por el microprocesador genrico son un subconjunto de qu repertorio de instrucciones de una MPU real?
Solucin: Las operaciones ejecutadas por el microprocesador genrico son un subconjunto del repertorio
de instrucciones de la MPU del Intel 8080/8085. Adems, los programas 8080/8085 son compatibles con los sistemas de 16 bits 8086/8088.
6.7. Acudir a la Figura 6.3. Listar tres registros de 8 bits de propsito general del microprocesador genrico.
Solucin:
El acumulador (A) y los registros de direcciones y datos H y L de la Figura 6.3 son considerados generalmente dispositivos de almacenamiento en el microprocesador genrico.
6.8. Acudir a la Figura 6.3. Qu dos seftalizadores contiene el registro de status en el microprocesador genrico?
Solucin:
De acuerdo con la Figura 6.3, el registro de status del microprocesador genrico contiene los sealizadores de arrastre y cero.
http://librosysolucionarios.net
www.elsolucionario.net
142 FUNDAMENTOS DE LOS MICROPROCESADORES
1I 6.9. Acudir a la Figura 6.3. Citar dos registros de 16 bits dedicados utilizados indirectamente por el programador en el microprocesador genrico. Solucin:
De acuerdo con la Figura 6.3, el microprocesador genrico contiene un contador de programa de 16 bits (PC) y un puntero de pila de 16 bits (SP).
6.3. REPERTORIO DE INSTRUCCIONES: OPERACIONES ARITMETICAS
Las instrucciones aritmticas son las primeras operaciones del microprocesador genrico que se van a considerar. Estas se resumen en la Figura 6.4. Incluyen las operaciones de sumar, restar, incrementar, decrementar y comparar. Observar en la Figura 6.4 que hay cuatro instrucciones de sumar. El acumulador, identificado como el registro A en la Figura 6.4, contiene uno de los nmeros que se va a sumar. Cada instruccin de suma especifica una fuente diferente para el otro nmero que va a ser sumado.
Considerar la primera instruccin listada en la tabla de la Figura 6.4. La instruccin sumar A inmediato es una instruccin de 2 bytes cuyo formato se muestra cerca de la parte derecha de la tabla. Como siempre, el cdigo de op (C6H en este caso) aparece en el primer byte de la memoria de programa, y el dato a ser sumado al acumulador en el segundo byte. La instruccin ADI se muestra en forma de diagrama en la Figura 6.5a. El dato inmediato de la memoria de programa toQOlOoo02) se suma al contenido del acumulador (00001111 2), La suma (00011111 2) es devuelta al acumulador despus de la operacin.
La segunda instruccin de la Figura 6.4 es sumar el registro L a An (nemotcnico ADD L). En la Figura 6.5b se muestra un problema ejemplo utilizando esta instruccin registro a registro. El contenido del acumulador (0000 10002) se suma al contenido del registro L (00000001 2), La suma (00001001 2) de la instruccin ADD L es devuelta al acumulador despus de la operacin.
La tercera lnea de la Figura 6.4 muestra la instruccin de un solo byte sumar H a A (nemotcnico ADD H). Esta es otra instruccin de suma registro a registro. Un problema ejemplo que utiliza la instruccin ADD H se detalla en la Figura 6.5c. El contenido del registro A (00 1011 002) se suma al contenido del registro H (00010011 2), dando una suma de 00111111 2, La suma se deposita en el acumulador una vez que se completa la operacin.
La cuarta lnea de la Figura 6.4 muestra la instruccin de un solo byte sumar registro indirecto (nemotcnico ADD M). La posicin del dato que se va a sumar es algo ms complicada utilizando este modo de direccionamiento indirecto de registro. Un problema ejemplo que utiliza la instruccin ADD M se muestra en la Figura 6.5d. El registro par HL contiene una direccin de 16 bits, que seala a la posicin adecuada de la memoria de datos (LOC). El contenido de esta posicin (000000 11) se suma al contenido del acumulador (O 11000001), La suma (O 11000 11 2) es devuelta al acumulador despus de la operacin de suma. Las instrucciones de registro indirecto utilizan un registro de 16 bits (habitualmente el registro par HL) como puntero de direccin.
Observar de nuevo la instruccin sumar registro indirecto (ADD M) de la Figura 6.4. La descripcin dice Sumar LOC (H&L) a A que se leer como sumar el contenido de la posicin de memoria apuntada por el registro par HL al contenido del registro A. Al leer esta instruccin a travs de la Figura 6.4, se ve que el modo de direccionamiento es indirecto de registro. El nico
Instrucciones arfI
Descripcin d la operacin
Suma A al dato
Suma L aA
Suma HaA
Suma LOC(H aA
Resta el dato di
Resta L de A
Resta H de A
Resta LOC (H de A
Incrementa A
Incrementa H L
Decrementa A
Decrementa H,
Compara A 001
el dato
Compara A COI
A Compara .4 ro
t Compara :4 C'O
LOC(H ~ l
( ) contenido ~ (( = direcCIonan
~ . 11.1,:... ..'
http://librosysolucionarios.net
www.elsolucionario.net
r
l indirectamente
~ ador de programa
t
I .
genenco que se e sumar, restar, instrucciones de ene uno de los mte para el otro
trin sumar A te derecha de la ~ de la memoria ruccin ADI se 'a de programa 11:) es devuelta
!coico ADD L). pstro a registro. L (00000001
2),
despus de la
Lmar H a A ''lema ejemplo , del registro A 0011 I1ll r La
"e'gistro indirec.. ' complicada lplo que utiliza la direccin de ":,nido de esta
: 1000110) es ~stro indirecto le direccin. Figura 6.4. La , de la posicin :sta instruccin Psiro. El nico
PROGRAMACION DEL MICROPROCESADOR 143
Instrucciones aritmticas
Descripcin de Modo de
la operacin direcciona- Nemotcnico miento
Suma A al dato Inmediato ADI
Suma L aA Registro AOOL
Suma HaA Registro AODH
Suma LOC (H y L) Indirecto ADDMaA de registro
Resta el dato de A Inmediato SUI
Resta L de A Registro SUBL
Resta H deA Registro SUBH
Resta LOC (H y L) Indirecto SUB MdeA de registro
Incrementa A Re INCA
Incrementa HL Registro INXH
Decrementa A Registro OCRA
Decrementa HL Registro OCXH
Compara A con
el dato Inmediato CPI
Compara A con L Registro CMPL
Compara A con H Registro CMPH
Compara A con Indirecto
LOC (Hy L) de registro CMPM
( ) contenido de )) = direccionamiento indirecto de registro
Cd. de
opero
C6
85
84
86
D6
95
94
96
3C
23
3D
2B
FE
BO
BC
BE
Formato de laBytes instruccin
2 11 Cdigo de op. 1
11 datos I I ICdigo de op. I I ICdigo de op. I 1 ICdigo de op. I
2 11 Cdigo de op. 1
11 datos 1
I ICdigo de op. I ICdigo de op. 1 ICdigo de op. I ICdigo de op. I I ICdigo de op. I I ICdigo de op. I ICdigo de op.
.1 Cdigo de op. 2
1 datos 1
1 ICdigo de op.
1 ICdigo de op. I
1 ICdigo de op.
Simblico
(A) +- (A) + (byte 2)
(A) +- (A) + (L)
(A) +- (A) + (H)
(A) +- (A) + H)(L
(A) +- (A) (byte 2)
(A) +- (A) (L)
(A) +-(A) (H)
(A) +- (A) H)(L
(A)+-(A) + 1
(HL) +- (HL) + I
(A)+-(A)-I
(HL)+-(HL)- I
(A) (byte 2)
(A) (L)
(A) -(H)
(A) H)(L
Sealizadores afectados
Z. cy
Z.CY
Z. Cy
Z. CY
Z. Cy
Z. CY
Z.CY
Z. CY
Z
Z
Z-I s (A) = (byte 2)
Cy= I s (A) < (byte 2)
Z= I s (A) = (L) CY= I s (A) < (L)
Z- I si (A) = (H) CY= I si (A) < (H)
Z= I s (A) = H)(L
CY= I s (A) < H)(L
+ - suma - - resta
Figura 6.4. Instrucciones aritmticas para el microprocesador genrico (subconjunto de instruccones Intel 8080;8085).
http://librosysolucionarios.net
www.elsolucionario.net
\
144 RJNDAMENTOS DE LOS MICROPROCESADORES
Acumulador Acumulador
Despus de la operaciD
Memoria de programa
Dato
(a) La instruccin de suma A inmediata
Acumulador
Antes de la operaciD Despus de la operacin
Acumulador
ADDL
Registro L 10000 0001 I (b) La instruccin de suma L y A
Acumulador Acumulador
Antes de la operacin Despus de la operacin
Registro H I000 1 00 11 I (e) La instruccin de suma H y A
Acumulador Acumulador
Antes de la operacill Despus de la operacin
ADDM
Memoria de datos 100000011 I (LOC)
Puntero de direccin L
Registro par HL
(d) La instruccin de suma registro indirecto
Figura 6.5.
Resultad
(A)
Contenido registro
Figura 6
nemotcnicc 86 16, De acu to es una ir cdigo de 01 forma simb cin ADD.\ cambiando parte derech Los parntes se va a reafu de registro i memoria de de memoria resultado es
La colur durante la e afectados pi muestra la 1
I '-t--' Arrastre
(a) Suma. con
http://librosysolucionarios.net
www.elsolucionario.net
PROORAMACION DEL MICROPROCESADOR 145
Primer Segundo Resultado operando Operacin operando
(A) If (A) + H)(L) Transferido a Contenido del Contenido del Suma Contenido del registro HL
registro A registro A que apunta a la posicin del operando de memoria
Figura 6.6. Interpretaciones de ADD; las operaciones utilizan el cdigo simblico de la tabla del repertorio de instrucciones.
nemotcnico del lenguaje ensamblador para esta instruccin es ADD M, cuyo cdigo de op es 86 16, De acuerdo con la columna Bytes de la Figura 6.4, la instruccin sumar registro indirecto es una instruccin de 1 byte. El formato de instruccin muestra un solo byte que contiene el cdigo de op de la instruccin. La segunda columna de la derecha en la Figura 6.4, detalla, en forma simblica, la operacin que est realizando la CPU. La sentencia simblica para la instruccin ADD M se reescribe en la Figura 6.6. Siguiendo el patrn utilizado por lntel Corporation y cambiando algo la notacin habitual, la sentencia simblica se lee de derecha a izquierda. En la parte derecha de la flecha, el primer operando se identifica como el contenido de A (acumulador). Los parntesis Osignifican contenidos de en esta notacin. El signo + significa la operacin que se va a realizar, que es una suma en este caso. Los dobles parntesis ()) denotan una instruccin de registro indirecto. H)(L significa el contenido del registro HL seala a la posicin de memoria del segundo operando. En otras palabras, el segundo operando reside en una posicin de ,memoria a la que apunta el contenido del registro par HL. Despus de la operacin, el resultado es transferido al registro A, o acumulador.
La columna de ms a la derecha de la Figura 6.4 lista los sealizadores que son afectados durante la ejecucin de una instruccin. Para dar un ejemplo de cmo los sealizadores son afectados por una operacin, considerar la suma binaria de 11111111 con 0000000 1, como muestra la Figura 6.7. El mtodo de lpiz y papel para sumar estos dos nmeros de 8 bits se
Acumulador '1111 l 111 I I0000 0000 I Acumulador 1111111
11111111 Antes de la operacin ~ Despus de la operacin + 0000000 I ~~ 1 00000000
"--y--J '---v-"
L
, 0000 000 1 I '1 t ---11 I Registro de status Arrastre Contenido Cy Z
del acumulador
de 8 bits
fa) Suma de nmeros binarios con arrastre (bJ El efecto de la instruccin ADD M sobre los sealizadores yel acumulador
Figura 6.7.
http://librosysolucionarios.net
www.elsolucionario.net
I
4!W
146 FUNDAMENTOS DE LOS MICROPROCESADORES
muestra en la Figura 6.7a. El mismo problema se muestra como es resuelto por el microprocesador genrico utilizando la instruccin ADD M en la Figura 6.7b. El acumulador contiene 11111111 2, mientras que la posicin en la memoria de datos sealada por el registro par HL ~on\\~n~ ~\ OlIO n\\mtIO \.l\1t ~t 't.\. \ ~\1ma\ (QQQOOQ l}), Despus de que se completa la suma, el acumulador contiene los 8 bits menos significativos de la suma, que son 000000001' El sealizador de arrastre del registro de status se pone a 1, indicando que hubo un arrastre del bit ms significativo del acumulador. El sealizador de cero examina el contenido del acumulador despuS de la operacin y encuentra 000000002, Al encontrar cero, el sealizador cero se pone a 1, indicando que el acumulador es 00000000 despus de la operacin de suma.
1A continuacin, considerar las cuatro operaciones de resta del repertorio de instrucciones del
microprocesador genrico de la Figura 6.4. Cada instruccin resta el contenido de algunos registros o posiciones de memoria del contenido del acumulador. Internamente la ALU del microprocesador no tiene hardware para restar, por tanto realiza la sustraccin convirtiendo el sustraendo a su forma de complemento a 2 y sumando.
1.: Como ejemplo, considerar el problema de resta detallado en la Figura 6.8. El binario !, 0000000 l se resta de 0000100 l (09H - 01 H = 08H). El procedimiento de papel y lpiz se mues
tra en la Figura 6.8a. Para revisar, la resta binaria puede realizarse sumando el minuendo binario a la forma en complemento a 2 del sustraendo despreciando el overflow. El sustraendo en este problema es 0000000 12, que se convierte a su forma en complemento a 2:
complementa00000001 11111110 complemento a I 11111110 +1 11111111 complemento a 2
JI I J 1 I ! 00001001
+ 1 I I 1 1 1 I 1 Forma de complemento a 2 00000oo I IIIYetIe ,,_.
.. , 1 ~ 00001000'_J CY ContenidoOverNo prstamo delIlow
acumulador de 8 bits
(a) Resta binaria convirtiendo el sustraendo a su forma de complemento a 2 y sumando
Acumulador
Memoria de programa
(b) Instruccin de resta inmediata
Figura 6.8.
,...
10000 1001 I Acumulador
Antes de la operaclOO
Registro de status
1'0
, ,.,'
La forma en e una suma de suma es un ~ el overflow pe vierte el oven gura 6.8a, el ( no se ha pfeSl
La instruc Figura 6.8b. I restado del c( acumulador ( que no ha oc mayor que el despuS de la tanto el seal
Considm ma es restar El mtodo df se convierte ~
http://librosysolucionarios.net
www.elsolucionario.net
~I microprocesa,Jor contiene
registro par HL pleta la suma, el 00,. El sealiza~ del bit ms !Cumulador desero se pone a 1,
DStrucciones del le algunos regisU del microprodo el sustraendo
6.8. El binario )' lpiz se m uesouendo binario straendo en este
r
l Il001
L
PROGRAMACION DEL MICROPROCESADOR 147
00000101 + 11111010 Forma en complemento a 2 00000110
Invien. ". '.[D1 .....------t' o \ 11111111 \ .... ,.,,1
Cy Contenido OverflowNo prstamo del acumulador
de 8 bits
(a) Resta binaria mostrando el efecto del overflow sobre el sealizador de arrastre
Acumulador ~ Acumulador
Antes de la operacin ~
Registro L OOOO--OL.I 1-0""1'1 Registro de status
(b) La instruccin de restar L de A
Figura 6.9.
La forma en complemento a 2 (11111111) del sustraendo se suma entonces al minuendo, dando una suma de I 0000 1000, como se ve en la Figura 6.8a. El I de la posicin ms significativa de la suma es un overflow y no es parte de la diferencia ()()()() 1OOOr El microprocesador utiliza el overflow para afectar el sealizador de arrastre (o prstamo (borrow)). Al restar, la CPU invierte el overflow, y ste se convierte en el contenido del sealizador de arrastre (eY). En la Figura 6.8a, el overflow de I se invierte y pone a cero el sealizador de arrastre, lo cual significa que no se ha presentado ningn prstamo o que el minuendo es mayor que el sustraendo.
La instruccin de resta inmediata (nemotcnico SUI) se utiliza en el ejemplo de resta de la Figura 6.8b. El dato inmediato del segundo byte de la memoria del programa (00000001 2) es restado del contenido del acumulador (00001001 2), La diferencia de 000010002 es transferida al acum ulador despus de la resta. El sealizador de arrastre (
148 FUNDAMENTOS DE LOS MICROPROCESADORES
Acumulador 100010000 I 100010000 I Acumulador Antes de la opersci-;--....~y--......... Despus de la operacin
CMP L I O f.. -11 1 Registro de status Cy Z
Registro L 000 10000 I00010000 I Registro L ~ (a) La instruccin compara A con L
11' 00010000
+ 1 1110000 Forma en complemento a 2 de 00010000 (n viene ,-',
O .....----1 I 00000000IOCy , _ ... I Overflow Contenido
temporal
de un registro
de la CPU
(b) Efecto sobre el sealizador de arrastre cuando se realiza la resta binaria durante la operacin de comparacin
Figura 6.10.
El minuendo (00000101 2) se suma entonces a la forma en complemento a 2 del sustraendo (I 1111010), dando una diferencia de 111111 l I. La diferencia 11111111 es la representacin en complemento a 2 de -1 10 como muestra la Figura 2.12. La Figura 6.9a tambin muestra que la suma no provoca overflow, o un O en el registro de overflow. Este se invierte (debido a la operacin de resta), dando un 1 en la posicin de sefializador CYo arrastre. Cuando el sealizador CY se pone a 1 despus de una operacin de resta, significa que el nmero del acumulador es menor que el nmero del registro o posicin de memoria. El sefializador de arrastre a I implica que el nmero del acumulador despus de la sustraccin es una representacin en complemento a 2 de un nmero negativo. El III1IlI1 del acumulador de la Figura 6.9 representa -1'0'
El repertorio de instrucciones del microprocesador genrico tiene cuatro instrucciones de comparacin que se muestran en las cuatro ltimas lneas de la Figura 6.4. Las instrucciones de comparacin restan el contenido del registro o memoria del contenido del acumulador pero no cambian sus contenidos. Los sealizadores son afectados por las instrucciones de comparacin.
La instruccin comparar el registro > se utiliza como ejemplo en la Figura 6.10. Nmeros iguales (000100002) en el acumulador y registro L son comparados por el microprocesador. Observar en la Figura 6. lOa que ni el acumulador ni el registro L cambian los contenidos despus de la operacin de comparacin. Sin embargo, son afectados los sefializadores del registro de status.
De acuerdo con la informacin de la columna simblica 'de la Figura 6.4, el contenido del registro L es restado del contenido del registro A cuando se utiliza la instruccin CMP L. La Figura 6.lOb muestra este proceso utilizando el mtodo de lpiz y papel. El sustraendo (contenido del registro L) es cambiado a su forma de complemento a 2 por el procedimiento:
000 10000 complementa .. 1110 1 l 11 complemento a 1
1110111 l + 1 11110000 complemento a 2
El minuendo dando lOOOC Son igual a ~ ALU,yelse reinicializaci contenido de
En resum. tpicas de lo 4 procesadores sefializadores de salto inCOI
6.10. Acucl cdi
Sohx Se
SUIl
6.11. Acu
PROORAMACION DEL MICROPROCESADOR 149
El minuendo (000100002) y sustraendo en complemento a 2 (11110000) se suman entonces, dando l 0000 0000. Las ocho posiciones menos significativas son evaluadas para ver si son cero. Son igual a cero, por tanto el sefializador de cero se pone a l. El overflow de 1 es invertido por la ALU, y el sefializador de arrastre es igual a O en este ejemplo. Un sealizador de arrastre en reinicializacin (CY = O) significa que el contenido del acumulador es mayor o igual que el contenido del registro L.
En resumen, las operaciones aritmticas que pueden ser realizadas por la MPU genrica son tpicas de lo que la mayora de los repertorios de instrucciones pueden realizar. Muchos microprocesadores tienen ms instrucciones aritmticas y sefializadores en sus registros de status. Los sefializadores se utilizarn ms tarde para afectar el resultado de las instrucciones de bifurcacin o de salto incondicional.
PROBLEMAS RESUELTOS
u0000
6.10. Acudir a la Figura 6.4. La instruccin resta inmediata tiene el nemotcnico ___ y el cdigo de op D6H y es una instruccin de ___ bytes.
~ comparacin
l Solucin:
Segn la quinta lnea de la Figura 6.4, la instruccin de resta inmediata tiene el nemotcnico SUI y el cdigo de op de D6H y es una instruccin de 2 bytes.
lel sustraendo 6.11. Acudir a la Figura 6.4. Incrementar significa _ (sumar 1 al, restar 1 del) contenido esentacin en de un registro del microprocesador. iluestra que la
Solucin:(debido a la
Incrementar significa sumar l al contenido de un registro del microprocesador.mdo el sefiali~l acumulador tre a l implica 6.12. Acudir a la Figura 6.4. Qu instruccin de incrementar no afecta al sefializador cero? complemento Solucin: na -1 10 Segn la informacin de la Figura 6.4, la instruccin ~ H (incrementar registro par HL) nortrucciones de afecta al sei\alizador cero. . Rrucciones de tlador pero no
6.13. El contenido del acumulador de la Figura 6.11 despus de la operacin de decrementar :'C'mparacin. es __ (8 bits)." Nmeros
ocesador. Ob Solucin: los despus de La instruccin DCR A significa restar uno del valor del acum~lador, y por tanto el registro de ()()()()()()() l - 1 = ()()()()()()oo. El acumulador de la Figura 6.11 contendr 00000000 despus de la
operacin de decrementar.
contenido del IIC\1P L. La 6.14. Acudir a la Figura 6.4. El sefializador de cero de la Figura 6.11 est a __ (O, l) desdo (contenido pus de la operacin de decrementar.
Solucin: El contenido del acumulador eS comprobado despus de la operacin de decrementar y se
encuentra que vale cero; por tanto el sei\alizador de cero del registro de status de la Figura 6.11 se pone a 1.
I ~
:11&
http://librosysolucionarios.net
www.elsolucionario.net
,
150 FUNDAMENTOS DE LOS MICROPROCESADORES
Acumulador Acumulador
Registro de status
Cy z Figura 6.11.
?
Antes de la operacin Despus de la operacin
. 6.15. Acudir a la Figura 6.4. Cul es la condicin del sealizador de arrastre de la Figura 6.11 despus de la operacin de decrementar? '"" " Solucin: De acuerdo con la Figura 6.4, el sealizador de arrastre (en no es afectado por la operacin de
decrementar A, y por tanto la condicin del sealizador de arrastre del registro de status es impredecible.
6.16. Acudir a la Figura 6.4. Listar el contenido del acumulador y de dos posiciones de la memoria de programa despus de la operacin de comparar inmediato de la Figura 6.12.
Solucin: Las instrucciones de comparacin no cambian el contenido de los registros o posiciones de
memoria que se compara. Por tanto. el acumulador contendr todava 000011 II despus de la operacin de comparacin en la Figura 6.12. El cdigo de op para la instruccin ePI es FE 16 (ver la Figura 6.4), mientras que el dato inmediato de la memoria de programa es todava 00010000.
6.17. Acudir a la Figura 6.4. El sealizador de cero de la Figura 6.12 estar a __ (O, 1) despus de la operacin de comparacin inmediata.
Solucin: El sealizador cero de la Figura 6.12 estar en reinicializacin despus de la operacin de
comparacin inmediata. La columna simblica de"'la Figura 6.4 muestra que la instruccin de comparacin es bsicamente una operacin de resta donde se evala la diferencia. En este caso la diferencia no es cero, por tanto el sealizador de cero no alcanzar la reinicializacin.
Acumulador ? Acumulador
Despus de la operacin
Cdigo de Cdigo de operacin
Memoria de programa ' Memoria de programa .. d?Dato Dato
Figura 6.12.
6.18. Acud despw
SolacM Eh
inmedi dor es: sea/iz.
6.] 9. AcudiJ operne
Soloci loa
= 1000 registro 0000 OC
Registro par
,
6.20. A~ pus de
Solucil De.
cin de i cible. O sealiza
6.21. Los se utilizad cacin.
SoJuciI Los!
micropn
http://librosysolucionarios.net
www.elsolucionario.net
~ ~,
~ Figura 6.11
t I operacin de tatus es impre
bones de la de la Figu
posiciones de despus de la es FEI6 (ver la 00010000. t __ (0,1)
t \:,oeracin de
!
,1
152 FUNDAMENTOS DE LOS MICROPROCESADORES
v
6.4. REPERTORIO DE INSTRUCaONES:
OPERAaONES LOGICAS
Las instrucciones lgicas son las segundas operaciones del microprocesador genrico que se van a considerar. Estas estn resumidas en la Figura 6.14. Incluyen las instrucciones ANO, OR, OR exclusiva, complementacn (NOT) e instrucciones de desplazamiento circular. La organizacin de la tabla de la Figura 6.14 es la misma que la utilizada para las operaciones aritmticas anteriores. Oe nuevo, el foco de la mayor parte de las operaciones est en el contenido del acumulador. Como con las instrucciones aritmticas, el modo de direccionamiento indica cmo y dnde se encuentra el otro dato en el sistema basado en microprocesador.
Considerar.el uso de la instruccin ANO inmediato del microprocesador genrico, como muestra la Figura 6.15a. El contenido del acumulador (000 l 00 11) realiza la operacin ANO con el segundo byte de datos de la memoria del programa (0000000 1). La operacin ANO se realiza bit a bit. Segn la tabla de verdad de la Figura 3.1, slo el bit menos significativo de cada nmero es un 1; por tanto la salida ser 0000000 l. El resultado de la operacin ANO se coloca en el acumulador. Oe acuerdo con la ltima columna de la Figura 6.14, todas las operaciones ANO hacen que el sealizador de arrastre se ponga a cero, lo cual tambin se pone de manifiesto en la Figura 6.15a. Se comprueba si es cero el resultado de la operacin ANO y como no lo es, el sealizador de cero est a O. Observar que el punto ( . ) de la Figura 6.14 debajo de la columna Simblico denota la operacin ANO.
En la Figura 6.15b se ilustra un segundo ejemplo que utiliza una instruccin ANO. Aqu se usa la instruccin ANO registro indirecto (nemotcnico ANA M). El contenido del acumulador realiza la operacin ANO (bit a bit) con el contenido de la posicin de la memoria de datos sealada por el registro par HL. Al realizar la operacin ANO entre 00111100 y 00000001, se encuentra que el resultado de salida es 00000000, que se almacena en el acumulador. El sealizador de arrastre se pone a cero segn la informacin de la Figura 6.14. Se comprueba el contenido del acumulador (00000000) y al ser cero se pone a l el sealizador de cero.
Observar cuidadosamente las Figuras 6.15a y b. En ambos ejemplos el segundo operando es 0000000 l. Este operando se utiliza como una mscara. En las Figuras 6.15a y b la mscara 00000001 puede utilizarse para poner a cero los siete bits ms significativos. O posiblemente, se utilice el nico l de la mscara 00000oo 1 junto con el sealizador de cero, para comprobar la presencia de un O un l en la posicin LSB del contenido del acumulador. Cuidado: Observar que el contenido del acumulador cambia cuando se utilizan instrucciones ANO. Algunos microprocesadores tienen instrucciones especiales de 'test' de bits, que realizan la operacin ANO del acumulador con un byte de mscara sin cambiar el contenido del acumulador mientras cambian los sealizado res.
Las cuatro instrucciones OR listadas en la Figura 6.14 realizan la operacin OR del contenido del acumulador con el de otros registros o posiciones de memoria. Un ejemplo de una operacin OR se muestra en la Figura 6.16. Aqu el contenido del acumulador es 1100 1100, mientras que el registro L contiene 0000 1111; el resultado de la operacin OR es I 1001111. La operacin OR se realiza bit a bit segn la tabla de verdad de la Figura 3.1. El 00001111 del registro L puede considerarse una mscara que siempre pone a 1 los 4 bits menos significativos. Observar el uso del smbolo lgico OR (+) en la columna simblica de la Figura 6.14.
Las dos ltimas operaciones lgicas listadas en la tabla de la Figura 6.14 son las de desplazamiento circular a travs del arrastre. Los diagramas de la columna simblica de la tabla muestran la accin de desplazamiento provocada por estas instrucciones.
Considerar el ejemplo de la Figura 6.17 donde se utiliza la instruccin de desplazamiento
Instrucciones ~
Descripcin la operacK
ANO de A ro
ANO de A al
ANO deA al
ANO de A co LQC(H el
OR deA con
OR de A con
OR de A con
OR de A con. (H & L)
OR exclusivo, con dato
OR exclusivo 4 conA
OR exclusi\o con L
OR e1!c1usi\o 4 con H
OR exclusvo 4 con LOC(H
Complemen'(complemem
Desplazamienl circular a La derecha a U"l delarrastn:
Desplazamimll circular a La izquierda a 1 del arrastre
( ) contenido }) - direccionam
FigUl
http://librosysolucionarios.net
www.elsolucionario.net
ico que se van a ANO,OR,OR La organizacin mticas anteriotlel acumulador. ~mo y dnde se
genrico, como acin ANO con ANO se realiza :le cada nmero se coloca en el etaciones ANO nanifiesto en la !IlO no lo es, el ,de la columna
ANO. Aqu se o del acumulamaria de datos y 00000001, se Ior. El sealizaba el contenido
lo operando es , b la mscara )Siblemente, se l comprobar la lado: Observar Ugunos microlC'in ANO del mtras cambian
l del contenido una operacin aientras que el ("--acin OR se , :ro L puede
:' rvar el uso
l de, desplazaabla muestran
:splazamiento
PROGRAMACION DEL MICROPROCESADOR 153
Instrucciones lgicas
Descripcin de Modo de la operacin direcciona- Nemotcnico
miento
ANO de A con dato Inmediato ANI
ANOdeA con L Registro ANAL
ANO deA con H Registro ANAH
ANO deA con Indirecto LOC (H&L) de registro ANAM
OR de A con dato Inmediato ORI
OR deA con L Registro ORAL
ORdeA con H Registro ORAH
OR de A con LOC Indirecto (H &L) de registro ORA M
OR exclusivo de A con dato
Inmediato XRI
OR exclusivo de A Registro XRAAconA
OR exclusivo de A con L Registro XRAL
OR exclusivo de A con H Registro XRAH
OR exclusivo de A Indirecto con LOC(H&L de registro XRAM
Complementar A Inherente CMA(complemento a I
Desplazamiento circular a la derecha a travs Inherente RAR del arrastre
Desplazamiento circular a la vs izquierda a trav Inherente RAL del arrastre
Cd. de
opero
E6
A5
A4
A6
F6
B5
B4
B6
EE
AF
AO
AC
AE
2F
IF
17
Bytes
2
l
I
1
2
1
I
1
2
l
l
l
I
l
I
1
Formato de la instruccin
IrCdigo de op, 1 1r dato 1
ICdigo de op. I (A)+-(A) (L)
ICdigo de op. I (A) ..... (A) . (H)
ICdigo de op. I (A) ..... (A) . H)(L
1rCdigo de op. 1 11 dato 1
ICdigo de op. I (A) ..... (A) + (L)
ICdigo de op. I (A) ..... (A) +(H)
ICdigo de op. I (A) ..... (A) +H)(L
ICdig~~ I1 dato
ICdigo de op, I (A) +- (A) (f) (A)
ICdigo de op. I (A) ..... (A) (f) (L)
ICdigo de op1
ICdigo de op. I (A) ..... (A) (f H)(L
11 Cdigo de op. 1
ICdigo de op, I
ICdigo de op, I
SealizadoresSimblico afectados
(A) +- (A) (byte 2) Z CYse borra
Z CYse borra
Z CYse borra
Z CY se borra
(A) ..... (A) + (byte 2) Z CYse borra
Z CY se borra
Z CYse borra
Z CYse borra
(A) ..... (A) (f) (byte 2) Z CYse borra
Bom! el acumulador Z-I CY se borra
Z CY se borra
(A) ..... (A) (f) (H) Z
CYse borra
Z CYse borra
(A) ..... (A)
~[i]J CY A
~a CY A
( ) contenido . -AND )) - direccionamiento indirecto de registro +-OR $-XOR
Figura 6.14. Instrucciones lgicas para el microprocesador genrico (Stlbconjunto de las instrucciones del Intel 8080/8085) . .. I http://librosysolucionarios.net
www.elsolucionario.net
154 FUNDAMENTOS DE LOS MICROPROCESADORES
Acumulador
Memoria de programa
Acumulador
Despus de la operacin
Registro de status .
Datos
(a) La instruccin AND inmediato
Acumulador
CY Z
Registro par H L
Acumulador
Despus de la operacin
Registro de status
(b) La instruccin ANA M
Figura 6.15.
Acumulador Acumulador
Despus de la operacin
Registro L
Figura 6.16. La instruccin DR de A con L.
circular a la derecha del acumulador a travs del arrastre. El contenido del acumulador (00 11000 1) se desplaza una posicin a la derecha transfirindose el bit menos significativo (un I en este ejemplo) a la posicin del bit del sealizador de arrastre. El arrastre actual entrar en la posicin del bit MSB del acumulador. El acumulador contiene 00011000 despus de la operacin, mientras que el sealizador de arrastre se pone a 1 como muestra la Figura 6.17. El sealizador de cero no es afectado.
Figura 8.1
6.22. Acud! operac
SoIUCKl La
acumu!
1 6.23. AcudI
de la e
Sol Sq
Despu cero S(
'1
.,1 , i I
. t.
J,
f ,
.;
Con una o cualquier bit y do por una in miento circula nmero par de
Observar q\ y no necesitan modo de direo namiento para instrucciones el genrica.
En resUJDel booleana en la:! para comprob< tan obvias COII
http://librosysolucionarios.net
www.elsolucionario.net
del acumulador
. ' lficativo (un l
tua. entrar en la
l)Us de la opera6.17. El sealiza-
PROGRAMACION DEL MICROPROCESADOR 155
Acumulador Acumulador
Registro de status Registro de status
Cy z z
Figura 6.17. La instruccin desplazamiento circular a la derecha de A a travs del arrastre.
Con una o ms instrucciones de desplazamiento circular, puede comprobarse la posicin de cualquier bit y el sealzador de arrastre puede ponerse a l a O, pudiendo entonces ser examinado por una instruccin de bifurcacin condicional. Otro uso de las instrucciones de desplazamiento circular es para comprobar la paridad. La paridad par seria un nmero binario con un nmero par de unos en la palabra.
Observar que las instrucciones de desplazamiento circular operan solamente en el acumulador y no necesitan ningn operando de ningn registro o posicin de memoria. Por esta razn, el modo de direccionamiento se denomina inherente, o a veces no se cita ningn modo de direccionamiento para estas instrucciones. La mayoria de los microprocesadores tienen varios tipos de instrucciones de desplazamiento y desplazamiento circular adems de las utilizadas por la MPU genrica.
En resumen, las instrucciones lgicas se utilizan para realizar manipulaciones del lgebra booleana en las variables. Tambin se utilizan para poner a l Obits especficos de una palabra y para comprobar y comparar bits. Las aplicaciones de estas instrucciones habitualmente no son tan obvias corno las aplicaciones de las instrucciones de suma y de resta.
PROBLEMAS RESUELTOS J .
6.22. Acudir a la Figura 6.14. El contenido del acumulador en la Figura 6.18 despus de la operacin ANO es __ (8 bits).
Solucin:
La operacin AND de 111 10011 con 10000000, bit a bit, da 10000000. El contenido del acumulador en la Figura 6.18 despus de la operacin AND es 10000000.
6.23. Acudir a la Figura 6.14. Listar la condicin de los sealizadores de la Figura 6.18 despus de la operacin ANO .
Solucin:
Segn la informacin de la lnea 3 de la Figura 6.14, el sealizador de arrastre se pondr a O. Despus de la operacin AND el contenido del acumulador no es cero; por tanto el sealizador de cero se pone en reinicializacin (a O).
-" IMIII!I"'I.;;iliIIlttJI,,,4IiMIUliJl:U;G;;;;II'U; ai i Ld 2! 12 las . ..~ .............. http://librosysolucionarios.net
www.elsolucionario.net
Cy
Figura 6.18.
156 FUNDAMENTOS DE LOS MICROPROCESADORES
6.24. Si el propsito del byte del registro H de la Figura 6.18 es comprobar si el MSB del acumulador es O 1, la palabra 10000000 en el registro H se denomina __ (mscara, palabra de test).
Solucin: La palabra 10000000 en el registro H de la Figura 6.18 se denomina mscara si su propsito es
comprobar el MSB del acumulador para determinar si es O l. Al utilizar esta mscara en la instruccin ANA H. si el sealizador de cero es 1, entonces el MSB del byte del acumulador es O; si el sealizador de cero es O, entonces el MSB es l.
Acumulador Acumulador
Registro H , ;Registro de status \ --j z SoI1
5eg1 conteru
6.2~. Acudir a la Figura 6.14. Cuando se utiliza la instruccin R A inmediato (nemotcni 6.30. AcudiJco de ORI), el operando que realizar la operacin OR con el contenido del acumulador operacproviene de la memoria de __ (datos, programa).
Solucin: La instruccin OR A inmediato busca su operando a partir del segundo byte de la memoria
del programa.
..~6.26. El smbolo + utilizado en la tabla de instrucciones lgicas de la Figura 6.14 denota la operacin __ (suma, OR). - ~
Solucin: ..tJ El smbolo + utilizado en la tabla de instrucciones lgicas de la Figura 6: 14 denota la operacin . ,I ORo "
-1 6.27. Acudir a la Figura 6.14. La fuente de la direccin (LOC) del operando en la memoria de
',. datos de la Figura 6.19 es el __ (registro par HL, puntero de pila). s....J J, Solucin: La ;
Segn la informacin sobre la instruccin ORA M de la Figura 6.14, la fuente de la direccin colUDlJ-1 operac (LOC) del operando en la memoria de datos de la Figura 6.19 es el registro par HL... ,.
6.31. Acudi Figura 6.19 es __ (8 bits).
6.28. Acudir a la Figura 6.14. El contenido del acumulador despus de la operacin OR en la la Fig j
J
SoW Ji, Solucin: De
; 11 10000111. f: :i El contenido del acumulador despus de la operacin OR, bit a bit, en la Figura 6.19 es
cin d I i seafu
6.29. Acudir a la Figura 6.14. Listar la condicin de los sealizadores del registro de status de :l()SCj
l . la Figura 6.19 despus de la operacin ORo
'fl! .
'
http://librosysolucionarios.net
www.elsolucionario.net
r PROGRAMACION DEL MICROPROCESADOR 157 Ir si el MSB del __ (mscara, ,
~ ~' I si su propsito es tsta mscara en la Memoria
Acumulador
Antes de la opel'Bcln
Acumulador
Registro de status
Cy z de datos
(LOC)ICUmulador es O; si
?
Figura 6.19.
t Solucin: Segn la informacin de la tabla de la Figura 6.14, el se\alizador de arrastre se pone a O. El contenido del acumulador no es cero; por tanto el se\alizador de cero est a O. ' Ito (nemotcni
6.30. Acudir a la Figura 6.14. El contenido del acumulador de la Figura 6.20 despus de la del acumulador operacin de desplazar circularmente a la izquierda es ___ (8 bits).
l .. Acumulador Acumuladoryte de la memoria t 16.14 denota la
Registro
Antesdela~
lit --j O I
Despus de la opemcl6n
de status Registro de statusL Cy z Cy Zla Ope!lICin Figura 6.20.tla mc~moria de
Solucin: La accin de la instruccin de desplazamiento circular a la izquierda est contemplada en la
~ de la direccin columna simblica de la Figura 6.14. El contenido del acumulador, en la Figura 6.20, despus de la operacin de desplazamiento circular a la izquierda es JIl 00 111.
6.31. Acudir a la Figura 6.14. Listar la condicin de los sealizadores del registro de status de la Figura 6.20 despus de la operacin de desplazamiento circular a la izquierda.
L.cin OR en la
Solucin: la Figura 6.19 es ~
De acuerdo con la Figura 6.14, solamente es afectado el seftalizador de arrastre por la instruccin de desplazamiento circular a la izquierda; por tanto, el sealizador de cero permanece a O. El seftalizador de arrastre se pone a O porque el MSB del acumulador es desplazado a la izquierda a la
IIO de status de posicin del arrastre.
http://librosysolucionarios.net
www.elsolucionario.net
-158 FUNDAMENTOS DE LOS MICROPROCESADORES
6.5. REPERTORIO DE INSTRUCCIONES: OPERACIONES DE TRANSFERENCIA DE DATOS
Las instrucciones de transferencia de datos son la tercera categora de operaciones, del micropro~ cesador genrico, que se van a considerar. Estas estn resumidas en la Figura 6.21. Entre ellas se incluyen las instrucciones de transferencia de registro a registro, de carga de memoria, de almacenamiento en memoria, de entrada y salida y de poner a 1 el sealizador de arrastre. La mayora de los programas contienen ms instrucciones de transferencia de datos que otros tipos de opera~ ciones. Casi ninguna instruccin de transferencia de datos afecta a los sealizadores de la MPU. En este grupo hay muchas instrucciones, ya que los datos pueden Ser transferidos de cualquier posicin de memoria a cualquier registro o desde cualquier registro a cualquier posicin de memoria u otro registro. Los microprocesadores con ms registros de CPU tienen ms instrucciones de transferencia de datos. Tener en cuenta que cada instruccin de transferencia tendr una fuente y un destino para el dato. El modo de direccionamiento determina cmo y dnde se encuentra el dato fuente.
Considerar la primera operacin de transferencia listada en la tabla de la Figura 6.21. El dato se va a transferir del registro L registro A, o acumulador. El nemotcnico del lenguaje ensambla-
Instrucciones de transferencia de datos
:, .I I~
Descripcin de Modo de Cd. Fonnato de la Sealzadores la operacin diretciona Nemotcnico de Bytes instruccin Simblico aFectadosmiento opero
Transfiere L a A Registro MOVA.L 7D 1 I Cdigo de op. I (A).-(L) Transfiere H aA Registro MOVA.H 1C I I Cdigo de op. (A).-(H) Transliere AaL Registro MOVLA 6F 1 I Cdigo de op. I (L).-(A) Transfiere Aa H Registro MOVHA 61 l ~ (H).-(A) Transfiere H L a Pe Registro PCHL E9 1 1 Cdigo de op. I [PC).-(HL) Transfiere HL aSP Registro SPHL F9 1 I Cdigo de op. I (SP).-(JlL) Carga Acon dato Inmediato MVIA 3E 2
Cdigo de op. (A).- (byte 2)
datos
Carga L COI! dato Inmediato MVIL 2E 2 Cdigo de op.
(L).- (b}te 2)datos
Carga Hcon dato Inmediato MVIH I 26 2 Cdigo de op.
(H) .- (byte 2)datos
Carga LOC (H y L) Indirecto MOVA.M 7E I I Cdigo de op. I (A).- ((HXL))aA de registro Cdigo de op.
(L).-(byte 2)Carga JIL con dato Inmediato LXIH 21 3 wo ~ orden inhioI
(H) .- (byte 3)dato ~ orden ~
Figura 6.21. Instrucciones de transferencia de datos para el microprocesador genrico (subconjunto de instrucciones dellntel 8080/8085).
Instrucciones de l!1II
Descripclon .) la operacl,'~
Carga SP con d.;;,
Carga JlL de lO("
Carga Ade LOC ...
Almacena.i en LO
Almacena /lL en li
Almacena A en LOI (Hy L)
Almacena H en LQ (/1 YL)
Almacena JI en U:' (Hy L)
Entrada de A del J."en LOC a
Salida de A al ~ en LOC a
Coloca selahzadc'de arrastre
( ) - contenido ~
dor(MOVA. tcnico (A en I es la fuente del tion con las J destino de Cor
ConsideraJ registro A (ac, (lll 10(00) es ne este dato d
http://librosysolucionarios.net
www.elsolucionario.net
l
de) micropro1. Entre ellas se )la. de almacetreo La mayora tipos de opera
!reS de la MPU. os de cualquier ier posicin de ms instrucciotcia tendr una no y dnde se , ra 6.21. El dato uaje ensambla-
Sealizadores afectados
Instrucciones de transferencia de datos
PROGRAMACION DEL MICROPROCESADOR 159
l
l ( ) - contenido de )) - direccionamiento indirecto de registro pe - contador de programa SP - puntero de pila
i Figura 6.21. (continuacin). dor (MOV A, L) sugiere primero la accin, que es transferir (MOV); la siguiente letra del nemo~ tcnico (A en este ejemplo) es el destino del dato, mientras que la ltima letra (L en este ejemplo) es la fuente del dato. Esto parece un poco al revs, pero es el convenio utilizado por Intel Corporation con las instrucciones del 8080/8085. Algunos microprocesadores identifican la fuente y destino de forma diferente y en el orden opuesto.
Considerar la operacin de transferencia esbozada en la Figura 6.22. La fuente del dato es el registro A (acumulador), mientras que el destino es el registro L. El contenido del acumulador
~rico (11110000) es transferido al registro L sin ninguna modificacin. El acumulador tambin contiene este dato despus de que se completa la operacin de transferencia.
Descripcion de Modo de Od. Formato de la Sealizadores la operacin direcciona Nemotcnico de Bytes instruccin Simblico afectados
miento opero
(digo de op.
(arga SP con dato Inmediato LXISP 31 3 ~to de orden inkrioI (SP) i- (byte 2 + 3)
flato de orden superioI
Cdigo de op. (L) i- ((byte 2+3))
,
(arga HL de Loe 00 Directo LHlO 2A 3 ~. de orden inkrioi
ifuoc. de onlen superiot (11) i- ((byte 2+3)+ 1)
(digo de op.
(arga Ade Loe 00 Directo lOA 3A 3 ~. de onlen inferioI' (A) i- ((byte 2+3))
~deonlen~
(digo de op.
Almacena A en LOC aa Directo STA 32 3 R. de onlen inferia (Direccin) i- (A) ~ de onlen superiOl
Cdigo de op. (Direccin) i- (L)
Almacena HL en LOC aa Directo SHlO 22 3 R. de onlen inkrioi R. de onlen ~
(Direccin +1) i- (11)
Almacena A en Loe Indirecto MOV M.A 77 I I Cdigo de op. I ((HXLi-(A)(Hv Li de registro Almacena Hen Loe Indirecto MOV M.L 75 I I Cdigo de op. I ((HXL)) +-(L)(Hy L) de registro Almacena Hen LOC Indirecto MOVM.H 74 I I (digo de op. I ((HXL)) i- (11)(Hy L) de registro Entrada de Adel puerto Directo IN DS 2
. deop I (A) +- ( Direccin)
en LOC a drec. del puerto I del puerto
Salida de A al puerto Directo OUT D3 2 Cdigo de op. I
( Direccin Ji- (A) en LOC a direc. del puerto I del puerto
Coloca senalizador Inherente STC 37 I I Cdigo de op. (C}')i-I CY se pone a I de arrastre
http://librosysolucionarios.net
www.elsolucionario.net
-~-~---
160 FUNDAMENTOS DE LOS MICROPROCESADORES
Acumulador
Antes de la operacin
/1111 0000 /
""'"""'....0..--"~'
Acumulador
Despus de la operacin
Registro L
Figura 6.22. La instruccin de transferir A a L.
Una segunda operacin de transferencia est en la Figura 6.23. Aqu la fuente del dato es el registro par HL de 16 bits, mientras que el destino es el puntero de pila de 16 bits. Si se observa cuidadosamente el nemotcnico de la instruccin
~ del dato es el s.. Si se observa ltido cuando se registro fuente
p,. es entonces
r au de pila
l Ilro Par HL
Lroo~~
SIro micro proF"JgUra 6.24. El del programa. instruccin de )S :; siguientes dato de orden tra en la Figut) que se carga
I nemotcnico D utiliza el
PlDdo y tercer I memoria de Illenzar con la I cdigo de op del programa
I
PROGRAMACION DEL MICROPROCESADOR 161
Cdigo de operacin
21H
DatoLMemoria de programa 00000011
DatoH 0011 1100
Antes de la operaciD
Registro par HL
Figura 6.24. La instruccin de carga inmediata HL.
Registro HL
Byte de orden superior de la direccin
Antes de la operaci6n
Byte de orden inferior de
la direccin Memoria de programa
Despus de la operaci6n
Despus de la operaci6n
H L
Figura 6.25. La instruccin de carga directa HL.
en una direccin de 16 bits (lo indica el recuadro a trazos), que sirve como puntero de direccin para encontrar la posicin (LOC) en la memoria de datos. Este byte de memoria de datos se carga entonces en el registro L. El contenido de la siguiente posicin de la memoria de datos (etiquetado LOC + 1 en este ejemplo) se carga entonces en el registro H.
El microprocesador genrico tiene cinco instrucciones de almacenamiento, que se resumen en la Figura 6.21. Las operaciones de almacenamiento son muy utilizadas para depositar resultados y otros datos en memoria. Considerar el problema ejemplo de la Figura 6.26 que utiliza la instruccin almacena A directo. El contenido del acumulador (registro A) se almacena en la posi
http://librosysolucionarios.net
www.elsolucionario.net
162 FUNDAMENTOS DE LOS MICROPROCESADORES
Acumulador 111000000 1
Antes de la operacin
Memoria de programa
Figura 6.26. La instruccin de almacenar A directo. '1
,,
l cin de memoria de datos (LOC), sealada por una direccin de 16 bits, y formada por el segundo y tercer bytes de la instruccin. Despus de la operacin, la posicin de memoria de datos (LOC) y el acumulador contienen el mismo dato (11000000 en este ejemplo).
I
La instruccin de entrada (input) listada en la tercera lnea del extremo inferior de la Figura 6.21 es similar a la instruccin de cargar. La fuente de la transferencia de datos es un puerto de entrada identificado por un nmero binario de 8 bits (0-255 10), el destino es el acumulador de la CPU. Un ejemplo se muestra en la Figura 6.27 donde se utiliza la instruccin de entrada. El dato del puerto de entrada sealado por el segundo byte de la instruccin es transferido al acumulador del microprocesador. En este ejemplo, 00001111 es introducido y transferido al acumulador desde un puerto identificado por LOC.
1Ji
Antes de la operacin
Cdigo de operacin
DBH
Una direccin de 8 bits
Des,... de la operaclOO
IN
i j I ! "
Memoria de programaiJI
Figura 6.27. La instruccin de entrada directa. "
1
/
--,..
111000000 1 Acumulador
Despus de la operad6a
r---&--..., Memoria de datos
Cdigo de operacin
32H
i Byte de orden inferior de la direccin
Byte de orden superior de la direccin
(LOC)
.~"""' d, ru=;6n r-----------,I Direccin de 16 bits I ..... - -- -----~
Acumulador
6.32. Acud
Solucio Se
destin4
6.33. Acud del da
SolD
Se! progr-a;
6.34. Acud mayO! la mie
Soluri Seg
dos poi
6.35. AeudiJ carga I
So..
Scatpara"
'] 1: i
6.36. El COI es_
Sol~
El llHx)(]
.]1
I
http://librosysolucionarios.net
www.elsolucionario.net
/ (
PROORAMACION DEL MICROPROCESADOR 163
PROBLEMAS RESUELTOS
6.32. Acudir a la Figura 6.21. Durante el uso de la instruccin MOV H"A, el registro __ (A, H) es la fuente del dato mientras que el registro __ (A, H) es el destino.
Solucin: Segn la informacin de la Figura 6.21, el registro A es la fuente mientras que el registro H es el
destino del dato durante la ejecucin de la instruccin MQV H,A.
633. Acudir a la Figura 6.21. En la instruccin PCHL, el registro __ (HL, Pe) es la fuente del dato mientras que el ______ de 16 bits es el destino.
~-,
~~~..: Solucin: Segn la informacin de la Figura 6.21, el registro HL es la fuente mientras que el contador de
programa de 16 bits es el destino del dato durante la ejecucin de la instruccin PCHL.
6.34. Acudir a la Figura 6.2 t. Los sealizadores __ (son afectados, no son afectados) por la mayora de las operaciones de transferencia de datos en el repertorio de instrucciones de la microcomputadora genrica.
Solucin: Segn la informacin de la columna derecha de la Figura 6.21, los sealizadores no son afecta
dos por la mayora de las operaciones de transferencia de datos.
6.35. Acudir a la Figura 6.21. El nemotcnico del lenguaje ensamblador para la instruccin de a por el segun carga utilizada en la Figura 6.28 es ___ .
emoria de datos Solucin:
erior de la Figu Segn la informacin de la tabla de la Figura 6.21, el nemotcnico del lenguaje ensamblador I es un puerto de para la instruccin de carga utilizada en la Figura 6.28 es MVI A. !Cumulador de la , entrada. El dato lo al acumulador Acumulador i) al acumulador
Antes de la operacin Despus de l. operacin
Memoria de programa
acin Dato
Figura 6.28.
6.36. El contenido del acumulador de la Figura 6.28 despus de la operacin de carga es __ (8 bits).
, Solucin:
El contenido del acumulador de la Figura 6.28 despuS de la operacin de carga es II 10001 1.
http://librosysolucionarios.net
www.elsolucionario.net
1
, 164 FUNDAMENTOS DE LOS MICROPROCESADORES
6.37. Acudir a la Figura 6.21. La operacin de carga mostrada en la Figura 6.28 utiliza direccionamiento __ (directo, inmediato).
Solucin: Segn la informacin de la tabla de la Figura 6.21, la operacin de carga mostrada en la
Figura 6.28 utiliza direccionamiento inmediato.
6.38. Acudir a la Figura 6.21. La instruccin MOV A,M tiene el cdigo de op 7EH, utiliza direccionamiento ___ (directo, indirecto de registro) y la fuente de datos es una posicin de la memoria de __ (datos, programa) sealada por el registro par HL.
Solucin: Segn la informacin de la Figura 6.21, la instruccin MOV A,M tiene el cdigo de op 7EH,
utiliza direccionamiento indirecto de registro y la fuente de datos es una posicin de memoria sealada por el registro par HL.
6.39. Acudir a la Figura 6.21. La instruccin SHLD tiene el cdigo de op 22H y utiliza direc-I cionamiento ___ (directo, inmediato).
l. SoluciD: Segn la informacin de la Figura 6.21, la instruccin SHLD tiene el cdigo de op 22H Y utiliza r
direccionamiento directo.
j j:, , ,
6.40. Acudir a la Figura 6.21. La instruccin almacena directo HL (cdigo de op == 22H) es i una instruccin de __(nmero) bytes. Los 2 ltimos bytes de la instruccin del l'r \ programa contienen informacin sobre ___ (datos, direcciones). Solucin:
Segn la informacin de la Figura 6.21, la instruccin (l!lmacena directo Hv> (cdigo det op == 22H) es una instruccin de 3 bytes. Los 2 ltimos bytes de la instruccin del programa contienen informacin sobre direcciones.
6.41. Acudir a la Figura 6.21. La fuente del dato cuando se utiliza la instruccin SACAR (OUT) en la Figura 6.29 es el registro __ (A, H, L).
Solucin: De acuerdo con la Figura 6.21, la fuente del dato cuando se utiliza la instruccin OUT en la
Figura 6.29 es el registro A, que tambin se denomina acumulador.
Despus de la operacin~ Puerto de salidaIr--"--?--'OOT ""
(1)
Cdigo de operacin1; , Memoria de 1 programa 0000 000 1
Figura 6.29.
.'
6.42. Des con
Solll
dato gran
6.6. REPI OPEI
Las instrucci genrico que nes se referer rarn sinnir bifurcacin \ nes de transj;
Instrucciones de bifur.
Descripc:idll * la opeaciOO
Salta a LOC Gil
Salta a LOC tllui
Salta atoe l1li si tr4 el sealilador de I
Salta a LOC Gil 51 coloca e111i1f11i111 de aJTlIStre
( ) = contenido di: pe - contador de ~
http://librosysolucionarios.net
www.elsolucionario.net
I
8 utiliza direc
~ mostrada en la
p 7EH, utiliza I)S es una posi ;mHL.
Iiao de op 7EH, in de memoria
J, r utiliza direc
~ DI> 22H y utiliza
~ ~ op =22H) es !lStruccin del
~.
rl (cdigo de 11 del programa
t ::cin SACAR
tin OUT en la
L,.
,
$-.
PROGRAMAOON DEL MICROPROCESADOR 165
6.42. Despus de la operacin sacar en la Figura 6.29, el puerto de salida nmero __(hex) contendr el dato __ (8 bits).
Solucin: Despus de la operacin sacar de la Figura 6.29, el puerto de salida nmero OlH contendr el
dato 11110011. La direccin del puerto de salida proviene del segundo byte de la memoria del programa.
6.6. REPERTORIO DE INSTRUCCIONES: OPERACIONES DE BIFURCACION
Las instrucciones de bifurcacin son la cuarta categona de las operaciones del microprocesador genrico que se van a considerar y estn resumidas en la Figura 6.30. Observar que las operaciones se referencian como instrucciones de salto, aunque los trminos salto y bifurcacin se considerarn sinnimos en este captulo. Algunos fabricantes hacen distinciones entre instrucciones de bifurcacin y de salto. Las operaciones de bifurcacin o de salto a veces se denominan instrucciones de transferencia de control. Como las operaciones de la Figura 6.30 son un subconjunto del
Instrucciones de bifun:acin
Descripcin de la operacin
Salta a Loe aa
SaIIlI a Loe aa si es O
Modo de direcciona
miento
Inmediato
Inmediato
Nemotcnico
JMP
lZ
Cd. de
opero
C3
CA
Bytes
3
3
Fonnato de la instruccin
Cdigo de op.
~ Ol rotoiD&:ria ~Olll'den~
Cdigo de op.
pm:. de roto inICrioi ~. de roto superio
Simblico
(I'C) .... (Direccin)
Si el seilalizador
de O- 1. entonces (I'C) .... (direccin)
Senalizadon:s afectados
SaIIlI a Loe aa si no es O Inmediato lNZ C2 3 Cdigo de op.
prec. de Il'den inICrioi ~OlrotoSUtOO
Si el seIlalizador
de O O, entonces
(I'C) .... (direccin)
Salta aLOC da si se coloca el sealizador de arrastr
Imnediato JC DA 3 Cdigo de op.
Prec. de Il'den infeOO ~Ol roto superio
Si el seilalizador de
arrastre 1, entonces (I'C)
e
166 RJNDAMENTOS DE LOS MICROPROCESADORES
repertorio de instrucciones del 8080/8085, el convenio de Intel de llamar a estas instrucciones de salto se utilizar ms tarde en este captulo.
La microcomputadora normalmente ejecuta instrucciones en orden secuencial. El contador de programa de 16 bits del microprocesador genrico siempre sigue la pista de la direccin de la siguiente instruccin que se va a buscar en memoria y ejecutar. El contador de programa normalmente sigue una secuencia ascendente aumentando de uno en uno. Las instrucciones de salto o bifurcacin proporcionan un mtodo para cambiar el valor del contador de programa, alterando as la secuencia normal de ejecucin del programa.
U.s instrucciones de salto o bifurcacin se subdividen normalmente en operaciones de salto incondicional y de salto condicional. La primera instruccin listada en la Figura 6.30 es una instruccin de salto incondicional. La instruccin saltar inmediato es una instruccin de 3 bytes, utilizada para cargar una direccin especfica en el contador del programa de la CPU. Un problema ejemplo que utiliza esta instruccin, de salto incondicional, se muestra en la Figura 6.31 donde la direccin 2000H se est cargando en el contador del programa. La informacin de la direccin sigue inmediatamente al cdigo de op, y por tanto, se denomina direccionamiento inmediato. Observar en la Figura 6.31 que la parte de orden inferior de la direccin de 16 bits se localiza en el segundo byte de la memoria de programa, mientras que el tercer byte contiene la parte de orden superior de la direccin. Una instruccin de este tipo se utiliza en un principio para inicializar el contador de programa cuando empiece la ejecucin de un nuevo programa. La instruccin de salto o bifurcacin incondicional puede considerarse como un mtodo de cargar una nueva direccin en el contador de programa.
Cdigo de operacin
Memoria de programa
Antes de la operaciD Despus de la operacin
Contador de programa
Figura 6.31. Instruccin de bifurcacin incondicional.
Las cuatro ltimas operaciones de bifurcacin, detalladas en la Figura 6.30, son instrucciones de salto condicional. Estas instrucciones harn que la direccin inmediata se coloque en el contador de programa slo si se satisface la condicin especificada. En cualquier otro caso el contador de programa, simplemente, contar en secuencia ascendente. Un problema ejemplo que utiliza la instruccin salta si cero aparece en la Figura 6.32. En este ejemplo, el contador de programa contiene 20 13H antes de la operacin y continuar en secuencia ascendente hasta que el sealizadar de cero se ponga a L La CPU evala la condicin del sealizador de cero en el registro de status y encuentra que est a l. Esto significa que el resultado de la ltima operacin lgica o aritmtica fue cero; las condiciones son correctas para un salto, y la MPU carga el contador de
Memoria de
Anf~
Contador de Jl
Registro
programa con l. ma, por lo que instruccin que 2013H como PI memoria del po la memoria del l mente sea el m
Las instrucci procesadores. Se salto o bifurcac dos tcnicas de I
6.43. Las DI 0_
Sol~ Las .
da de C(J
6.44. Se dice toma de
Solucilr Las (1
6.45. Acudir 1 salto. ~
~i~;] J
III'~ ..... .
http://librosysolucionarios.net
www.elsolucionario.net
Ilrucciones de
1. El contador Iireccin de la ;rama normalInes de salto o ma. alterando
~nes de salto a 6.30 es una nstruccin de le la CPU. Un :a en la Figuil informacin ccionamiento [l de 16 bits se te contiene la I un principio programa. La odo de cargar
de programa
PROGRAMACION DEL MICROPROCESADOR 167
Cdigo de operacin
Contador de programa I 00 1 O 0000 I000 100 1 1 I
Despus de la opeftcln
L..__--I-___..... Contador de programa
Registro de status' t --1 1 I Cy z
Figura 6.32. La Instruccin de salta si cero.
programa con la nueva direccin 2008H. La nueva direccin proviene de la memoria de programa, por lo que se dice que esta instruccin utiliza direccionamiento inmediato. La siguiente instruccin que se va a ejecutar ser la instruccin de la posicin de memoria 2008H y no la de la 2013H como podria esperarse. El microprocesador genrico salta a una nueva posicin de la memoria del programa. Los saltos o bifurcaciones pueden hacerse hacia atrs o hacia adelante en la memoria del programa. El ejemplo de la Figura 6.32 ilustra un salto hacia atrs, que probablemente sea el ms comn.
Las instrucciones de salto o bifurcacin se encuentran en casi todos los programas de microprocesadores. Son valiosas debido a su caracteristica de toma de decisiones. Las instrucciones de
}salto o bifurcacin se utilizan para formar ciclos y saltos en el programa. Los ciclos y saltos son dos tcnicas de programacin que se estudiarn ms tarde en este captulo.
PROBLEMAS RESUELTOS
6.43. Las instrucciones de bifurcacin tambin se denominan de ___ (brinco, salto) o ___ de control.
Solucin:
Las instrucciones de bifurcacin tambin se denominan instrucciones de salto o de transferenrucciones cia de control,
r en el contaD el contador 6.44. Se dice que las operaciones __ (lgicas, de salto condicional) son instrucciones de que utiliza la toma de decisin. de programa
Solucin: le el sefUtliza
Las operaciones de salto condicional son instrucciones de toma de decisin. el registro de cin lgica o 6.45. Acudir a la Figura 6.30. El nemotcnico del lenguaje ensamblador para la operacin de ,contador de salto, esbozada en la Figura 6.33, es ___ .
Jhttp://librosysolucionarios.net
www.elsolucionario.net
-'j5*':>
168 fUNDAMENTOS DE LOS MICROPROCESADORES
Cdigo de Direccin operacin
Memoria de programa I
20lOH cm 201m 00000000
2012H 00100000
Antes de la operacin {_~~~ ___ r---J-___Des_'_U_S_d..,e la operacin(
? Contador de programa Contador de programa I 00 1 O 0000 000 I 00 11 I Nemotecnico Registro de status 1 Ot --j 1 I
Cy z
Figura 6.33.
Solucin:
El cdigo de operacin para la operacin Salta si no cero de la Figura 6.33 es C2H. A partir de la tabla de la Figura 6.30 se detennina que el nemotcnico del lenguaje ensamblador para esta operacin de salto es JNZ.
6.46. Acudir a la Figura 6.30. El contenido del contador de programa de la Figura 6.33 despus de la operacin salta si no cero es ___ (hex).
Solucin:j El sealizador de cero del registro de status de la Figura 6.33 se pone al, lo cual significa que el
resultado de la ltima operacin aritmtica o lgica fue cero. La condicin para el salto no se satisface. La direccin del segundo y tercer bytes de la memoria de programa no son cargadas en el contador de programa, por lo que su contenido permanece a 20l3H, como estaba antes de la instruccin de salto condicional. La siguiente instruccin que se va a ejecutar se localiza en 2013H.
6.47. Acudir a la Figura 6.30. El nemotcnico de la instruccin salta si arrastre de la Figura 6.34 es Je, mientras que el cdigo de operacin es __ (hex).
Cdigo de Direccin operacin
2000H ?
Memoria de programa 0000 0000
2002H 00100001
Antes de la operacin Des,u& de la operacin
Contador de programa lii~ 0000 00 11 ? Contador de programa1-------_.....1 Registro de status I 1 f-- j O I
Cy z
Figura 6.34.
Solud
El tabla (
6.48. El COII es_
Soludt
E/s salto. 1. cin qu
6.7. REPER OPERA,
Las instruccionl' microprocesadol servar que el m instrucciones de
La instrucci microprocesador un pequeo grol encuentra la prir salto en los siguie se guarda en la pi subrutina en la p segundo se ejecul
Instrucciones de lIamdt .. '1
Descripcin de la operacin
Llama ala subrutita en lOC aa
Vuelta de subrutina
( ) - contenido de - direccionamiento I Pe - contador de prognu SP - puntero de pila
Figura 6.35.
http://librosysolucionarios.net
www.elsolucionario.net
operacin
:::Ontador de programa
.,33 es C2H. A partir I1Samblador para esta
~. =gura 6.33 despus
tcuo! signifi"" que el D para el salto no se no son cargadas en el 10 estaba antes de la a:cutar se localiza en
lnstre de la Figu
(
PROGRAMACION DEL MICROPROCESAOOR 169
Solucin:
El nemotcnico de la instruccin de
170 FUNDAMENTOS DE LOS MICROPROCESADORES
Programa principal
Direccin Contenido
CALL
200EH OOH
200DH
Salta
200FH IOH
i 2010H
~
1 IOOOH Subrutina
que produce un retardo de I seg
Figura 6.36. Flujo de programa del programa principal a la subrutina y vuelta utilizando las instrucciones de retorno y llamada.
\
en la pila (201OH) es devuelta al contador de programa, y la MPU contina el programa principal donde lo dej cuando se llam por primera vez a la subrutina. La MPU ejecuta las instrucciones en secuencia hasta que encuentra la segunda instruccin de llamada en la direccin 2020H. La MPU guarda en la pila la direccin de la siguiente instruccin (2023H) y salta a la subrutina en la direccin loooH. Hasta que se completa de nuevo la subrutina de retardo de tiempo, la instruccin de vuelta saca de la pila la direccin de la siguiente instruccin del programa principal (2023H) y la transfiere al contador de programa. Se puede utilizar muchas veces una subrutina en la ejecucin de un programa principal. La subrutina puede almacenarse en una RAM o ROM.
La instrucci Figura 6.37 det contador de pr nueva direccil seguida a trav~
Puntero de pila
210AH ~
Contador de progr.u
Antes.
Memoria de J)I'O@:l'
1. El pum 2. El b~1e
posicin 3. El punte 4. El byted
2108H. S. La direc
program 6. La dim::
program
La MPU ir ah< ejemplo). Esta e'!
Considerar el tina. La instrucc programa. La SI crculos de la F~
http://librosysolucionarios.net
www.elsolucionario.net
~ uce do I
zando
LprinciDID , instrucciones in 2020H. La subrutina en la lpo. la instrucrama principal 13 subrutina en l-\M o ROM.
PROGRAMACION OEL MICROPROCESADOR 171
La instruccin de llamada combina las funciones de las operaciones de introducir y saltar. La Figura 6.37 detalla el uso de la instruccin de llamada. Primero introduce el contenido actual del contador de programa en la pila. A continuacin, el contador de programa se carga con una nueva direccin, para realizar el salto a la de la subrutina. La secuencia de acciones puede ser seguida a travs de los nmeros inscritos en crculos en la Figura 6.37.
Pila Pila Puntero 2107 de pila 2107Puntero
de pila
210AH'--__......J
Contador de programa
Antes de la operacin
Memoria de programa f----f----j200FH 00010000
2108
2109
2108
2109 (!J3, - - - :12108H I
1 , , , ~ ,
I--..j....., 2 lOA , ,210A .... ___ ~"n----+--{ ,
L-___~--~~~
2000H COH
200EH
, ,
Despus de la operacin
Figura 6.37. La instruccin de llamada a subrutina.
1. El puntero de pila se decrementa de 210AH a 2109H. 2. El byte de orden superior del contador de programa es introducido en la pila, en la
posicin 21 09H. 3. El puntero de pila se decrementa de 2109H a 2108H. 4. El byte de orden inferior del contador de programa es introducido en la pila en la posicin
2108H. 5. La direccin de orden inferior es transferida desde el segundo byte de la memoria de
programa al byte inferior del contador de programa. 6. La direccin de orden superior es transferida desde el tercer byte de la memoria de
programa al byte superior del contador de programa.
La MPU ir ahora a la nueva direccin sefialada por el contador de programa (1 OOOH en este ejemplo). Esta es la direccin de la primera instruccin de la subrutina.
Considerar el ejemplo mostrado en la Figura 6.38 utilizando la instruccin de vuelta de subrutina. La instruccin de retomo (o de vuelta) debe transferir el contenido de la pila al contador de programa. La secuencia de acciones puede ser seguida a travs de los nmeros inscritos en crculos de la Figura 6.38.
"
http://librosysolucionarios.net
www.elsolucionario.net
172 RJNDAMENTOS DE LOS MICROPROCESADORES
PilaPila Puntero
2107de pila 2108 000100002108H
2109 00100000
,'21OA ' . .,/ Antes de la operacin Despus de la operacin
Contador de programa ---_......---' Figura 6.38. la instruccin de vuelta de subrutina.
1. El tope de la pila (posicin 2108H) es sacado, y su contenido transferido al byte inferior del contador de programa.
2. El puntero de pila es incrementado de 2108H a 2109. 3. La parte superior de la pila (ahora posicin 2109H) es sacada, y su contenido transferido
al byte superior del contador de programa. 4. El puntero de pila es incrementado de 2109H a 2IOAH.
El contador de programa ahora contiene la direccin de 16 bits (20 l OH) de la siguiente instruccin que se va a buscar en la memoria del programa.
PROBLEMAS RESUELTOS
6.49. La instruccin de ___ (llamada, vuelta) es parte del programa principal, mientras que la instruccin de __(llamada, vuelta) es el fin de una subrutina.
Solucin: Ver la Figura 6.36. la instruccin de llamada es parte del programa principal, mientras que la
instruccin de vuelta est al final de una subrutina.
6.50. La llamada es una instruccin de __ (nmero) bytes. Los 2 ltimos bytes contienen la direccin de la primera instruccin de __ (memoria principal, una subrutina).
Solucin: La llamada es una instruccin de 3 bytes, segn la tabla de la Figura 6.35. Los 2 ltimos bytes
contienen la direccin de la primera instruccin de la subrutina.
6.51. La operacin de llamada realiza las funciones de __(sacar, introducir) y de __ (sumar, saltar).
Solucin: La operacin de llamada realiza las funciones de las instrucciones de introducir y saltar.
6.52. Acudir a la Figura 6.39. El contenido de la posicin de la pila 2109H despus de la operacin de llamada ser de __ (8 bits).
Puntero de pila
210AH ~
Contador de progran
Antes
Memoria de programo
.'1
Solucidll.: El conte
ser 00 I ()()( pila, de ac-u
6.53. Acudir a operacin
Solucidll.: El COntI:
I1amada ser
6.54. Acudir a t cin de lIa
Solucia: Desp.
superior de
655. Acudir a de llamad,
Soludc'lc El conte
ser OOIOH
6.56. Las illStrul parejas. iD
SolucWc Las instl
http://librosysolucionarios.net
www.elsolucionario.net
I
Puntero de pila
~>----=-;12IOAH I g- operacin
dor de programa
tI byte inferior ~ nido transferido
t iguiente instruc
al. mientras que
l mientras que la
b~1es contienen a subrutina).
2 ltimos bytes
!:ir) y de __
~ cir y saltar.
r despus de la
t
PROGRAMAClON DEL MICROPROCESADOR 173
Pila Pila
2107
210
2109
2107
2108'? PunteroPuntero de pila de pila 2109'?
210AH ~L...:2--OA-L.:___..J I '? I: 2 lOA :
Antes de la operacin Despus de la operacin Cdigo de operacin
2000H CDH Contador de programa '--------'------'
Memoria de programa 200 1H 1----+----1./
2oo2H 0000 0000
Figura 6.39.
Solucin:
El contenido de la posicin de pila 2109H de la Figura 6.39 despus de la operacin de llamada ser 00 100000. El byte de orden superior del contador de programa ser almacenado primero en la pila, de acuerdo con la tabla de la Figura 6.35 y el diagrama de la Figura 6.37.
6.53. Acudir a la Figura 6.39. El contenido de la posicin de la pila 2108H despus de la operacin de llamada ser __ (8 bits).
Solucin:
El contenido de la posicin de la pila 2108H en la Figura 6.39 despus de la operacin de llamada ser 00000o 11. El byte de orden inferior del PC ser almacenado en la segunda pila.
6.54. Acudir a la Figura 6.39. El puntero de pila contendr __ (bex) despus de la operacin de llamada.
Solucin:
Despus de la operacin de llamada en la Figura 6.39, el puntero de pila sealar a la parte superior de la pila, que estar en la posicin 2108H.
6.55. Acudir a la Figura 6.39. El contenido del contador e programa despus de la operacin de llamada ser __ (bex).
Solucin:
El contenido del conta
Recommended