Está en la página 1de 12

NSTRUCCIONES ARITMTICAS Y LGICAS

El microprocesador dispone de una unidad aritmtica-lgica que le permite realizar una serie de operaciones, tanto aritmticas, como lgicas. Las aritmticas incluyen la suma y resta con o sin acarreo, incremento y decremento de un registro, comparaciones, ajuste decimal, complemento y negacin. Las lgicas incluyen las operaciones que se realizan con los operadores "AND", "OR" y "XOR". Antes de adentrarnos en el estudio de las instrucciones concretas, daremos una serie de definiciones tiles: SUMA SIN ACARREO: Consiste en sumar al contenido del registro "A" un nmero y obtener el resultado en el registro "A". El indicador de acarreo no se tiene en cuenta para esta operacin. Su esquema sera: A A+n SUMA CON ACARREO: Exactamente igual que la anterior, pero se suma tambin el indicador de acarreo del registro "F". De esta forma, sepuede incluir en la suma el acarreo procedente de una suma anterior. Su esquema sera: A A+n+CF RESTA SIN ACARREO: Consiste en restar un nmero del contenido del registro "A", y obtener el resultado en este mismo registro. El indicador de acarreo no interviene en la operacin. Se consideran nmeros negativos los superiores a 127 (7Fh) de la forma que se explic en el captulo relativo a los sistemas de numeracin; es decir, el nmero 255 (FFh) se considera "-1", el 254 (FEh) se considera "-2" y as sucesivamente, hasta 128 (80h) que se considera "-128". El paso de 127 a 128 o viceversa se indica poniendo a "1" el flag de "overflow" (P/V) del registro "F". Su esquema sera: A A-n RESTA CON ACARREO: Igual que el anterior, salvo que tambin se resta el indicador de acarreo (CF) del registro "F". Su esquema sera: A A-n-CF INCREMENTO: Consiste en sumar uno al contenido de un registro que se especifica en la instruccin. Su esquema es:

R R+1 Donde "R" representa un registro cualquiera de 8 a 16 bits. Si se trata de un registro doble (de 16 bits) se incrementa el registro de orden bajo (por ejemplo, en el "BC" se incrementa "C"), y si ello hace que este pase a valer "0", se incrementa tambin el de orden alto. DECREMENTO: Es la inversa de la anterior, consiste en restar uno al contenido de un registro. Su esquema es: R R-1 Si se trata de un registro doble, se decrementa el de orden bajo y, si esto hace que pase a valer 255 (FFh), se decrementa tambin el de orden alto. Si el registro incrementado o decrementado es de 8 bits, resultan afectados los indicadores del registro "F". COMPARACIONES: Estas instrucciones permiten comparar el contenido del acumulador con un nmero. Para ello, se resta el nmero del contenido del acumulador, pero el resultado no se almacena en ninguna parte, simplemente, se alteran determinados flags del registro "F", lo que nos indica si el nmero era menor, igual o mayor que el contenido del acumulador. Si era igual, se pone a "1" el flag "Z" (indicador de "cero"). Si el nmero era mayor, se pone a "1" el flag "S" (indicador de "signo"). AJUSTE DECIMAL: Esta instruccin realiza un ajuste del contenido del acumulador para que, en vez de estar comprendido entre "00h" y "FFh", lo est entre "00h" y "99h". Si se produce acarreo, se indica mediante el flag correspondiente. Para realizar esta operacin se toma en cuenta el estado de los indicadores de "acarreo" (C) y "semi-acarreo" (H). Su finalidad es la de permitir realizar operaciones en "BCD" (Decimal Codificado en Binario). COMPLEMENTO: Consiste en realizar un "complemento a 1" del acumulador, es decir, cambiar los "unos" por "ceros" y los "ceros" por "unos". NEGACIN: Consiste en realizar un "complemento a 2" del acumulador, es decir, realizar un "complemento a 1" y, luego, sumarle "1". Lo que se obtiene es el "negativo" del nmero que tenamos en el acumulador. El efecto es el mismo que si restramos el acumulador de "cero", es decir:

A 0-A EL FLAG DE ACARREO: Existen dos instrucciones que afectan al indicador de acarreo del registro "F", es posible ponerlo a "1" o "complementarlo" (ponerlo a "1" si era "0" y viceversa). No se ha previsto una instruccin para poner a "0" el flag de acarreo, dado que esto se puede conseguir haciendo un "AND" o un "OR" del acumulador consigo mismo. Veamos ya las instrucciones:

Grupo de instrucciones aritmticas para 8 bits En este grupo de instrucciones los registros usados se indican con "r" segn el siguiente cdigo: "r" A B C D E H L cdigo 111 000 001 010 011 100 101

ADD, sumar en ingls: La funcin bsica de esta instruccin es sumar sobre el registro acumulador el valor indicado por el operando. Ejecuta una suma binaria de ambos datos y no altera el contenido del operando.

ADD A,r

OBJETO:

Suma el registro acumulador "A" con el registro indicado por "r", dejando el resultado en el registro acumulador. 1 0 0 0 0 <--- r ---> S ; pone pone Z ; pone pone H ; pone pone N ; pone C ; pone pone P/V ; pone pone 1 0 1 0 1 0 0 1 0 1 0 si el resultado es negativo en cualquier otro caso si el resultado es cero en cualquier otro caso si hay acarreo desde el bit 3 en cualquier otro caso siempre si hay acarreo desde el bit 7 en cualquier otro caso si hay desbordamiento (overflow) en cualquier otro caso

CODIGO MAQUINA: INDICADORES DE CONDICIN A LOS QUE AFECTA:

NOTA: Se entiende que hay acarreo desde el bit 3 cuando ste pasa de ser "1" a ser "0". Se entiende que hay desbordamiento si el resultado pasa de ser "positivo" a ser "negativo" o viceversa. Estas observaciones son vlidas para todas las operaciones aritmticas. CICLOS DE MEMORIA: CICLOS DE RELOJ: EJEMPLO: ADD A,B Valor del registro "A": 1 4

ADC A,r

OBJETO:

Suma el registro acumulador "A", ms el bit de acarreo, con el registro indicado por "r", dejando el resultado en el registro acumulador. 1 0 0 0 1 <--- r ---> S ; pone 1 - si el resultado es negativo pone 0 - en cualquier otro caso Z ; pone 1 - si el resultado es cero pone 0 - en cualquier otro caso H ; pone 1 - si hay acarreo desde el bit 3 pone 0 - en cualquier otro caso N ; pone 0 - siempre C ; pone 1 - si hay acarreo desde el bit 7 pone 0 - en cualquier otro caso P/V ; pone 1 - si hay desbordamiento (overflow) pone 0 - en cualquier otro caso

CODIGO MAQUINA: INDICADORES DE CONDICIN A LOS QUE AFECTA:

NOTA: Se entiende que hay acarreo desde el bit 3 cuando ste pasa de ser "1" a ser "0". Se entiende que hay desbordamiento si el resultado pasa de ser "positivo" a ser "negativo" o viceversa. Estas observaciones son vlidas para todas las operaciones aritmticas. CICLOS DE MEMORIA: CICLOS DE RELOJ: EJEMPLO: ADC A,D Suponemos que tenemos el flag de acarreo a "1", puede ser, por ejemplo, como resultado de una suma anterior. Por tanto, vamos a sumar 49h + 22h + 1. El resultado debe ser 6Ch. Valor del registro "A": (A): Valor del registro "D": (D): Bit de acarreo = 1 Ejecutamos la instruccin: ADC A,D: 10001010 8Ah 00100010 22h 01001001 49h 1 4

SUB (SUBstract), "restar" en ingls. Bsicamente esta funcin consiste en restar del registro acumulador el valor indicado por el operando. Esto es una resta binaria en la que el registro acumulador es el minuendo y el operando indica el sustraendo. La operacin real que efecta el microprocesador es: complementar a dos el sustraendo y sumarlo con el minuendo. Conocer esta operativa es interesante para entender cmo funciona el acarreo, pero no es necesario tenerla presente en el momento de construir el programa. En una resta algebraica el sustraendo es un nmero negativo y como se sabe para el microprocesador Z80, los nmeros negativos se expresan con el complemento a 2. Por lo tanto la resta para el ordenador es la suma de un nmero positivo (minuendo) con un nmero negativo (sustraendo); y dependiendo de los valores absolutos, el resultado ser un nmero negativo o positivo.

SUB r

OBJETO:

Resta del registro acumulador "A" el contenido del registro especificado por "r", dejando el resultado en el registro acumulador. 1 0 0 1 0 <--- r ---> S ; pone 1 - si el resultado es negativo pone 0 - en cualquier otro caso Z ; pone 1 - si el resultado es cero pone 0 - en cualquier otro caso H ; pone 1 - si no hay acarreo desde el bit 3 pone 0 - en cualquier otro caso N ; pone 1 - siempre C ; pone 1 - si no hay acarreo desde el bit 7 pone 0 - en cualquier otro caso P/V ; pone 1 - si hay desbordamiento (overflow) pone 0 - en cualquier otro caso 1 4

CODIGO MAQUINA: INDICADORES DE CONDICIN A LOS QUE AFECTA:

CICLOS DE MEMORIA: CICLOS DE RELOJ: EJEMPLO: SUB B

En este ejemplo, vamos a restar el contenido del registro "B" del contenido del acumulador "A". La operacin se podra representar como: A A-B Valor del registro "A":

SBC A,r

OBJETO:

Resta del registro acumulador "A" el contenido del registro especificado por "r", ms el indicador de acarreo. Deja el resultado en el registro acumulador. 1 0 0 1 1 <--- r ---> S ; pone 1 - si el resultado es negativo pone 0 - en cualquier otro caso Z ; pone 1 - si el resultado es cero pone 0 - en cualquier otro caso H ; pone 1 - si no hay acarreo desde el bit 3 pone 0 - en cualquier otro caso N ; pone 1 - siempre C ; pone 1 - si no hay acarreo desde el bit 7 pone 0 - en cualquier otro caso P/V ; pone 1 - si hay desbordamiento (overflow) pone 0 - en cualquier otro caso 1 4

CODIGO MAQUINA: INDICADORES DE CONDICIN A LOS QUE AFECTA:

CICLOS DE MEMORIA: CICLOS DE RELOJ: EJEMPLO:

SBC A,H Valor del registro "A": (A): Valor del registro "H": (H): Indicador de acarreo (C) = 0 Instruccin: SBC A,H: Operacin: (H) +C 01110111 0 01110111 co 10011100 9Ch 01110111 77h 11111111 FFh

GRUPO ARITMETICO DE 8 BITS (SUMA Y RESTA) Cdigo Fuente ADD A,A ADD A,B ADD A,C ADD A,D ADD A,E ADD A,H ADD A,L ADD A,n ADD A,(HL) ADD A,(IX+d) ADD A,(IY+d) ADC A,A ADC A,B ADC A,C ADC A,D ADC A,E ADC A,H ADC A,L ADC A,n ADC A,(HL) ADC A,(IX+d) ADC A,(IY+d) SUB A SUB B SUB C SUB D SUB E SUB H SUB L SUB n SUB (HL) SUB (IX+d) SUB (IY+d) SBC A,A SBC A,B SBC A,C SBC A,D SBC A,E SBC A,H SBC A,L SBC A,n SBC A,(HL) SBC A,(IX+d) SBC A,(IY+d) Hexadecimal 87 80 81 82 83 84 85 C6,n 86 DD,86,d FD,86,d 8F 88 89 8A 8B 8C 8D CE,n 8E DD,8E,d FD,8E,d 97 90 91 92 93 94 95 D6,n 96 DD,96,d FD,96,d 9F 98 99 9A 9B 9C 9D DE,n 9E DD,9E,d FD,9E,d Decimal 135 128 129 130 131 132 133 198,n 134 221,134,d 253,134,d 143 136 137 138 139 140 141 206,n 142 221,142,d 253,142,d 151 144 145 146 147 148 149 214,n 150 221,150,d 253,150,d 159 152 153 154 155 156 157 222,n 158 221,158,d 253,158,d

Tabla de codificacin para suma y resta.

Hasta aqu hemos visto las instrucciones que nos han de servir para sumar y restar en cdigo mquina. A continuacin veremos las que se encargan de realizar operaciones lgicas tales como AND, OR y XOR. Pero antes, realizaremos unos cuantos ejemplos que podamos ejecutar en el ordenador, y que sirvan para aclarar lo estudiado. Tambin invitamos al lector a que intente resolver los ejercicios que se proponen,

y que le darn una medida de cmo va asimilando los conocimientos.

También podría gustarte