Está en la página 1de 3

TI1: Instrucciones de Transferencia y Aritméticas

1) Instrucciones de transferencia
1.1 Transferencia memoria a memoria
PUSH: Esta instrucción siempre transfiere 2 bytes de información a la pila. Si un dato
es metido a la pila, el primer byte (más significativo) es almacenado en la pila en la
localidad direccionada por SP-1. El segundo byte (menos significativo) es
almacenado en la pila en la localidad direccionada por SP-2. Después de que el dato
se ha empujado a la pila, el registro SP es decrementado en 2.

1.2 Transferencia de memoria a registro


PUSH/POP: Son las instrucciones más importantes utilizadas para empujar o sacar
datos del segmento de pila. En la operación con registros, siempre opera sobre
registros de 16 bits y 32 bits para transferir la información al segmento de pila.

1.3 Transferencia de registro a registro


El primer byte del dato es removido de la pila, esto de la localidad direccionada por
SP y es almacenado en registro BL. El segundo byte es removido de la localidad dada
por SP+1 y colocado en el registro BH. Después de que ambos datos fueron extraídos
de la pila el apuntador de pila (SP) es incrementado en 2.

2) Instrucciones aritméticas
2.1 División
La división se lleva a cabo con números de 8 y 16 bit que son números enteros con
signo (IDIV) o con signo (DIV). El dividendo es siempre de doble ancho, que es
dividido por el operando. Esto quiere decir que una división de 8 bit, divide un
número de 26 bit entre de 8 bit, la división de 16 bit divide un número de 32 bit
entre uno de 16 bit. Una división puede resultar en dos tipos diferentes de errores.
Uno de estos es intenta dividir entre cero y el otro es un flujo por división. Un error
de sobre flujo por división ocurre cuando se divide un número muy pequeño entre
uno muy grande.

2.2 Multiplicación (MUL):

Se realiza en byte o palabra y puede ser con signo entero (IMUL) o con signo (MUL).
El resultado después de la multiplicación es siempre un número de doble ancho. Si
se multiplican dos números de 8 bit se genera un producto de 16 bit, y si
multiplicamos dos números de 16 bit se genera un producto de 32 bit. Algunas
banderas cambias cuando la instrucción multiplicación se ejecuta y produce
resultados predecibles, las otras banderas también cambian, pero sus resultados
son impredecibles y por tanto no son usados. En una multiplicación de 8 bit más
significativos del resultado son cero, las banderas CF y OF son igual a cero. Estas
banderas pueden usarse para encontrar si el resultado es de 8 bit o de 16 bit.
3) Instrucciones lógicas
3.1 NAND
3.2 XOR
4) Instrucciones de conversión
Estas intrusiones cambian el formato u operan sobre el formato de los datos. Un
ejemplo es la conversión de decimal a binario. Un ejemplo de instrucción de edición
más compleja es la instrucción de traducción, Translate (TR) (ver Tabla 4). Esta
instrucción puede utilizarse para convertir de un código de ocho bits a otro, y tiene
tres operandos: TR R1, R2, L
EJEMPLO:
Esta tabla debe contener los caracteres del código ASCII en la secuencia de la
representación binaria del código EBCDIC; es decir, el código de cada carácter ASCII se
coloca en la tabla en una posición relativa igual al valor binario del código EBCDIC del
mismo carácter.

Entrada Operación Resultado


10100110 Desplazamiento lógico a la derecha (3 bits) 00010100
10100110 Desplazamiento lógico a la izquierda (3 bits) 00110000
10100110 Desplazamiento aritmético a la derecha (3 bits) 11110111
10100110 Desplazamiento aritmético a la izquierda (3 bits) 10110000
10100110 Rotación a la derecha (3 bits) 11010100
10100110 Rotación a la izquierda (3 bits) 00110101

Podemos verlo en el ejemplo siguiente:

Las posiciones 2100-2103 contienen F1 F9 F8 F4.

R1 contiene 2100.

R2 contiene 1000.

Entonces, si ejecutamos: TR R1, R2, 4

Los contenidos de las posiciones 2100 a 2103 serían 31 39 38 34.

Así pues, las posiciones 10F0 a 10F9 contendrán los valores 30 a 39, ya que F0 es el
código EBCDIC del dígito 0, cuyo código ASCII es el 30; y así hasta la posición
correspondiente al dígito 9.

5) Instrucciones de entrada
Una instrucción de salida (o simplemente salida) consiste en llevar hacia el exterior los
valores (datos) obtenidos de la evaluación de una lista de expresiones. Normalmente,
los datos son enviados a la salida estándar (la pantalla), pero, también existen otros
dispositivos de entrada

EJEMPLO:
Para leer o escribir un bloque de datos procesador envía orden a modulo DMA
con la siguiente información:
o Envía señal de lectura o escritura por línea de lectura-escritura entre CPU - DMA
o Envía la dirección del dispositivo e/s por línea de datos
o Envía posición inicial de memoria de donde se va a leer o escribir por línea de
datos y DMA guarda en Registro de direcciones
o El número de palabras a leer o escribir se envía por línea de datos y DMA guarda
en un registro contador de datos. Secuencia lógica para e/s
1. Procesador continúa realizando otro trabajo
2. DMA transfiere bloque completo de datos palabra por palabra desde o hacia la
memoria.

6) Instrucciones de salida
7)
8) Conclusiones
Por cada punto