Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Aunque el conjunto de instrucciones puede encontrarse en cualquier libro que trate este tema especficamente, en este apartado se muestra un "diccionario" de las mismas. La descripcin se lista funcionalmente para una localizacin ms inmediata y todas estn descritas de forma detallada. Si desea hacer una b squeda alfab!tica de las instrucciones puede usar la ayuda incorporada en el pro"rama simulador.
A1.2.
A continuacin se describen las instrucciones que operan directamente sobre el bit de acarreo. #stas instrucciones utilizan un byte en la forma si"uiente$
A1.2.1.
CM C
Complementar acarreo
CMC CY
A1.2.2.
ST C
Activar acarreo
STC CY
A1.3.
Instrucciones de un registro
A continuacin se describen las instrucciones que operan sobre un solo re"istro o posicin de memoria. Si se especifica una referencia a memoria, la direccin de la misma 'iene dada por el contenido de los re"istros ( y L, donde el re"istro ( contiene los ocho bits ms si"nificati'os de la direccin, y el re"istro L los restantes.
A1.3.1.
I !
REGISTRO
0 000 para registro B001 para registro C010 para registro D011 para registro E100 para registro H101 para registro L110 para MEMORIA111 para ACUMULADOR
"#emplo
Si el re"istro A contiene )*(, la instruccin +,- A har que este re"istro conten"a la cantidad ))(.
A1.3.2.
DC !
REGISTRO
1 000 para registro B001 para registro C010 para registro D011 para registro E100 para registro H101 para registro L110 para MEMORIA111 para ACUMULADOR
"#emplo
Si el re"istro A contiene ))(, la instruccin ./- A har que este re"istro conten"a la cantidad )*(. A1.3.3. CM A Complementar acumulador
CMA
/ada uno de los bits del acumulador se complementa 0operacin denominada a uno1.
Formato
A1.3.$.
DA A
#l n mero he2adecimal de * bits contenido en el acumulador se ajusta como dos d"itos de 3 bits codificados en binario decimal, se" n el proceso si"uiente$
0&1.Si los cuatro bits menos si"nificati'os del acumulador representan un n mero mayor que ), o si el bit de acarreo au2iliar es i"ual a uno, el acumulador se incrementa en seis unidades. Si no se presentan tales condiciones, el contenido del acumulador no 'ara. 041.Si los cuatro bits ms si"nificati'os del acumulador representan ahora un n mero mayor que ), o si el bit de acarreo es uno, los cuatro bits ms si"nificati'os se incrementan en seis unidades. Asimismo, si no tienen lu"ar las circunstancias e2puestas, el contenido del acumulador no se incrementa. Si hay acarreo de los cuatro bits menos si"nificati'os durante el paso 0&1, el bit de acarreo au2iliar se pone a &5 si no lo hay, se pone a %. 6or otra parte, si hay acarreo de los cuatro bits ms si"nificati'os durante el paso 041, se acti'ar el bit de acarreo, poni!ndose a cero si no se produce acarreo.
Formato
0
ota
#sta instruccin se utiliza en las operaciones de suma de n meros decimales. #s la nica instruccin cuya operacin depende del bit de acarreo au2iliar.
"#emplo
Supon"amos que queremos realizar una suma decimal de dos n meros 03% 7 *%1. Ambos bits de acarreo estn a cero. La secuencia de instrucciones podra ser$ 0&1.89+ :,*%( 041.89+ A,3%( 0<1.A.. : 5 Acumulador ; 3%( 5 Acumulador ; 3%( 7 *%( ; /%(
031..AA
La instruccin .AA opera de la si"uiente forma$ &. /omo el contenido de los bits =% > <? del acumulador es menor que ) y el bit de acarreo au2iliar es cero, el contenido del acumulador no 'ara. 4. /omo los 3 bits ms si"nificati'os del acumulador representan un n mero mayor que ), estos 3 bits se incrementan en @ unidades, poniendo a uno el bit de acarreo. Acumulador #$ Nue%o acumulador C ! $ ! & ! " " " " " CY ; CY ; CY ; "
A1.$.
Descripcin
10
A1.'.
#sta serie de instrucciones transfieren datos entre los re"istros, la memoria y el acumulador. Acupan un byte en la forma si"uiente$
A1.'.1.
M% )
Movimiento
6odemos distin"uir < casos$ 0A1. 0:1. 0/1. 0A1. Bransferencia entre re"istros 0direccionamiento re"istro1. Bransferencia desde la memoria 0direccionamiento re"istro indirecto1. Bransferencia a la memoria 0direccionamiento re"istro indirecto1. 8A9 -&, -4 #l contenido del re"istro -4 es transferido al re"istro -&. -& y -4 pueden ser los re"istros :, /, ., #, (, L o el acumulador A.
11
0:1.
8A9 -, 8 #l contenido de la direccin de memoria, cuya direccin est en los re"istros (CL, es transferido al re"istro -. - puede ser cualquiera de los re"istros A, :, /, ., #, ( o L.
0/1.
8A9 8, #l contenido del re"istro - es transferido a la direccin de memoria indicada por los re"istros (CL.
12
Formato
Registro
Registro 000 para registro B001 para registro C010 para registro D011 para registro E100 para registro H101 para registro L110 para MEMORIA111 para ACUMULADOR
"#emplos
1. Supon"amos que el re"istro : contiene %%( y el re"istro / contiene <%(. La instruccin 8A9 :,/ almacenar <%( en el re"istro :. 2. Supon"amos que el re"istro ( contiene %%( y el re"istro L contiene <%(. La instruccin 8A9 8, A almacenar el contenido del acumulador en la posicin de memoria %%<%(.
A1.'.2.
STA *
STA) r*
13
Direccionamiento
Descripcin
Registro indirecto
#l contenido del acumulador se almacena en la posicin de memoria especificada por los re"istros : y /, o los re"istros . y #.
Formato
"#emplo
Si el re"istro : contiene <D( y el re"istro / contiene &@(, la instruccin SBAE : almacenar el contenido del acumulador en la posicin de memoria <D&@(.
A1.'.3.
+DA *
Cargar el acumulador
#l contenido de la posicin de memoria especificada por los re"istros : y /, o los re"istros . y #, reemplaza el contenido del acumulador.
14
Formato
"#emplo
Si el re"istro . contiene <D( y el re"istro # contiene &@(, la instruccin L.AE . car"ar en el acumulador el contenido de la posicin de memoria <D&@(.
15
A1.,.
A continuacin 'amos a 'er las instrucciones que operan con el contenido del acumulador y el de uno de los re"istros o posicin de memoria. #stas instrucciones ocupan un byte en la forma si"uiente$
OPERACI!"
REGISTRO 000 para registro B001 para registro C010 para registro D011 para registro E100 para registro H101 para registro L110 para MEMORIA111 para ACUMULADOR
000 para ADD001 para ADC010 para SUB011 para SBB100 para A"A101 para XRA110 para ORA111 para CMP
La instruccin opera sobre el contenido del acumulador, con la cantidad definida por el re"istro especificado por -#F+SB-A. Si se especifica una referencia a memoria, la cantidad utilizada por la instruccin es la correspondiente a la posicin de memoria determinada por los re"istros ( y L, en los que el re"istro ( "uarda los * bits ms si"nificati'os, y el re"istro L, los * restantes. Banto el contenido del re"istro como de la posicin de memoria no 'aran al finalizar la instruccin, "uardndose el resultado en el acumulador.
A1.,.1.
ADD
Sumar registro o memoria al acumulador Instruccin Bits afectados Direccionamiento ADD reg Z, S, P, CY, AC Registro
16
Descripcin
#l contenido del re"istro o posicin de memoria especificados se suma al contenido del acumulador, usando aritm!tica de complemento a dos. #l resultado se "uarda en el acumulador.
Formato
1
"#emplos
REGISTRO
1. Si el re"istro : contiene el 'alor <A( y el acumulador contiene @/(, la instruccin A.. : realiza la si"uiente suma$ Registro B Acumulador Nue%o acumulador ,A! $C! A$! " " " " " " " " " " " "
A1.,.2.
AD C
17
#l contenido del re"istro o posicin de memoria especificados ms el contenido del bit de acarreo, se suman al contenido del acumulador.
Formato
1
"#emplo
REGISTRO
Supon"amos que el re"istro : contiene el 'alor <%(, el acumulador G@(, y el bit de acarreo est puesto a cero. La instruccin A./ / realizar la si"uiente suma$ Registro B Acumulador Bit de acarreo Nue%o acumulador , ! -$! " " " " "
" "
A$!
"
"
" "
#l nue'o contenido del acumulador ser A@(, mientras que todos los bits de condicin quedarn puestos a cero e2cepto los de si"no y paridad. Si el bit de acarreo hubiera sido & antes de realizar la operacin, hubiera tenido lu"ar la si"uiente suma$
18
, ! -$!
A-!
"
"
#l acumulador contendra ahora AG( y todos los bits de condicin e2cepto el de si"no, estaran puestos a cero.
A1.,.3.
S./
!estar registro o memoria del acumulador Instruccin Bits afectados Direccionamiento S.B reg Z, S, P, CY, AC Registro
Descripcin
#l contenido del re"istro o posicin de memoria especificados se resta al contenido del acumulador, usando aritm!tica de complemento a dos. #l resultado se "uarda en el acumulador. Si no hay acarreo del bit de ms peso, el bit de acarreo se pone a uno, y 'ice'ersa, al contrario de lo que ocurre con la operacin de suma
Formato
1
"#emplos
REGISTRO
Antes de entrar en los ejemplos recordamos que restar utilizando aritm!tica de complemento a dos equi'ale a complementar cada bit del se"undo operando y sumar &.
19
1. Si el acumulador contiene @%( y el re"istro # contiene 4*(, la instruccin SH: # realizar la si"uiente operacin de resta$ Acumulador +/Registro B0 Bit de acarreo Nue%o acumulador $ ! +/&1!0 " " " " "
,1!
Al final de la operacin el acumulador contendr <*( y el bit de acarreo se pondr a cero debido a que ha habido acarreo del bit ms si"nificati'o.
2. La instruccin SH: A restar al acumulador a s mismo, obteni!ndose un resultado de cero. Se utiliza en muchas ocasiones para poner a cero el bit de acarreo y el acumulador.
A1.,.$.
S/ /
!estar registro o memoria del acumulador con acarreo Instruccin Bits afectados Direccionamiento SBB reg Z, S, P, CY, AC Registro indirecto
Descripcin
20
#l 'alor del bit de acarreo se suma internamente al contenido del re"istro o posicin de memoria especificados. #ste 'alor se resta del acumulador usando aritm!tica de complemento a dos. #sta instruccin es de "ran utilidad en la realizacin de restas de 'arios bytes, pues tiene en cuenta el 'alor positi'o o ne"ati'o de la sustraccin anterior.
Formato
1
"#emplo
REGISTRO
Si el re"istro / contiene %*(, el acumulador almacena %I( y el bit de acarreo est acti'ado, la instruccin S:: / efect a la si"uiente operacin$ 1. %*( 7 bit de acarreo ; %)(. 2. /omplemento a dos de %)( ; &&&&%&&& 0DG(1 3. Lo anterior se suma al acumulador$ Acumulador 2! 3-! 3C! " " " " "
Nue%o acumulador
4. ,o hay acarreo al final por lo que el bit de acarreo se queda a uno. Los bits de si"no y paridad estn puestos a uno mientras que es bit de cero est a cero.
21
A1.,.'.
A A
Funcin lgica A D entre registro o memoria con acumulador Instruccin Bits afectados Direccionamiento ANA reg Z, S, P, CY, AC Registro indirecto
Descripcin
Se realiza la funcin l"ica A,. bit a bit entre el contenido del re"istro o posicin de memoria especificados y el contenido del acumulador. #l bit de acarreo se pone a cero.
Formato
1
ota
REGISTRO
"
"
Si el re"istro : contiene @/( y el acumulador almacena <A(, la instruccin A,A : realiza la si"uiente operacin$ Acumulador Registro B ,A! $C! " " " " " " " "
22
Nue%o acumulador
&1!
"
"
A1.,.,.
*! A
Funcin lgica %0"*C+.SI)% entre registro o memoria con acumulador Instruccin Bits afectados Direccionamiento )RA reg Z, S, P, CY, AC Registro
Descripcin
Se realiza la funcin l"ica AC#E/LHS+9A bit a bit entre el contenido del re"istro o posicin de memoria especificados y el contenido del acumulador, "uardndose el resultado en este ltimo.
Formato
1
ota
REGISTRO
R " "
"
23
E-A : realiza la si"uiente operacin$ Acumulador Registro B Nue%o acumulador ,A! $C! 2$! " " " " " " " " " " " "
2. La funcin AC#E/LHS+9A de cualquier bit con uno da lu"ar al complemento del mismo. As, si el acumulador contiene todo unos, la instruccin E-A : produce el complemento a uno del contenido del re"istro :, y lo "uarda en el acumulador.
3. #n al"unas ocasiones, un byte se utiliza para reflejar los estados de ciertas condiciones dentro de un pro"rama, donde cada uno de los ocho bits puede responder a una determinada condicin de falso o 'erdadero, actuado o inhibido, etc. 8ediante la funcin AC#E/LHS+9A podemos determinar cuntos bits de la palabra han cambiado de estado en un determinado lapsus de tiempo.
A1.,.1.
%! A
Funcin lgica %! entre registro o memoria con acumulador Instruccin Bits afectados Direccionamiento 'RA reg Z, S, P, CY, AC Registro indirecto
24
Descripcin
Se realiza la funcin l"ica A,. bit a bit entre el contenido del re"istro o posicin de memoria especificados y el contenido del acumulador, quedando en este ltimo el resultado. #l bit de acarreo se pone a cero.
Formato
1
ota
REGISTRO
"
/omo sea que la funcin A- de cualquier bit con un uno da como resultado uno, y de cualquier bit con cero, lo deja in'ariable, esta funcin se utiliza frecuentemente para poner a uno "rupos de bits. Si el re"istro : contiene AD( y el acumulador almacena <<(, la instruccin A-A : realiza la si"uiente operacin$ Acumulador Registro B Acumulador ,,! 3! ,3! " " " " " " " "
25
#ste ejemplo concreto "arantiza que los cuatro bits de menos peso del acumulador son unos, mientras que los dems permanecen in'ariables.
A1.,.2.
CM &
Comparar registro o memoria con acumulador Instruccin Bits afectados Direccionamiento CMP reg Z, S, P, CY, AC Registro indirecto
Descripcin
#l contenido del re"istro o posicin de memoria especificados se compara con el contenido del acumulador. #sta comparacin se realiza restando internamente el contenido del re"istro al del acumulador, permaneciendo !ste in'ariable, y colocando los bits de condicin en funcin del resultado. /oncretamente, el bit de cero se pone a uno si las cantidades comparadas son i"uales, y se pone a cero si son desi"uales. /omo sea que se realiza una operacin de resta, el bit de acarreo se pondr a uno si no hay acarreo del bit G, indicando que el contenido del re"istro o posicin de memoria es mayor que el contenido del acumulador, y se pondr a cero si es mayor que el acumulador. Si las dos cantidades difieren en si"no, el acarreo adopta el 'alor contrario a lo anteriormente e2puesto.
Formato
1
"#emplos
REGISTRO
26
1. Si el acumulador almacena %A( y el re"istro : contiene %I(, cuando se realiza la instruccin /86 : Biene lu"ar la si"uiente resta interna$ Acumulador +/ Registro B0 Acumulador A! 2! 2! " " " " " " " " " " "
#2iste acarreo en el bit G por lo que el bit de acarreo se pone a cero. #l acumulador si"ue almacenando %A( y el re"istro :, %I(. ,o obstante, el bit de acarreo se pone a cero, as como el bit de cero, indicando que el contenido del re"istro : es menor que el acumulador. 2. Ahora el acumulador tiene el 'alor %4(. #ntonces$ Acumulador +/ Registro B0 Acumulador &! 2! 3D! " " " "
" " " " " " " " " " "
#n este el bit de acarreo se pone a uno 0no e2iste acarreo del bit G1 y el bit de cero estar a cero, indicando que el contenido del re"istro : es mayor que el acumulador. 3. 6or ltimo supon"amos un 'alor >&:( para el acumulador. #n esta situacin$ Acumulador +/ Registro B0 Acumulador "B! 2! 4 ! " " " " " " " " " " " " " " "
Aqu el bit de acarreo est a cero. /omo los dos n meros difieren en si"no, el hecho de que el bit de acarreo est! a cero indica que el contenido del re"istro :
27
A1.1.
A continuacin se describen las instrucciones que pro'ocan una rotacin del contenido del acumulador. #sta operacin nicamente puede realizarse con el acumulador, no con nin" n re"istro o posicin de memoria.
OPERAC
A1.1.1.
!+ C
R+C CY
28
-L/ rota un bit hacia la izquierda todo el contenido del acumulador, transfiriendo el bit de ms alto orden al bit de acarreo y al mismo tiempo a la posicin de menor orden del acumulador.
Formato
0
"#emplo
Bit de acarreo
Acumulador
A1.1.2.
!! C
RRC CY
--/ rota el contenido del acumulador un bit a la derecha, transfiriendo el bit de ms bajo orden a la posicin de ms alto orden del acumulador, adems pone el bit de acarreo i"ual al bit de menor orden del acumulador.
29
0
"#emplo
Supon"amos que el acumulador contiene D4(. La instruccin --/ realizar la si"uiente operacin sobre el acumulador y el bit de acarreo$
Acumulador
Bit de acarreo
A1.1.3.
!A +
Despla3ar el acumulador 5acia la i34uierda a trav6s del bit de acarreo Instruccin Bits afectados Direccionamiento RA+ CY
Descripcin
-AL hace "irar el contenido del acumulador y el bit de acarreo un espacio de un bit hacia la salida 0izquierda1. #l bit de acarreo que es tratado como si fuera del
30
acumulador, se transfiere el bit de menor orden del acumulador. #l bit de mayor orden del acumulador se transfiere al bit de acarreo. ,o tiene operandos.
Formato
0
"#emplo
Supon"amos que el acumulador contiene :I(. La instruccin -AL efectuar las si"uientes modificaciones en el re"istro acumulador y en el bit de acarreo$
Bit de acarreo
Acumulador
A1.1.$.
!A !
Despla3ar el acumulador 5acia la derec5a a trav6s del bit de acarreo Instruccin Bits afectados Direccionamiento RAR CY
Descripcin
-A- rota el contenido del acumulador y del bit de acarreo & bit de posicin a la derecha. #l bit de acarreo que es tratado como si fuera parte del acumulador se transfiere al bit de ms alto orden del acumulador. #l bit de menor peso del acumulador
31
0
"#emplo
#n este caso el acumulador contendr el 'alor @A(. La instruccin -AL efectuar las si"uientes modificaciones en el re"istro acumulador y en el bit de acarreo$
Acumulador
Bit de acarreo
32
A1.2.
A continuacin se describen las instrucciones que dan lu"ar a operaciones con pares de re"istros. A1.2.1. &.S 7 Colocar datos en stac8
#l contenido del par de re"istros especificado se "uarda en dos bytes de memoria definidos por el puntero de stacJ. #l contenido del primer re"istro se "uarda en la posicin de memoria inmediatamente inferior a la del puntero de stacJ. #l contenido del se"undo re"istro del par se "uarda en la posicin de memoria dos unidades inferior al puntero de stacJ. Si se hace referencia al para de re"istros 6SK, en el primer byte de informacin se "uarda el estado de los cinco bits de condicin. #l formato de este byte es el si"uiente$
33
signo
cero
arrrastre au5iliar
*aridad
"
acarreo
Sea cual sea el par de re"istros especificado, una 'ez que los datos se han "uardado, el puntero de pila se decrementa en dos unidades.
Formato
pr
1 00 para registros B # C01 para registros D # E10 para registros H # L11 para $its de %o&di%i'& # reg( A
B, D, ! o PS7
"#emplos
1. Supon"amos que el re"istro : contiene <D(, el re"istro / contiene &@( y el puntero de pila 'ale 4%<%(. La instruccin 6HS( : almacenar el contenido del re"istro : en posicin de memoria 4%4)(, el contenido del re"istro / en la direccin de memoria 4%4*(, y decrementa dos unidades el puntero de stacJ, dejndolo en 4%4*(. Frficamente podemos 'er el proceso anterior$ Antes de P.S! Puntero stac6 & , Registro B ,3 Registro C "$
34
M4M'RIA
Des*u9s de P.S! Puntero stac6 & &1 Registro B ,3 M4M'RIA "$ ,3 Registro C "$ DIR4CCI'N & && &1 & &8 & ,
2. Supon"amos ahora que el acumulador contiene <<(, el puntero de pila tiene &%4A(, y los bits de condicin de cero, acarreo y paridad estn a uno, mientras que los de si"no y acarreo au2iliar estn a cero. La instruccin 6HS( 6SK Almacena el contenido del acumulador en la posicin de memoria &%4*(, y coloca el 'alor 3G(, correspondiente a los citados estados de los bits de condicin, en la posicin &%4)(, mientras que en el puntero de pila queda el 'alor &%4*(.
A1.2.2.
&% &
35
6A6 6- copia el contenido de la posicin de memoria direccionada por el stacJ pointer en el re"istro de bajo orden del par de re"istros especificados. A continuacin se incrementa el stacJ pointer en & y copia el contenido de la direccin resultante en el re"istro de ms alto orden del par. Lue"o se incrementa el stacJ pointer otra 'ez de modo que se apunta al si"uiente dato del stacJ. #l operando debe especificar el par de re"istros :/, .#, (L o 6SK. 6A6 6SK usa el contenido de la localizacin de memoria especificada por el stacJ pointer para restablecer los bits de condiciones.
Formato
pr
1 00 para registros B # C01 para registros D # E10 para registros H # L11 para $its de %o&di%i'& # reg( A
B, D, ! o PS7
"#emplos
1. Supon"amos que las posiciones de memoria 4%4*( y 4%4)( contienen respecti'amente &@( y <D(, mientras que el puntero de pila contiene 4%4*(. La instruccin 6A6 : /ar"a el re"istro / con el 'alor de &@( de la posicin de memoria 4%4*(, car"a el re"istro : con el 'alor <D( de la posicin 4%4)(, e incrementa dos unidades el puntero de stacJ, dejndolo en 4%<%(. Frficamente podemos 'er este proceso$
36
Des*u9s de P'P Puntero stac6 & , Registro B ,3 M4M'RIA "$ ,3 Registro C "$ DIR4CCI'N & && &1 & &8 & ,
M4M'RIA "$ ,3
2. Si las posiciones de memoria &%%*( y &%%)( poseen respecti'amente %%( y &@(, y el puntero de pila 'ale &%%*(, la instruccin 6A6 6SK car"a %%( en el acumulador y pone los bits de estado de la si"uiente forma$ S "$: ; Z AC " P " CY "
A1.2.3.
DA D
Suma doble
DAD *r CY
37
Direccionamiento
Registro
Descripcin
.A. -6 suma el 'alor de un dato de &@ bits contenido en un determinado par de re"istros 06-1 al contenido del par de re"istros (L. #l resultado es almacenado en el par (L. Los operandos 06-1 pueden ser : ; :/, . ; .#, ( ; (L, S6. B!n"ase en cuenta que la letra ( debe ser empleada para especificar que el par de re"istros (L debe ser doblado. .A. pone el bit de acarreo a & si hay una salida de acarreo de los re"istros (L. L adems no afecta a nin" n otro bit.
Formato
pr
1 00 para registros B # C01 para registros D # E10 para registros H # L11 para registros de p)&tero de pi*a
B, D, ! o SP
"#emplos
1. Supuesto que los re"istros ., #, ( y L contienen <<(, )D(, A&( y G:( respecti'amente, la instruccin .A. . -ealiza la si"uiente suma$ B;C !;+ !;+ ,,83 A"-B 2"A
38
2. Al ejecutar la instruccin .A. ( se duplica el 'alor del n mero de &@ bits contenido en ( > L 0equi'ale a desplazar los &@ bits una posicin hacia la izquierda1.
A1.2.$.
I *
IN) *r Registro
#l n mero de &@ bits contenido en el par de re"istros especificado se incrementa en una unidad.
Formato
pr
1 00 para registros B # C01 para registros D # E10 para registros H # L11 para registros de p)&tero de pi*a
B, D, ! o SP
"#emplos
39
+,E ( hace que el re"istro ( conten"a <%( y el re"istro L el 'alor %&(. 2. Si el puntero de pila contiene DDDD(, la instruccin +,E S6 hace que !ste conten"a %%%%(.
A1.2.'.
DC *
DCR *r Registro
#l n mero de &@ bits contenido en el par de re"istros especificado se decrementa en una unidad.
Formato
pr
1 00 para registros B # C01 para registros D # E10 para registros H # L11 para registros de p)&tero de pi*a
B, D, ! o SP
"#emplo
40
Suponiendo que los re"istros ( y L contienen respecti'amente <%( y %%(, la instruccin ./E ( hace que el re"istro ( conten"a 4D( y el re"istro L el 'alor DD(. A1.2.,. *C7 9 Intercambiar datos entre registros
)C!< Registro
1
"#emplo
Si los re"istros (, L, . y # contienen respecti'amente %&(, %4(, %<( y %3(, la instruccin E/(F realiza el si"uiente intercambio$ Antes de e=ecutar )C!< D , 4 > ! " + & D " Des*u9s de e=ecutar )C!< 4 & ! , + >
A1.2.1.
*T7+
41
Registro indirecto
EB(L cambia los dos bytes de la posicin ms alta del stacJ con los dos bytes almacenados en los re"istros ( y L. As EB(L sal'a el contenido actual del par (L y car"a nue'os 'alores en (L. EB(L cambia el contenido del L con la posicin de memoria especificada por el stacJ pointer y el re"istro ( es intercambiado con el contenido del S67&.
Formato
1
"#emplo
Si el puntero de pila contiene 3%:3(, los re"istros ( y L contienen AA( y ::( respecti'amente, y las posiciones de memoria 3%:3( y 3%:I( contienen //( y ..( respecti'amente, la instruccin EB(L realizar la si"uiente operacin$
42
Antes de )T!+ Puntero stac6 > B> Registro ! AA M4M'RIA ? ? CC DD ? ? Registro + BB DIR4CCI'N ? ? > B, > B> > B2 > B$ ? ?
Des*u9s de )T!+ Puntero stac6 > B> Registro ! DD M4M'RIA ? ? BB AA ? ? Registro + CC DIR4CCI'N ? ? > B, > B> > B2 > B$ ? ?
A1.2.2.
S&7 +
Cargar el puntero de stac8 desde los registros 7 - + Instruccin Bits afectados Direccionamiento SP!+
Descripcin
43
Los &@ bits contenidos en los re"istros ( y L reemplazan el contenido del puntero de stacJ. #l contenido de los re"istros ( y L permanece in'ariable.
Formato
1
"#emplo
Si los re"istros ( y L contienen respecti'amente I%( y @/(, la instruccin S6(L car"a el puntero de stacJ con el 'alor I%@/(.
A1.:.
A continuacin se describen las instrucciones que realizan operaciones utilizando bytes de datos que forman parte de la propia instruccin. #stas instrucciones forman un "rupo amplio en el que no todas tienen la misma lon"itud y formato. Las instrucciones ocupan dos o tres bytes del si"uiente modo$
44
0 0
pr
0 0 0 1
00 para registros B # C01 para registros D # E10 para registros H # L11 para registro p)&tero de pi*a
0 0
REG
1 1 0
Datos 000 para registro B001 para registro C010 para registro D011 para registro E100 para registro H101 para registro L110 para MEMORIA111 para ACUMULADOR
3. 6or ltimo, para el resto de las instrucciones, que ocupan 4 bytes, se cuenta con este formato$
1 1
OPER
1 1 0
Datos
45
000 para i&str)%%i'& ADI001 para i&str)%%i'& ACI010 para i&str)%%i'& SUI011 para i&str)%%i'& SBI100 para i&str)%%i'& A"I101 para i&str)%%i'& XRI110 para i&str)%%i'& DRI111 para i&str)%%i'& CPI
La instruccin LE+ opera sobre el par de re"istros especificado por 6-, usando dos bytes de datos inmediatos. La instruccin 89+ opera sobre el re"istro especificado por -#F, usando un byte de datos inmediatos. Si se hace referencia a la memoria, la instruccin opera sobre la posicin de memoria de la misma determinada por los re"istros ( y L. #l re"istro ( contiene los * bits ms si"nificati'os de la direccin, mientras que el re"istro L contiene los * bits menos si"nificati'os. Las restantes instrucciones operan sobre el acumulador, usando un byte de datos inmediatos. #l resultado sustituye al contenido del acumulador.
A1.:.1.
+*I
Cargar un par de registros con un dato Inmediato Instruccin Bits afectados Direccionamiento +)I *r, datos Inmediato
Descripcin
LE+ es una instruccin de < bytes5 su se"undo y tercer byte contienen el dato que ha de ser car"ado en el par de re"istros 06-1. #l primer operando debe especificar el par de re"istros a ser car"ados, pueden ser los pares :/, .#, (L, o el S6. #l se"undo operando especifica los dos bytes a ser car"ados. LE+ es la nica instruccin inmediata que acepta un 'alor de &@ bits. #l resto trabajan con datos de * bits.
46
Si el par de re"istros especificados es S6, el se"undo byte de la instruccin sustituye a los * bits menos si"nificati'os del puntero de pila, mientras que el tercer byte de la instruccin reemplaza a los * bits ms si"nificati'os del puntero de pila.
Formato
0 0
pr
0 0 0 1
B, D, ! o SP
00 para registros B # C01 para registros D # E10 para registros H # L11 para registro p)&tero de pi*a
"#emplos
1. La instruccin LE+ :, %%DD( car"a en el re"istro : el 'alor %%( y en el re"istro / el 'alor DD(. 2. La si"uiente instruccin car"a en el puntero de pila el 'alor &%%%( LE+ S6, &%%%(
A1.:.2.
M) I
47
#l primer operando debe ser uno de los re"istros A, :, /, ., #, ( o L, que ser car"ado con el dato especificado en el se"undo operando 0.ABAS1. #l dato no debe e2ceder de un byte.
Formato
0 0
REG
1 1 0
Datos 00 para registros B # C01 para registros D # E10 para registros H # L11 para registro p)&tero de pi*a
A, B, C, D, 4, !, + o M
"#emplos
0&1.La instruccin 89+ (, <<( car"a en el re"istro ( el 'alor <<(. 041.La instruccin 89+ L, 33( car"a en el re"istro L el 'alor 33(. 0<1.Supuestos los dos ejemplos anteriores, la instruccin 89+ 8, 4A(
48
car"a en la posicin de memoria <<33( 0direccin aportada por los re"istros ( y L1 el 'alor 4A(.
A1.:.3.
ADI
Sumar al acumulador un dato Inmediato Instruccin Bits afectados Direccionamiento ADI datos Z, S, P, CY, AC Inmediato
Descripcin
Suma el 'alor del byte especificado en la instruccin 0.ABAS1, al contenido del acumulador y deja el resultado en el acumulador. #l dato debe ser e2presado en forma de n mero, un AS/++ constante, la etiqueta de un 'alor pre'iamente definido o una e2presin. #l dato no debe e2ceder de un byte. Se utiliza aritm!tica de complemento a dos.
Formato
1 1 0 0 0 1 1 0
"#emplo
Datos
A continuacin presentamos un ejemplo con < instrucciones$ 0&1.89+ A, <3 041.A.+ 4% 0<1.A.+ C4% #n todas las instrucciones se utilizan datos en base decimal. As, por ejemplo, en la instruccin 041 el 'alor 4% es &3(. La instruccin 0&1 car"a en el acumulador el 'alor 44(.
49
La instruccin 041 realiza la si"uiente suma$ Acumulador Dato inmediato Nue%o acumulador &&! ">! ,,! " " " " " " " "
#l bit de paridad se pone a uno y el resto se quedan a cero. La instruccin 0<1 restaura el 'alor del acumulador realizando la si"uiente suma$ Acumulador Dato inmediato Nue%o acumulador ,,! 4C! &&! " " " " " " " " " " "
Ahora los bits de paridad, acarreo y acarreo au2iliar se quedan a uno y el resto a cero.
A1.:.$.
ACI
Sumar al acumulador un dato Inmediato con arrrastre Instruccin Bits afectados Direccionamiento ACI datos Z, S, P, CY, AC Inmediato
Descripcin
Suma el contenido del byte especificado 0.ABAS1 en la instruccin, al contenido del acumulador, aMadiendo adems el bit del acarreo. #l resultado se almacena en el acumulador 0perdi!ndose as el anterior contenido del Acumulador1. #l dato 0.ABAS1 debe estar especificado en forma de n mero, en AS/++ constante, como etiqueta de un 'alor pre'iamente definido o una e2presin. #l dato no debe e2ceder de un byte.
50
Formato
1 1 0 0 1 1 1 0
"#emplo
Datos
Benemos las si"uientes instrucciones$ 0&1.89+ A, <3 041.A/+ 4% y suponemos el bit de acarreo puesto a uno. La instruccin 0&1 car"a en el acumulador el 'alor 44(. La instruccin 041 realiza la si"uiente suma$ Acumulador Dato inmediato Bit de acarreo Nue%o acumulador &&! ">! " " " " ,-! " " " " " "
A1.:.'.
S.I
!estar del acumulador un dato Inmediato Instruccin Bits afectados Direccionamiento S.I datos Z, S, P, CY, AC Inmediato
Descripcin
51
#l byte de datos inmediato se resta del contenido del acumulador usando aritm!tica de complemento a dos. #l resultado se deja en el acumulador. La que se trata de una operacin de resta, el bit de acarreo se pone a uno cuando no hay acarreo del bit de ms peso, y se pone a cero si tiene dicho acarreo.
Formato
1 1 0 1 0 1 1 0
Datos
"#emplo
A continuacin presentamos un ejemplo con 4 instrucciones$ 0&1.89+ A, :<( 041.SH+ :<( La instruccin 0&1 car"a en el acumulador el 'alor :<(. La instruccin 041 realiza la si"uiente suma 0usando el complemento a dos del dato inmediato1$ Acumulador Dato inmediato Nue%o acumulador B,! $D! ! " " " " " " " " "
/omo era de esperar el resultado final del acumulador es cero ya que le estamos restando su propio 'alor. #l 'alor @.( del dato inmediato corresponde al complemento a dos del 'alor :<( que estamos restando. .ebido a que e2iste desbordamiento del s!ptimo bit se produce acarreo y se pone el bit de acarreo a cero.
52
#l bit de paridad se pone a uno mientras que los dems permanecen inacti'os.
A1.:.,.
S/I
!estar del acumulador un dato Inmediato con arrrastre Instruccin Bits afectados Direccionamiento SBI datos Z, S, P, CY, AC Inmediato
Descripcin
#l bit de acarreo se suma internamente al byte de datos inmediato. #l 'alor obtenido se resta del contenido del acumulador usando aritm!tica de complemento a dos. #l resultado se deja en el acumulador. #sta instruccin, al i"ual que S::, se usa preferentemente para realizar restas multiCbyte. Al i"ual que en el apartado anterior, el bit de acarreo se pone a uno si no hay acarreo del bit de ms peso, poni!ndose a cero si lo hay.
Formato
1 1 0 1 1 1 1 0
"#emplo
Datos
Benemos las si"uientes instrucciones$ 0&1.89+ A, %%( 041.S:+ %&( y suponemos el bit de acarreo puesto a cero.
53
La instruccin 0&1 car"a en el acumulador el 'alor %%(. La instruccin 041 realiza la si"uiente suma 0usando el complemento a dos del dato inmediato1$ Acumulador Dato inmediato Bit de acarreo Nue%o acumulador ! 33!
@ "!
,o hay acarreo, por lo que el bit de acarreo se pone a uno. Los bits de cero y acarreo au2iliar estn a cero, mientras que los de si"no y paridad se ponen a uno.
A1.:.1.
A I
Funcin lgica A D entre el acumulador - un Dato Inmediato Instruccin Bits afectados Direccionamiento ANI datos Z, S, P, CY, AC Inmediato
Descripcin
-ealiza una operacin L l"ica entre el dato 0.ABAS1 especificado en la instruccin y el contenido del acumulador, el resultado queda en el acumulador. Se pone a cero el bit de acarreo. #l dato, que no debe e2ceder de un byte, puede ser e2presado en forma de n mero, un AS/++ constante, la etiqueta de al" n 'alor pre'iamente definido o una e2presin.
Formato
1 1 1 0 0 1 1 0
Datos
54
"#emplo
.isponemos de las si"uientes instrucciones$ 0&1.89+ A, A%( 041.A,+ %D( La instruccin 0&1 car"a en el acumulador el 'alor A%(. La instruccin 041 realiza la si"uiente operacin A,. bit a bit entre el acumulador y el dato inmediato %D($ Acumulador Dato inmediato Nue%o acumulador A ! '3! ! " " " " " "
La instruccin A,+ del ejemplo pone a cero los cuatro bits de mayor peso, dejando in'ariables los cuatro menores. La que los cuatro bits de menor peso del acumulador eran cero, el resultado final es %%( con lo que el bit de cero se pondr a cero.
A1.:.2.
*!I
Funcin lgica %0"*C+.SI)% entre el acumulador - un dato Inmediato Instruccin Bits afectados Direccionamiento )RI datos Z, S, P, CY, AC Inmediato
Descripcin
Se realiza la funcin l"ica AC#E/LHS+9A bit a bit entre un byte de datos inmediatos y el contenido del acumulador. #l resultado se "uarda en el acumulador. #l bit de acarreo se pone a cero.
55
1 1 1 0 1 1 1 0
Datos
"#emplo
#sta instruccin se suele utilizar para complementar bits especficos del acumulador dejando los restantes en su estado ori"inal. .e este modo y suponiendo que el acumulador contiene A:(, la instruccin E-+ *%( complementa el bit de ms peso del acumulador, tal y como se muestra en la si"uiente fi"ura$ Acumulador Dato inmediato Nue%o acumulador AB! 1 ! &B! " " " " " "
"
"
" "
A1.:.:.
%!I
Funcin lgica %! entre el acumulador - un dato Inmediato Instruccin Bits afectados Direccionamiento 'RI datos Z, S, P, CY, AC Inmediato
Descripcin
A-+ desarrolla una operacin l"ica A- entre el contenido especificado por .ABAS y el contenido del acumulador. #l resultado se deja en el acumulador. Los bits de acarreo y acarreo au2iliar se ponen a cero.
56
Formato
1 1 1 1 0 1 1 0
Datos
"#emplo
Si el acumulador inicialmente contiene </(, la instruccin A-+ D%( realiza la si"uiente operacin A- bit a bit$ Acumulador Dato inmediato Nue%o acumulador ,C! 3 ! 3C! " " " " " " " " " " " " " "
/omo 'emos la instruccin A-+ de nuestro ejemplo acti'a los cuatro bits de menor peso, dejando in'ariables los restantes.
A1.:.1;.
C&I
Comparar el contenido del acumulador con un dato Inmediato Instruccin Bits afectados Direccionamiento CPI datos Z, S, P, CY, AC Registro indirecto
Descripcin
/ompara el 'alor del byte especificado 0.ABAS1 con el contenido del acumulador y posiciona los bits de cero y acarreo para indicar el resultado. #l bit de cero indica i"ualdad. Hn % en el acarreo indica que el contenido del acumulador es mayor que
57
.ABAS. Hn & en el acarreo indica que el acumulador es menor que .ABAS. Sin embar"o, el si"nificado del bit de acarreo es contrario cuando los 'alores tienen diferente si"no o cuando uno de los 'alores est complementado. #l 'alor de .ABAS no debe e2ceder de un byte.
Formato
1 1 1 1 1 1 1 0
Datos
"#emplo
Si tenemos la secuencia de instrucciones 0&1.89+ A, 4I( 041./6+ 4%( La instruccin 0&1 car"a en el acumulador el 'alor 4I(. La instruccin 041 realiza la si"uiente operacin de suma 0tomando el complemento a dos del dato inmediato, es decir, #&(1$ Acumulador Dato inmediato Nue%o acumulador &2! 4"! ,! " " " " " " " " "
#2iste desbordamiento del ltimo bit, por lo que el bit de acarreo se pone a cero. #l acumulador continua con su 'alor inicial pero el bit de cero est a cero, indicando que las cantidades no son i"uales. Al estar el bit de acarreo a cero, nos indica que los datos inmediatos son menores que el contenido del acumulador.
58
A1.1;.
A continuacin se describen las instrucciones que hacen referencia a una posicin de memoria especfica, cuyos dos bytes de direccin forman parte de la propia instruccin. Las instrucciones de este tipo ocupan tres bytes en la forma si"uiente$
0 0 1 OPER 0 1 0 Parte $a+a de *a dire%%i'& Parte a*ta de *a dire%%i'& 00 para i&str)%%i'& STA01 para i&str)%%i'& LDA10 para i&str)%%i'& SHLD11 para i&str)%%i'& LHLD
A1.1;.1.
ST A
Almacenamiento directo desde el Acumulador Instruccin Bits afectados Direccionamiento STA dir Directo
Descripcin
SBA .+- almacena una copia del contenido actual del acumulador en la posicin de memoria especificada por .+-.
Formato
59
Bodas las instrucciones que se muestran a continuacin introducen el contenido del acumulador en la posicin de memoria %%*%($ SBA %%*%( SBA &4* SBA %%%%%%%%&%%%%%%%: NN :ase he2adecimal NN :ase decimal NN :ase binaria
A1.1;.2.
+D A
L.A .+- car"a el acumulador con el contenido de la memoria direccionada por .+-. La direccin puede ser puesta como un n mero, una etiqueta pre'iamente definida o una e2presin.
Formato
Bodas las instrucciones que se muestran a continuacin introducen en el acumulador el contenido de la posicin de memoria <%%($ L.A <%%( L.A < O 0&@ O &@1 L.A 4%%( 7 4I@
60
A1.1;.3.
S7+ D
Almacena una copia del re"istro L en la posicin de memoria especificada por .+-, a continuacin almacena una copia del re"istro ( en la si"uiente posicin de memoria 0.+-7&1.
Formato
Suponiendo que los re"istros ( y L contienen respecti'amente los 'alores </( y I3(, la instruccin S(L. <3:< efectuar las si"uientes modificaciones en memoria$
61
33 33
,>B> ,>B2
,C 33
A1.1;.$.
+7+ D
Cargar 7 - + directamente
L(L. .+- car"a el re"istro L con una copia del byte almacenado en la posicin de memoria especificada por .+-. .espu!s car"a el re"istro ( con una copia del byte almacenado en la posicin si"uiente de memoria especificada por .+-. La instruccin L(L. esta pre'ista para car"ar direcciones nue'as en los re"istros ( y L.
Formato
#n el caso en el que las posiciones de memoria A:43( y A:4I( conten"an respecti'amente 44( y <<(, la ejecucin de la instruccin L(L. A:43( har que el re"istro L conten"a 44( y el re"istro ( conten"a <<(.
62
A1.11.
Instrucciones de salto
A continuacin se describen las instrucciones que modifican la secuencia normal de ejecucin de las instrucciones de un pro"rama. #stas instrucciones ocupan uno o tres bytes en la forma si"uiente$
1 1 1 0 1 0 0 1
1 1
OPER
0 1 X Parte $a+a de *a dire%%i'& Parte a*ta de *a dire%%i'& 1 para ,MP . 0 para e* resto 000 para i&str)%%i'& ,MP o ,"-001 para i&str)%%i'& ,-010 para i&str)%%i'& ,"C011 para i&str)%%i'& ,C100 para i&str)%%i'& ,P0101 para i&str)%%i'& ,PE110 para i&str)%%i'& ,P111 para i&str)%%i'& ,M
63
/iertas instrucciones de tres bytes de este tipo pro'ocan un cambio en la secuencia normal de operaciones en la ejecucin de un pro"rama se" n unas determinadas condiciones. Si la condicin especfica es 'erdadera, la ejecucin del pro"rama contin a en la direccin de memoria formada por la parte alta 0tercer byte de la instruccin1, y los ocho bits de la parte baja 0se"undo byte de la instruccin1. Si la condicin especfica es falsa, la ejecucin del pro"rama contin a en la pr2ima instruccin en secuencia.
A1.11.1.
&C7 +
PC!+ Registro
6/(L car"a el contenido de los re"istros ( y L en el contador de pro"rama. /omo el procesador busca la si"uiente instruccin en la si"uiente direccin del contador de pro"rama, 6/(L tiene el efecto de una instruccin de salto. #l contenido de ( 'a a los * bits ms altos de contador de pro"rama y el contenido de L 'a a los * bits ms bajos.
Formato
1 1 1 0 1 0 0 1
"#emplo
64
A1.11.2.
<M&
Descripcin
La instruccin P86 .+- altera la ejecucin del pro"rama car"ando el 'alor especificado por .+- en el contador de pro"rama.
Formato
A1.11.3.
<C
Descripcin
La instruccin P/ .+- comprueba el 'alor del bit de acarreo. Si es un & la ejecucin del pro"rama contin a en la direccin especificada por .+-. Si es un % el pro"rama contin a su ejecucin normal de forma secuencial.
65
A1.11.$.
< C
Saltar si no 5a- acarreo Instruccin Bits afectados Direccionamiento BNC dir Inmediato
Descripcin
La instruccin P,/ .+- comprueba el estado del bit acarreo. Si esta a % el pro"rama cambia a la direccin especificada por .+-. Si esta a & la ejecucin del pro"rama contin a normalmente.
Formato
A1.11.'.
<=
Descripcin
La instruccin PQ .+- comprueba el bit de cero. Si est a & el pro"rama contin a en la direccin e2presada por .+-. Si est a % contin a con la ejecucin secuencial normal.
66
Formato
A1.11.,.
< =
Saltar si no 5a- cero Instruccin Bits afectados Direccionamiento BNZ dir Inmediato
Descripcin
La instruccin P,Q .+- comprueba el 'alor del bit de cero. Si el contenido del acumulador no es cero 0:it de cero ; %1 el pro"rama contin a en la direccin especificada por .+-. Si el contenido del acumulador es cero 0:it de cero ; &1 el pro"rama contin a su ciclo normal.
Formato
A1.11.1.
<M
Saltar si 5a- signo negativo Instruccin Bits afectados Direccionamiento BM dir Inmediato
Descripcin
La instruccin P8 .+- comprueba el estado del bit de si"no. Si el contenido del acumulador es ne"ati'o 0bit de si"no ; &1 la ejecucin del pro"rama contin a en la
67
direccin especificada por .+-. Si el contenido del acumulador es positi'o 0bit de si"no ; %1 contin a la ejecucin de la secuencia normal.
Formato
1 1 1 1 1 0 1 0 Parte $a+a de *a dire%%i'& Parte a*ta de *a dire%%i'& A1.11.2. <& Saltar si 5a- signo positivo Instruccin Bits afectados Direccionamiento
Descripcin
BP dir Inmediato
La instruccin P6 .+- comprueba el estado de bit del si"no. Si el contenido del acumulador es positi'o 0bit de si"no ; %1 la ejecucin del pro"rama contin a con la direccin especificada por .+-. Si el contenido del acumulador es ne"ati'o 0bit de si"no ; &1 contin a el pro"rama con su ejecucin normal.
Formato
A1.11.:.
<&"
Saltar si la paridad es par Instruccin Bits afectados Direccionamiento BP4 dir Inmediato
Descripcin
La paridad e2iste si el byte que esta en el acumulador tiene un n mero par de bits. #l bit de paridad se pone a & para indicar esta condicin.
68
La instruccin P6# .+- comprueba la situacin del bit de paridad. Si esta a &, la ejecucin del pro"rama contin a en la direccin especificada por .+-. Si esta a %, contin a con la si"uiente instruccin de forma secuencial. Las instrucciones P6# y P6A son especialmente usadas para comprobar la paridad de los datos de entrada. 0Sin embar"o con la instruccin +, los bits no act an. #sto puede e'itarse sumando %%( al acumulador para acti'arlos1.
Formato
A1.11.1;.
<&;
Saltar si la paridad es impar Instruccin Bits afectados Direccionamiento BP' dir Inmediato
Descripcin
La instruccin P6A .+- comprueba el estado del bit de paridad. Si esta a %, el pro"rama contin a en la direccin marcada por .+-. Si est a & contin a con la secuencia normal.
Formato
69
A1.12.
A continuacin se describen las instrucciones que llaman a subrutinas. #stas instrucciones operan en la misma forma que las instrucciones de salto, pro'ocando una alteracin en la secuencia de ejecucin de las instrucciones, pero adems, en el momento de su ejecucin, se almacena en la pila una direccin de retorno, que es utilizada por las instrucciones de -#BA-,A 0'er instrucciones de -etorno de Subrutinas en este mismo captulo1. Las instrucciones de este tipo utilizan tres bytes en el formato si"uiente$
1 1
OPER
1 0 X Parte $a+a de *a dire%%i'& Parte a*ta de *a dire%%i'& 1 para CALL . 0 para e* resto 000 para i&str)%%i'& C"- o CALL001 para i&str)%%i'& C-010 para i&str)%%i'& C"C011 para i&str)%%i'& CC100 para i&str)%%i'& CP0101 para i&str)%%i'& CPE110 para i&str)%%i'& CP111 para i&str)%%i'& CM
#n las instrucciones de llamada, las instrucciones se codifican como en las instrucciones de salto, es decir, almacenando en primer lu"ar el byte de direccin de memoria menos si"nificati'o.
70
A1.12.1.
CA++
+lamada incondicional Instruccin Bits afectados Direccionamiento CA++ dir Inmediato C Registro indirecto
71
/ALL "uarda el contenido del contador de pro"rama 0la direccin de la pr2ima instruccin secuencial1 dentro del stacJ y a continuacin salta a la direccin especificada por .+-. /ada instruccin /ALL o al"una de sus 'ariantes implica una instruccin -#B 0retorno1, de lo contrario el pro"rama podra "perderse" con consecuencias impredecibles. La direccin debe ser especificada como un n mero, una etiqueta, o una e2presin. La etiqueta es lo ms normal 0#l ensamblador in'ierte los bytes alto y bajo de direccin durante el proceso de ensamblado1. Las instrucciones /ALL se emplean para llamadas a subrutinas y debemos tener presente que siempre emplean el stacJ.
Formato
A1.12.2.
CC
+lamar si 5a- acarreo Instruccin Bits afectados Direccionamiento CC dir Inmediato C Registro indirecto
Descripcin
// comprueba el estado del bit de acarreo. Si el bit est a &, // car"a el contenido del contador de pro"rama en el stacJ y a continuacin salta a la direccin especificada por .+-. Si el bit esta a %, la ejecucin del pro"rama contin a con la pr2ima instruccin de su secuencia normal. Aunque el uso de una etiqueta es lo ms normal, la direccin puede ser especificada tambi!n como un n mero o una e2presin.
Formato
72
A1.12.3.
C C
+lamar si no 5a- acarreo Instruccin Bits afectados Direccionamiento CNC dir Inmediato C Registro indirecto
Descripcin
/,/ chequea el 'alor del bit de acarreo. Si est en cero /,/ car"a el contenido de contador de pro"rama en el stacJ y a continuacin salta a la direccin especificada por la instruccin en .+-. Si el bit est a &, el pro"rama contin a con su secuencia normal. Aunque el uso de una etiqueta es lo ms com n, la direccin puede tambi!n estar indicada por un n mero o por una e2presin.
Formato
A1.12.$.
C=
+lamar si 5a- cero Instruccin Bits afectados Direccionamiento CZ dir Inmediato C Registro indirecto
Descripcin
/Q chequea el bit de cero. Si el bit esta a & 0indicando que el contenido del acumulador es cero1, /Q car"a el contenido del contador de pro"rama en el stacJ y salta a la direccin especificada en .+-. Si el bit est a % 0indicando que el contenido del acumulador es distinto de cero1 el pro"rama contin a su desarrollo normal.
Formato
73
1 1 0 0 1 1 0 0 Parte $a+a de *a dire%%i'& Parte a*ta de *a dire%%i'& A1.12.'. C = +lamar si no 5a- cero Instruccin Bits afectados Direccionamiento
Descripcin
/,Q chequea el bit de /ero. Si est en % 0indicando que el contenido del acumulador no es cero1, /,Q manda el contenido del contador de pro"rama al stacJ y salta a la direccin especificada por .+-. Si el bit est a & el pro"rama contin a su desarrollo normal.
Formato
A1.12.,.
CM
+lamar si 5a- signo negativo Instruccin Bits afectados Direccionamiento CM dir Inmediato C Registro indirecto
Descripcin
/8 comprueba el estado del bit del si"no. Si el bit esta a & 0indicando que el contenido del acumulador es ne"ati'o1 /8 manda el contenido del contador de pro"rama al stacJ y salta a la direccin especificada por .+-. Si el bit es % la ejecucin del pro"rama contin a con su secuencia normal. #l uso de la etiqueta es lo ms corriente, pero la direccin puede especificarse tambi!n por un n mero o una e2presin.
74
Formato
1 1 1 1 1 1 0 0 Parte $a+a de *a dire%%i'& Parte a*ta de *a dire%%i'& A1.12.1. C& +lamar si 5a- signo positivo Instruccin Bits afectados Direccionamiento
Descripcin
/6 chequea el 'alor del bit de si"no. Si est a % 0indicando que el contenido del acumulador es positi'o1, /6 en'a el contenido del contador de pro"rama al stacJ y salta a la direccin especificada por .+-. Si el bit tiene un &, contin a el pro"rama normalmente con la instruccin si"uiente.
Formato
A1.12.2.
C&"
+lamar si la paridad es par Instruccin Bits afectados Direccionamiento CP4 dir Inmediato C Registro indirecto
Descripcin
#2iste paridad en un byte si el n mero de unos que tiene es par. #l bit de paridad se pone a & para indicar esta condicin. /6# chequea el 'alor del bit de paridad. Si tiene un &, /6# en'a el contenido del contador de pro"rama al stacJ y salta a la direccin especificada por la instruccin en .+-. Si el bit tiene un cero, el pro"rama contin a normalmente.
75
Formato
1 1 1 0 1 1 0 0 Parte $a+a de *a dire%%i'& Parte a*ta de *a dire%%i'& A1.12.:. C&% +lamar si la paridad es impar Instruccin Bits afectados Direccionamiento
Descripcin
/6A chequea el bit de paridad. Si el bit esta a %, /6A car"a el contenido del contador de pro"rama en el stacJ y salta a la direccin especificada en .+-. Si el bit est a & el pro"rama contin a su desarrollo normal.
Formato
76
A1.13.
A continuacin se describen las instrucciones utilizadas para realizar un retorno desde las subrutinas. #stas instrucciones colocan en el contador de pro"rama la direccin. Las instrucciones de este tipo utilizan un byte en el formato si"uiente$ ltima direccin puesta en la pila, haciendo que la ejecucin del pro"rama contin e en esta
1 1
OPER
1 0 X
1 para RET . 0 para e* resto 000 para i&str)%%i'& R"- o RET001 para i&str)%%i'& R-010 para i&str)%%i'& R"C011 para i&str)%%i'& RC100 para i&str)%%i'& RP0101 para i&str)%%i'& RPE110 para i&str)%%i'& RP111 para i&str)%%i'& RM
/iertas instrucciones de este tipo realizan la operacin de retorno bajo ciertas condiciones especficas. Si la condicin especificada se cumple 0es 'erdadera1, tendr lu"ar la operacin de retorno. 6or el contrario, si la condicin no se cumple, la ejecucin del pro"rama continuar en la pr2ima instruccin en secuencia.
77
A1.13.1.
!"T
Descripcin
Se realiza una operacin de retorno incondicional. La instruccin -#B echa fuera dos bytes de datos del stacJ y los mete en el re"istro contador de pro"rama. #l pro"rama contin a entonces en la nue'a direccin. ,ormalmente -#B se emplea conjuntamente con /ALL.
Formato
1 1 0 0 1 0 0 1
A1.13.2.
!C
Descripcin
La instruccin -/ comprueba el estado del bit de acarreo. Si tiene un & 0indicando que hay acarreo1 la instruccin saca dos bytes del stacJ y los mete en el contador de pro"rama. #l pro"rama contin a en la nue'a direccin suministrada. Si el bit es %, el pro"rama contin a en la si"uiente instruccin de la secuencia normal.
Formato
78
1 1 0 1 1 0 0 0
A1.13.3.
! C
!etorno si no 5a- acarreo Instruccin Bits afectados Direccionamiento RNC Registro indirecto
Descripcin
La instruccin -,/ comprueba el bit de acarreo. Si est a % indicando que no hay acarreo, la instruccin echa fuera del stacJ dos bytes y los car"a en el contador de pro"rama. Si el bit est a & contin a el ciclo normal.
Formato
1 1 0 1 0 0 0 0
A1.13.$.
!=
Descripcin
La instruccin -Q comprueba el bit de cero. Si est a &, indicando que el contenido del acumulador es cero, la instruccin echa fuera del stacJ dos bytes y los car"a en el contador de pro"rama. Si el bit est a %, contin a el ciclo normal.
79
1 1 0 0 1 0 0 0
A1.13.'.
! =
!etorno si no 5a- cero Instruccin Bits afectados Direccionamiento RNZ Registro indirecto
Descripcin
La instruccin -,Q comprueba el bit cero. Si est a %, indicando que el contenido del acumulador no es cero, la instruccin echa fuera del stacJ dos bytes y los car"a en el contador de pro"rama. Si el bit est a &, contin a el ciclo normal.
Formato
1 1 0 0 0 0 0 0
A1.13.,.
!M
!etorno si 5a- signo negativo Instruccin Bits afectados Direccionamiento RM Registro indirecto
Descripcin
La instruccin -8 comprueba el bit de si"no. Si tiene un &, indicando dato ne"ati'o en el acumulador, la instruccin echa dos bytes fuera del stacJ y los mete en el contador de pro"rama. Si el bit tiene %, contin a el pro"rama normal con la si"uiente instruccin.
80
Formato
1 1 1 1 1 0 0 0
A1.13.1.
!&
!etorno si 5a- signo positivo Instruccin Bits afectados Direccionamiento RP Registro indirecto
Descripcin
La instruccin -6 comprueba el bit si"no. Si est a %, indicando que el contenido del acumulador es positi'o, la instruccin echa fuera del stacJ dos bytes y los car"a en el contador de pro"rama. Si el bit est a & contin a el ciclo normal.
Formato
1 1 1 1 0 0 0 0
A1.13.2.
!&"
!etorno si la paridad es par Instruccin Bits afectados Direccionamiento RP4 Registro indirecto
Descripcin
La instruccin -6# comprueba el bit de paridad. Si est a &, indicando que e2iste paridad, la instruccin echa fuera del stacJ dos bytes y los car"a en el contador de pro"rama. Si el bit est a % contin a el ciclo normal. 0#2iste paridad si el byte que est en el acumulador tiene un n mero par de bits, colocndose el bit de paridad a & en este caso1.
81
Formato
La instruccin -6A comprueba el bit de paridad. Si est a %, indicando que no hay paridad, la instruccin echa fuera del stacJ dos bytes y los car"a en el contador de pro"rama. Si el bit est a &, contin a el ciclo normal.
Formato
1 1 1 0 0 0 0 0
82
A1.1$.
Instruccin !ST Instruccin Bits afectados Direccionamiento RST e5* Registro indirecto
Descripcin
#s una instruccin /ALL para usar con interrupciones. -SB car"a el contenido del contador de pro"rama en el stacJ, para pro'eerse de una direccin de retorno y salta a una de las "ocho" direcciones determinadas pre'iamente. Hn cdi"o de tres bits incluido en el cdi"o de operacin de la instruccin -SB especifica la direccin de salto. #sta instruccin es empleada por los perif!ricos cuando intentan una interrupcin. 6ara 'ol'er a la instruccin en que ha tenido lu"ar la interrupcin, se debe utilizar una instruccin de -#BA-,A.
Formato
EXP
donde #E6 es un n mero binario entre %%%: y &&&:. 6or tanto, se" n la combinacin de % y & que demos a #E6 obtendremos los distintos formatos y las distintas direcciones de las interrupciones, que sern$ 3'RMAT' C'NTAD'R D4 PR'<RAMA
83
"" """ "" """" "" " """ "" " """" """ """ """ """" """" """ """" """"
"#emplos
1. La instruccin -SB < llama a la subrutina de la posicin %%&*(. 2. La instruccin -SB &% es una instruccin ile"al ya que el ar"umento de -SB debe ser un n mero entre % y G.
84
A1.1'.
#n este apartado estudiamos las instrucciones que operan directamente sobre el flipCflop de actuacin de interrupciones. Bodas estas instrucciones ocupan un byte si"uiendo el formato que se muestra$
1 1 1 1 X 0 1 1
A1.1'.1.
"I
Descripcin
La instruccin #+ pone en ser'icio el sistema de interrupciones a partir de la si"uiente instruccin secuencial del pro"rama. #sta instruccin acti'a el flipCflop +,B#.
85
Se puede desconectar el sistema de interrupciones poniendo una instruccin .+ al principio de una secuencia, puesto que no se puede predecir la lle"ada de una interrupcin. Al final de la secuencia se incluye la instruccin #+ que 'uel'e a habilitar el sistema de interrupciones. 0-#S#B tambi!n pone fuera de ser'icio el sistema de interrupciones adems de poner el contador de pro"rama a cero1.
Formato
D I
#sta instruccin desacti'a el flipCflop +,B#. .espu!s de la ejecucin de una instruccin .+, el sistema de "interrupciones" esta sin posibilidad de ponerse en marcha. #n aplicaciones que empleen las interrupciones, la instruccin .+ se emplea solamente cuando una determinada secuencia no debe ser interrumpida. 6or ejemplo, se puede poner fuera de ser'icio el sistema de interrupciones incluyendo una instruccin .+ el principio del cdi"o de secuencia. La interrupcin B-A6 del *%*I no puede ser puesta fuera de ser'icio. #sta interrupcin especial esta pre'ista para serios problemas que pueden presentarse independientemente del bit de interrupcin 0fallo de alimentacin, etc.1.
Formato
1 1 1 1 0 0 1 1
86
A1.1,.
Ahora nos ocuparemos de las instrucciones que hacen que los datos entren o sal"an de la /6H. #stas instrucciones ocupan dos bytes en la forma si"uiente$
1 1 0 1 X 0 1 1
#l n mero de puerto 'iene definido por el hardRare del sistema, no estando bajo el control del pro"ramador. #ste, nicamente selecciona uno de ellos para realizar la correspondiente operacin.
A1.1,.1.
87
Descripcin
La instruccin +, 6A-B lee los * bits de datos que hay en el "6A-B" especificado y los car"a en el acumulador. #l operando debe ser un n mero o una e2presin que produzca un 'alor comprendido entre %%( y DD(.
Formato
1 1 0 1 1 0 1 1
"#emplos
"/0ero de p)erto
1. La instruccin +, 4 deposita en el acumulador los datos de entrada del puerto 4. 2. La instruccin +, <O4 deposita en el acumulador los datos de entrada del puerto @.
A1.1,.2.
%.T
Descripcin
88
AHB 6A-B pone el contenido del acumulador en el bus de datos de * bits del puerto seleccionado. #l n mero de puertos oscila de % a 4II y es duplicado en el bus de direcciones. #s la l"ica e2terna la encar"ada de seleccionar el puerto y aceptar el dato de salida. #l operando 06A-B1 debe especificar el n mero del puerto de salida seleccionado.
Formato
1 1 0 1 0 0 1 1
"#emplos
"/0ero de p)erto
1. La instruccin AHB 4 en'a el contenido del acumulador al puerto de salida n mero 4. 2. La instruccin AHB <O4 en'a el contenido del acumulador al puerto de salida n mero @.
89
A1.11.
Descripcin
La instruccin (LB detiene el procesador. #l contador de pro"rama contiene la direccin de la pr2ima instruccin secuencial. 6or otro lado los bits y re"istros permanecen inacti'os. Hna 'ez en estado de parada el procesador puede 'ol'er a ser arrancado solamente por un acontecimiento e2terno, es decir una interrupcin. 6or tanto debemos ase"urarnos que las interrupciones est!n en disposicin de ser acti'adas antes de ejecutar la instruccin (LB. Si se ejecuta (LB estando las interrupciones fuera de ser'icio, la nica manera de 'ol'er arrancar el procesador ser mediante un -#S#B o a tra'!s de la interrupcin B-A6. #l procesador puede salir temporalmente del estado de parada para ser'ir un acceso directo a memoria, sin embar"o terminado el acceso directo 'uel'e al estado de parada.
90
Hn propsito bsico de la instruccin (LB es permitir una pausa al procesador mientras espera por la interrupcin de un perif!rico.
Formato
A1.12.
Instruccin !IM para la lectura de la m?scara de interrupciones Instruccin Bits afectados Direccionamiento RIM
Descripcin
Dit SID
Dit $ I-E2
Dit 2 I$E2
Dit , I4
Dit M2E2
donde$ S+.$ :it presente en la entrada serie. +G.I$ +nterrupcin G.I pendiente si est a &. +@.I$ +nterrupcin @.I pendiente si est a &. +I.I$ +nterrupcin I.I pendiente si est a &.
91
+#$ Las interrupciones son autorizadas si est a &. 8G.I$ La interrupcin G.I est prohibida si est a &. 8@.I$ La interrupcin @.I est prohibida si est a &. 8I.I$ La interrupcin I.I est prohibida si est a &.
Formato
92
A1.1:.
Instruccin SIM para posicionar la m?scara de interrupciones Instruccin Bits afectados Direccionamiento SIM
Descripcin
S+8 es una instruccin de usos m ltiples que utiliza el contenido del acumulador para posicionar el enmascaramiento de interrupciones para las -SB I.I, -SB @.I, -SB G.I5 pone a cero el flanco sensiti'o de la entrada -SB G.I y saca el bit G del acumulador al latch de datos de salida serie. La estructura de la instruccin S+8 es como si"ue$
Dit S'D
Dit $ S'4
Dit 2 )
Dit , MS4
Dit M2E2
donde$ SA.$ :it a presentar sobre la salida serie. SA#$ La salida serie est autorizada si est a &.
93
-G.I$ -eset de -SB G.I. Si es & el flipCflop se pone a %. 8S#$ Si es & los enmascarados estn autorizados. 8G.I$ La interrupcin G.I queda prohibida si est a &. 8@.I$ La interrupcin @.I queda prohibida si est a &. 8I.I$ La interrupcin I.I queda prohibida si est a &.
Si el bit < se pone a &, la funcin poner "masJ" pasa a estar permitida. Los bits % al 4 ponen en ser'icio la correspondiente interrupcin -SB colocando un % en la interrupcin que deseamos habilitar. Si colocamos un & en al"uno de los bits % al 4, la interrupcin correspondiente no se cumplir. Si el bit < tiene un %, los bits % al 4 no tienen efectos. Se debe usar esta peculiaridad para en'iar un bit de salida serie sin afectar al enmascaramiento de las interrupciones. 0La instruccin .+ anula la S+81. Si el bit @ 0SA#1 se pone a & se habilita la funcin de salida serie. #l bit G se sit a en la salida SA. donde puede ser tratado por los aparatos perif!ricos. Si el bit @ se pone a cero, el bit G no tendr efecto al"uno, siendo i"norado.
Formato