Se trabaja directamente con el microprocesador. Permite conocer el funcionamiento interno de este. Tiene la ventaja de que en l se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar.
El uso del lenguaje ensamblador le permite al programador indicarle al computador exactamente cmo llevar a cabo una tarea especfica usando la menor cantidad de instrucciones.
El lenguaje ensamblador da a un programador la capacidad de realizar tareas muy tcnicas que seran difciles, si no es que imposibles de realizar en un lenguaje de alto nivel.
El conocimiento del lenguaje ensamblador permite una comprensin de la arquitectura de la mquina que ningn lenguaje de alto nivel puede ofrecer.
El lenguaje ensamblador es de suma importancia ya que ste es directamente traducible al lenguaje mquina y viceversa, es una abstraccin que facilita su uso para el ser humano.
1.2 EL PROCESADOR Y SUS REGISTROS INTERNOS
Los registros del procesador se emplean para controlar instrucciones en ejecucin, manejar direccionamiento de memoria y proporcionar capacidad aritmtica. Los registros son direccionales por medio de un nombre.
Los registros internos del procesador se pueden clasificar en 6 tipos:
Registros de segmento. Registros de propsito general Registros de apuntadores. Registros de banderas. Registros de Puntero de instruccin. Registros de Pila.
1.3 LA MEMORIA PRINCIPAL (RAM)
Es aquella memoria de un ordenador, donde se almacenan temporalmente tanto los datos como los programas que la CPU est procesando o va a procesar en un determinado momento.
Esta clase de memoria es voltil, es decir que, cuando se corta la energa elctrica, se borra toda la informacin que estuviera almacenada en ella. La Memoria Principal se comunica con el microprocesador de la CPU mediante el bus de direcciones. El ancho de este bus determina la capacidad que posea el microprocesador para el direccionamiento de direcciones en memoria.
1.4 EL CONCEPTO DE INTERRUPCIONES
Una interrupcin es una operacin del hardware que indica a la CPU que detenga la ejecucin de lo que estaba haciendo, conserva la situacin del proceso y enva a la CPU a una direccin determinada en la que tiene un programa de control de interrupcin o de servicio de interrupciones.
Causas
Error de mquina detectado Error de programa Interrupcin externa (el operador pide una determinada funcin) Interrupcin de entrada/salida (el dispositivo de E/S pide atencin o hace una indicacin de que ha iniciado una operacin) Llamada al supervisor por el programa Tipos 1. Interrupcin por errores o por daos en la mquina 2. Interrupcin por causa del programa (o desvo) 3. Interrupcin por entrada/salida 4. Interrupcin externa 5. Interrupcin de recuento
1.5 LLAMADAS A SERVICIOS DEL SISTEMA
Es el mecanismo usado por una aplicacin para solicitar un servicio al sistema operativo.
Cuando una llamada al sistema es invocada, la ejecucin del programa que invoca es interrumpida y sus datos son guardados, normalmente en su PCB (Bloque de Control de Proceso), para poder continuar ejecutndose luego. El procesador entonces comienza a ejecutar las instrucciones de cdigo de alto nivel de privilegio, para realizar la tarea requerida. Cuando esta finaliza, se retorna al proceso original, y contina su ejecucin. El retorno al proceso demandante no obligatoriamente es inmediato, depende del tiempo de ejecucin de la llamada al sistema y del algoritmo de planificacin de CPU.
1.6 MODOS DE DIRECCIONAMIENTO
Son las diferentes maneras de especificar en informtica un operando dentro de una instruccin en lenguaje ensamblador.
Un modo de direccionamiento especifica la forma de calcular la direccin de memoria efectiva de un operando mediante el uso de la informacin contenida en registros y / o constantes, contenida dentro de una instruccin de la mquina o en otra parte.
Objetivos: Reducir el espacio ocupado en memoria por las instrucciones. Permitir la reubicacin del cdigo. Facilitar el manejo de las estructuras de datos.
Tipos Direccionamiento inmediato Direccionamiento directo Direccionamiento de registro Direccionamiento indexado Direccionamiento indirecto
1.7 PROCESO DE ENSAMBLADO Y LIGADO
Ensamblado El ensamblado se lleva a cabo invocando al MASM. Este puede ser invocado, usando una lnea de comando, de la siguiente manera: MASM archivo [,[objeto][,[listado][,[cross]]]]][opciones][;]
Dnde: Objeto.- Es el nombre para el archivo objeto. Listado.- Nombre del archivo de listado de ensamblado. Cross. Es un archivo de referencias cruzadas.
Link De la misma forma que el ensamblado, la fase de liga se lleva a cabo con el LINK. Este puede ser invocado de la misma forma que el MASM. Los parmetros que este requiere son: LINK objeto [,[ejecutable][,[mapa][,[librera]]]]][opciones][;]
Dnde: Objeto.- Es el nombre para el archivo .OBJ Ejecutable.- Nombre del archivo .EXE Mapa.- Nombre del archivo mapa Librera.- Nombre del archivo biblioteca de rutinas
1.8 DESPLEGADO DE MENSAJES EN EL MONITOR Comentarlos En Lenguaje Ensamblador.
Un comentario empieza con punto y coma (:) y, en donde quiera que lo codifique. el ensamblador supone que los dos caracteres a la derecha de esa lnea son comentarios. Un comentario puede contener cualquier carcter imprimible, incluyendo el espacio en blanco.
Palabras Reservadas.
Ciertas Palabras en lenguaje ensamblador estn reservadas para sus propsitos propios. Y son usadas solo bajo condiciones especiales.
Identificadores. Un identificador es un nombre que se aplica a elementos en el programa. Los dos tipos de identificadores son: Nombre: que se refiere a la direccin de un elemento de dato. Etiqueta: que se refiere a la direccin de una Instruccin.
RESUMEN UNIDAD 2 2.1 ENSAMBLADOR (Y LIGADOR) A UTILIZAR PROCESO DE ENSAMBLADO
2.2 CICLOS NUMERICOS Las instrucciones de control de bucles son las siguientes:
Sintaxis Funcin INC Incrementar DEC Decrementar LOOP Realizar un bucle LOOPZ (LOOPE) Realizar un bucle si es cero LOOPNZ (LOOPNE) Realizar un bucle si no es cero JCXZ Salta si CX es cero
2.3 CAPTURA BSICA DE CADENAS
Las instrucciones bsicas de cadenas son las siguientes:
Sintaxis Funcin MOVSB / MOVSW Mueve cadenas entre localidades de memoria LODSB / LODSW Carga un byte / palabra
2.4 COMPARACION Y PRUEBA Nos van a servir para realizar las comparaciones, y son: Sintaxis Funcin TEST Comprueba dos registros, (no guarda el resultado). CMP Compara un registro y una direccin de memoria.
2.5 SALTOS
Se emplea para transferir el control donde indica el operador (etiqueta).
sintaxis
funcin Banderas (flags) S Z OF PF ZF SF CF JMP Siempre se va a ejecutar
JA(JNBE) Salta si no es igual JAE(JNBE) Salta si y solo si es igual o no menor. 0 1 JB(JNA) salta si es menor si no lo es, o si es igual 1,0 1,0 JE(JZ) se ejecuta cuando la bandera Z = 1 1 JNE(JNZ) se ejecuta cuando la bandera Z = 0 0 JG(JNLE) el salto ocurrir si ZF = 0 u OF = SF SF 0, SF
JGE(JNL) se ejecuta si SF = OF SF OF JL(JNGE) se toma en cuenta el signo, saltara si SF != OF !OF JLE(JNG) Se considera el signo. Salta si ZF = 1 u SF != OF 1 !OF JC se ejecuta si CF = 1 1 JNC se ejecuta si CF = 0 0 JNO salta si OF = 0 0 JNP(JPO) salta si PF = 0 0 JNS contrario a JL que especifica considerar las banderas seleccionadas por el programador
JO El salto se realiza si OF = 1. 1 JP(JPE) El salto se efecta si PF = 1. 1 JS saltara si SF = 1 1
2.6 CICLOS DE CONDICIONALES
Estn asociados con los saltos y sus respectivas banderas. La aplicacin incluir instrucciones de comparacin para que las banderas sean consideradas, es responsabilidad del programador que estas estn en su estatus original. Tipos de ciclos: For While IF
2.7 INCREMENTO Y DECREMENTO
Instrucciones de Incremento y Decremento:
Sintaxis Funcin INC Destino La instruccin suma 1 al operando destino y guarda el resultado en el mismo operando destino. DEC Destino Esta operacin resta 1 al operando destino y almacena el nuevo valor en el mismo operando.
2.8 CAPTURA DE CADENAS CON FORMATO
Permiten el movimiento, comparacin o bsqueda rpida en bloques de datos: Sintaxis Funcin MOVS/MOVSB/MOVSW destino, fuente Transfiere el byte o la palabra apuntada por DS:SI al byte o palabra apuntada por ES:DI. CMPS/CMPSB/CMPSW destino, fuente Comparacin de bytes o palabras de cadenas SCAS/SCASB/SCASW destino Anlisis de un byte o de una palabra de una cadena. LODS/LODSB/LODSW fuente Carga de un byte o de una palabra de una cadena. STOS/STOSB/STOSW destino Almacenamiento de un byte o de una palabra en una cadena. REP/REPZ/REPE/REPNZ/REP NE instruccin de cadena repeticin de una instruccin de cadena
2.9 INSTRUCCIONES ARITMTICAS
Estas pseudo instrucciones se emplean para combinar los diferentes bits que conforman un registro.
Sintaxis Funcin ADD Destino, Fuente Adiciona dos operadores almacenando el resultado en el destino. No emplea el bit de acarreo. ADC Destino, Fuente Adiciona dos operadores almacenando el resultado en el destino, la bandera de acarreo entonces se activa. DIV Fuente Efecta la divisin sin considerar el signo, en trmino de bytes o palabras. Destino y Fuente deben ser igual en tamao. IDIV Operador Igual que el anterior solo que considera el signo. MUL Operador Multiplica considerando el signo. IMUL Operador Considera la multiplicacin que deber estar asociada con la pseudo instruccin MOV. SBB Destino, Fuente Esta instruccin efecta la resta afectando la bandera de acarreo. SUB Substrae el operador fuente con el destino (ninguna bandera se activa).
2.10 MANIPULACIN DE PILA Una de las funciones de la pila del sistema es la de salvaguardar (conservar) datos (la otra es la de salvaguardar las direcciones de retorno de las llamadas a subrutinas):
PUSH introducir POP extraer PUSHF introducir indicadores POPF extraer indicadores
2.11 OBTENCIN DE CADENA CON REPRESENTACIN
Instrucciones de Desplazamiento Lineal
Sintaxis Funcin SAL/SHL destino, contador Desplaza a la izquierda los bits del operando el nmero de bits especificado en el segundo operando SAR destino, contador Desplaza a la derecha los bits del operando destino el nmero de bits especificado en el segundo operando SHR destino, contador Desplaza a la derecha los bits del operando destino el nmero de los bits especificados en el segundo operando. Los bits de la izquierda se llena con cero.
2.12 INSTRUCCIONES LGICAS
Son instrucciones que permiten hacer un modelo lgico, se usan en el diseo lgico de un procesador.
Sintaxis Funcin AND destino, fuente Se prende cuando los dos operadores son iguales verdaderos (1). NEG destino Genera el complemento a 2 del operando destino y lo almacena en este mismo operando. NOT destino Acarrea la negacin bit por bit OR destino, fuente Con un bit que este encendido se prende (OR inclusivo). TEST destino, fuente Para que sea verdadero al menos uno debe ser verdadero pero no los dos (XOR exclusivo). XOR destino, fuente Ejecuta la conjuncin bit por bit, a diferencia del AND no almacena el resultado
2.13 DESPLAZAMIENTO Y ROTACIN Instrucciones de Desplazamiento Circular
Sintaxis Funcin RCL destino, contador Rotar a la izquierda los bits del operando destino junto con el indicador de acarreo CF el nmero de bits especificado en el segundo operando. RCR destino, contador Rotar a la derecha los bits del operando destino junto con el indicador de acarreo CF el nmero de bits especificado en el segundo operando. ROL destino, contador Rota a la izquierda los bits del operando destino el nmero de bits especificado en el segundo operando. ROR destino, contador Rota a la derecha los bits del operando destino el nmero de bits especificado en el segundo operando.
2.14 OBTENCION DE CADENA CON LA REPRESENTACION HEXADECIMAL
Procesos de Control
Sintaxis Funcin NOP Realiza una operacin nula. ESC cdigo_operacin, origen Abre al dispositivo externo el acceso a las direcciones y operandos requeridos. HLT El procesador se detiene hasta que se restaura el sistema o se recibe una interrupcin. LOCK se utiliza en aplicaciones de recursos compartidos para asegurar que no accede simultneamente a la memoria ms de un procesador. WAIT Provoca la espera del procesador hasta que se detecta una seal en la patilla TEST XLAT tabla carga en el registro AL el contenido de la posicin [BX][AL], en donde el registro BX ha de apuntar al comienzo de una tabla
Instrucciones de transferencia
Sintaxis Funcin LEA destino, origen Transfiere el desplazamiento del operando fuente al operando destino. LDS destino, origen Traslada un puntero de 32 bits (direccin completa de memoria compuesta por segmento y desplazamiento), al destino indicado y a DS. LES destino, origen Esta instruccin es anloga a LDS, pero utilizando ES en lugar de D
2.15 CAPTURA Y ALMACENAMIENTO DE DATOS NUMERICOS
Modelos de memoria.
Los modelos de memoria constituyen las diversas maneras de acceder a la memoria por parte de los compiladores de C.
Usando la pila
Una seccin de la memoria del programa es reservado para el uso de una pila. La Intel 80386 y procesadores superiores contienen un registro llamado puntero a la pila, esp, el cual almacena la direccin del tope de la pila, la figura 1 de abajo muestra 3 valores enteros, 49, 30 y 72, almacenados en la pila (cada entero ocupando 4 bytes) con el registro esp apuntando a la direccin del tope de la pila.
2.16 OPERACIONES BASICAS SOBRE ARCHIVOS DE DISCO ENTRADA Y SALIDA
Funciones que debe realizar un computador para ejecutar trabajos de entrada/salida:
Direccionamiento o seleccin del dispositivo que debe llevar a cabo la operacin de E/S.
Transferencia de los datos entre el procesador y el dispositivo (en uno u otro sentido).
Sincronizacin y coordinacin de las operaciones.
Se define una operacin de E/S como el conjunto de acciones necesarias para la transferencia de un conjunto de datos.
Funciones que desempea una operacin de E/S: Recuento de las unidades de informacin transferidas (normalmente bytes) para reconocer el fin de operacin. Sincronizacin de velocidad entre la CPU y el perifrico. Deteccin de errores (e incluso correccin) mediante la utilizacin de los cdigos necesarios (bits de paridad, cdigos de redundancia cclica, etc.) Almacenamiento temporal de la informacin. Es ms eficiente utilizar un buffer temporal especfico para las operaciones de E/S que utilizan el rea de datos del programa. Conversin de cdigos, conversin serie/paralelo, etc.