EXPERIENCIA LABORAL
bushydo24402 de Julio de 2013
3.083 Palabras (13 Páginas)670 Visitas
1. INSTRUCCIONES.
1.1 Concepto.
Se le denomina instrucción al conjunto de datos insertados en una secuencia estructurada que el procesador interpreta y ejecuta. Un conjunto de instrucciones especifica qué instrucciones pueden ser ejecutadas y entendidas por la CPU.
Una instrucción es una única operación de un procesador definida por un conjunto de instrucciones de una arquitectura. Las instrucciones incluyen operaciones aritméticas, compuertas lógicas, instrucciones de datos (como leer o escribir) e instrucciones control (“si”, “retornar”, “ir a…”). Los tipos de instrucciones varían de una arquitectura a otra, y determinan el funcionamiento de la CPU que las ejecuta. El programador utiliza instrucciones para controlar el CPU.
1.2 Clasificación.
Las instrucciones se clasifican principalmente en cuatro tipos de conjuntos: transferencia, aritméticas, lógicas y control.
1.2.1 De Transferencia.
En este tipo de instrucciones se transfieren datos de una localización a otra. Los pasos para realizarlo son determinar las direcciones de origen y destino de memoria.
1.2.2 Aritméticas/Lógicas.
Pueden implicar la transferencia de datos antes o después. Realizan operaciones aritméticas de las que se encarga la “Unidad Aritmético Lógica” (ALU). Pueden clasificarse en un operando (valor absoluto/negación) o dos operando (suma y resta). También realiza la comparación entre dos valores.
1.2.3 De Transferencia de Control.
Su función es actualizar el puntero de instrucciones, o dicho de otro modo, el registro del CPU que indica la posición del procesador en la secuencia de instrucciones. Puede apuntar directamente a otra ubicación del programa, o hacerlo mediante el cumplimiento de una condición lógica.
1.3 Instrucciones Principales.
1.3.1 Instrucciones de Transferencia.
Son utilizadas para mover los contenidos de los operando. Cada instrucción puede usarse con diferentes modos de direccionamiento: La instrucción MOV transfiere datos entre celdas de memoria, registros y acumuladores. Las instrucciones de transferencia son MOV, XCHG, IN, OUT, XLAT, LEAD, LDS, LES, LAHF, SAHF, PUSH, POP.
MOV [destino], [fuente]
MOV mueve el contenido de una ubicación a otra: destino es el lugar donde se moverán las instrucciones, fuente es el lugar de origen de las instrucciones.
MOV AX, 0006h
MOV BX, AX
MOV AX, 4C00H
INT 21H
El programa mueve el valor (0006h) a AX, luego mueve el valor de AX a BX. Luego mueve un nuevo valor a AX y finaliza la ejecución con una interrupción. No ocupa banderas tarda un ciclo para cualquier operación, para mover registros ocupa dos ciclos.
1.3.2 Instrucciones Aritméticas.
Se utilizan para realizar operaciones de cálculo con los contenidos de los registros. Este grupo de instrucciones puede modificar las banderas de acuerdo al resultado. Las instrucciones de transferencia son ADD (y variaciones), SUB, INC, DEC y MUL.
ADD [base], [suma]
ADD sumará el contenido de un registro a otro: base es el valor al que se le sumará una cantidad, suma es la cantidad que será añadida.
MOV AX, 5
MOV BX, 5
ADD AX, BX
ADD AX, 5
INT 21H
El programa asigna el valor 5 a AX, luego asigna 5 al registro BX. Luego sumará mediante ADD el valor de BX a AX, dando como resultado A base 16 (10 en decimal). Al nuevo valor de AX le sumará 5, siendo AX=F base 16 (15 base 10) y finaliza la ejecución con una interrupción. Ocupa las banderas C, AC y OV. Tarda un ciclo para cualquier operación.
1.3.3 Instrucciones Lógicas.
Si hablamos de un set de instrucciones aritméticas y lógicas, debe incluirse entonces las compuertas AND, OR, NOT y XORT. Cada compuerta aplicará la lógica de tablas a los registros que se comparen.
AND [dato1], [dato2]
AND comparará el contenido de un registro con otro: dato1 será descompuesto en binario y comparado con dato2 en binario, y el resultado se dará basándose en la lógica de la tabla de verdad de AND.
MOV AX, 2
MOV BX, 2
AND AX, BX
INT 21H
AX posee el valor 2 (10 base 2) y BX posee el mismo valor: 2 (10 base 2) AND comparará ambos registros y almacenará en AX el resultado de la comparación. Como la lógica de AND indica que solo puede ser verdadero (1) si ambos son verdaderos, el resultado almacenado en AND será 2 y finalizará el programa con una interrupción. Si por otro lado el valor de BX o AX fuera 1. El resultado de la comparación sería 0. No ocupa banderas, realiza 2 ciclos por dato.
1.3.4 Instrucciones de Control.
Las instrucciones de control influyen en el flujo de los procesos sea por el uso de condiciones o por interrupciones. O bien, a través de contadores que se incrementan según la necesidad. Las principales instrucciones de control son JUMP y LOOP, con sus respectivas variaciones.
JMP [dirección] – JMP [etiqueta]
JMP saltará hacia la dirección especificada o a la etiqueta especificada. JMP puede cargar el PC (contador del programa) con el resultado de las operaciones o condiciones que se realicen.
JMP 500H
INT 21H
JMP se saltará a la dirección 500H y finalizará con una interrupción. JMP no ocupa banderas y tarda dos ciclos.
2. INTERRUPCIONES.
2.1 Concepto.
Una interrupción es una suspensión temporal de la ejecución de un proceso, para pasar a ejecutar una subrutina de servicio de interrupción, la cual, por lo general, no forma parte del programa (generalmente perteneciente al sistema operativo, o al BIOS). Luego de finalizada dicha subrutina, se reanuda la ejecución del programa.
2.2 Funciones.
Delegar en los dispositivos la responsabilidad de comunicarse con el procesador cuando lo necesitaran. El procesador, en este caso, no sondea a ningún dispositivo, sino que queda a la espera de que estos le avisen (le "interrumpan") cuando tengan algo que comunicarle (ya sea un evento, una transferencia de información, una condición de error, etc.).
2.3 Forma de Uso.
; PROGRAMA
; MANEJO DE PANTALLA
PILA SEGMENT STACK
DB 3 DUP ('AREA DE PILA')
PILA ENDS
DATOS SEGMENT
A DB 'MANEJO DE PANTALLA’
DB 'EN LENGUAJE ENSAMBLADOR $'
DATOS ENDS
CODIGO SEGMENT
PR3 PROC FAR
ASSUME DS: DATOS, SS: PILA, CS: CODIGO
PUSH DS
MOV AX, 0
PUSH AX
MOV AX, DATOS
MOV DS, AX
MOV AH, 9
LEA DX, A
INT 21H
RET
PR3 ENDP
CODIGO ENDS
END PR3
2.4 Tipos de Interrupciones.
2.4.1 Interrupción 21H
Propósito: Llamar a diversas funciones.
Sintaxis: Int 21H
Cuando trabajamos en MASM es necesario especificar que el valor que estamos utilizando es hexadecimal.
Esta interrupción tiene varias funciones, para accesar a cada una de ellas es necesario que el registro AH se encuentre el número de función que se requiera al momento de llamar a la interrupción.
Funciones para desplegar información al video.
02H Exhibe salida
09H Impresión de cadena (video)
40H Escritura en dispositivo/Archivo
Funciones para leer información del teclado.
01H Entrada desde teclado
0AH Entrada desde teclado usando buffer
3FH Lectura desde dispositivo/archivo
Funciones para trabajar con archivos.
Introducción al manejo de archivos.
Método FCB
0FH Abrir archivo
14H Lectura secuencial
15H Escritura secuencial
16H Crear archivo
21H Lectura aleatoria
22H Escritura aleatoria
Handles
3CH Crear archivo
3DH Abrir archivo
3EH Cierra manejador de archivo
3FH Lectura desde archivo/dispositivo
40H Escritura en archivo/dispositivo
42H Mover apuntador de lectura/escritura en archivo
Función 02H
Uso: Despliega un carácter a la pantalla.
Registros de llamada:
AH = 02H
DL = Valor del carácter a desplegar.
Registros de retorno:
Ninguno.
Esta función nos despliega el carácter cuyo código hexadecimal corresponde al valor almacenado en el registro DL, no se modifica ningún registro al utilizar este comando. Es recomendado el uso de la función 40H de la misma interrupción en lugar de esta función.
Función 09H
Uso: Despliega una cadena de caracteres en la pantalla.
Registros de llamada:
AH = 09H
DS: DX = Dirección de inicio de una cadena de caracteres
Registros de retorno:
Ninguno.
Esta función despliega los caracteres, uno a uno, desde la dirección indicada en el registro DS: DX hasta encontrar un carácter $, que es interpretado como el final de la cadena. Se recomienda utilizar la función 40H en lugar de esta función.
Función 40H
Uso: Escribir a un dispositivo o a un archivo.
Registros de llamada:
AH = 40H
BX = Vía de comunicación
CX = Cantidad de bytes a escribir
...