Lenguaje ASSEMBLER Definición: Es un lenguaje de programación de bajo nivel. Consiste en un conjunto de mnemónicos que representan instrucciones básicas para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables. Características: El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido. El lenguaje ensamblador es difícilmente portable. Los programas hechos por un programador experto en lenguaje ensamblador son generalmente mucho más rápidos. Se tiene un control muy preciso de las tareas realizadas por un microprocesador. También se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecución. Ventajas Trabaja directamente con el microprocesador al ejecutar un programa, y a consecuencia de esto lo procesa más rápido. Eficiencia de tamaño. Flexibilidad. Desventajas Tiempo de programación. Programas fuentes grandes. Peligro de afectar recursos inesperadamente. Falta de portabilidad. Uso Para programas empotrados que solo almacenan una pequeña cantidad de memoria y el dispositivo está dirigido para hacer tareas para un simple propósito Se escriben virus de computadora. Se escribe software compilador que genera código ensamblador. Se escriben algoritmos criptográficos Se escriben simuladores del conjunto de instrucciones para monitoreo. Se hace ingeniería inversa en binarios existentes. Programa en Ensamblador El proceso de crear un programa se divide en tres partes: 1. Editar el programa, en su formato fuente. 2. Ensamblarlo y enlazarlo 3. Realizar las correcciones y depuraciones necesarias, el ciclo se puede cerrar en esta parte para comenzar de nuevo en la primera. Código fuente: Es el conjunto de líneas de texto que representan las instrucciones que debe seguir la CPU para ejecutar el programa. Código objeto: El código objeto es el resultado de la compilación del código fuente. Código ejecutable: Es un empaquetado listo para ser ejecutado en una computadora INSTRUCCIONES Instrucciones aritméticas: ADC ADD DIV IDIV MUL IMUL SBB SUB Instrucciones lógicas: AND NEG NOT OR TEST XOR Instrucciones de transferencia: MOV MOVS (MOVSB) (MOVSW Instrucciones de carga: LODS (LODSB) (LODSW LAHF LDS LEA LES Instrucciones de la pila POP POPF PUSH PUSHF Registros de CPU Registros de uso general AX BX CX DX Registros de segmento DS ES SS CS Registros punteros BP SI DI Registros especiales SP IP F Bits del registro de banderas Overflow NV OV Direction UP DN Interrupts DI EI Sign PL NG Zero NZ ZR Auxilary carry NA AC Parity PO PE Carry NC CY