Lenguaje ensamblador.

Es un tipo de lenguaje de programación de bajo nivel. Este lenguaje se usa para programar microprocesadores, microcontroladores y otros tipos de circuitos integrados programables, la principal ventaja del lenguaje ensamblador es que facilita la programación de hardware al ser menos complicada y propensa a cometer errores que la programación en lenguaje maquina. El programa ensamblador traduce el lenguaje ensamblador al lenguaje máquina de la CPU El formato básico de una sentencia e n lenguaje ensamblador es: Etiqueta Opcode Operando(s) Comentario * El campo etiqueta es opcional * Opcode contiene el mnemónico (es una palabra que sustituye a un código de operación [lenguaje de máquina], con lo cual resulta más fácil la programación) de la instrucción o la directiva de ensamblador. * Operandos un operando es un valor (un argumento) con el cual la instrucción, nombrada por un mnemónico, opera. El operando puede ser un registro, una dirección de memoria, una constante literal, o una etique ta. Un ejemplo simple en la arquitectura PC es: MOV DS, AX Donde el valor en el operando del registro AX debe ser movido al registro DS. Dependiendo de la instrucción, puede haber cero, uno, dos o más operandos. * Deforma opcional el último campo es el comentario.
Lista de registros de los procesadores x86

Estos procesadores disponen de 14 registros de 16 bits. La misión de estos registros es almacenar las posiciones de memoria que van a experimentar repetidas manipulaciones, ya que los accesos a memor ia son mucho más lentos que los accesos a los registros. Además, hay ciertas operaciones que sólo se pueden realizar sobre los registros. No todos los registros sirven para almacenar datos, algunos están especializados en apuntar a las direcciones de memoria. - Registros de datos: AX, BX, CX, DX: pueden utilizarse bien como registros de 16 bits o como dos registros separados de 8 bits (byte superior e inferior) cambiando la X por H o L según queramos referirnos a la parte alta o baja respectivamente. AX = Acumulador. Es el registro principal, es utilizado en las instrucciones de multiplicación y división y en algunas instrucciones aritméticas especializadas, así como en ciertas operaciones de carácter específico como entrada, salida y traducción. Obsérvese que el 8086 es suficientemente potente para realizar las operaciones lógicas, la suma y la resta sobre cualquier registro de datos, no necesariamente el acumulador.

BP = Puntero base (base pointer). habrá de moverse alguno. manteniendo la dirección de la base o comienzo de tablas o matrices. En las instrucciones de desplazamiento y rotación se utiliza como contador de 8 bits. Se utiliza comúnmente como contador en bucles y operaciones repetitivas de manejo de cadenas. Utilizado en las instrucciones de manejo de la pila.BX = Base. CS = Registro de segmento de código (code segment). Apunta a la cabeza de la pila. Segmento de ampliación para zona de datos. SS = Registro de segmento de pila (stack segment). . CX = Contador. Los programas de más de 64 Kb requieren cambiar CS periódicamente. En las de entrada y salida se emplea para especificar la dirección del puerto E/S.Registros punteros de pila: SP = Puntero de pila (stack pointer). Segmento de pila. Segmento del área de datos del programa. Se usa como registro base para referenciar direcciones de memoria con direccionamiento indirecto. DS = Registro de segmento de datos (data segment). Estas áreas pueden solaparse total o parcialmente. ES = Registro de segmento extra (extra segment). No es posible acceder a una posición de memoria no definida por algún segmento: si es preciso. Usado en conjunción con AX en las operaciones de multiplicación y división que involucran o generan datos de 32 bits.Registros de segmento: Definen áreas de 64 Kb dentro del espacio de direcciones de 1 M b del 8086. Es un puntero de base. Contiene la dirección del segmento con las instrucciones del programa. que apunta a una zona dentro de la pila dedicada al almacenamiento de datos (variables locales y parámetros de las funciones en los programas compilados). DX = Datos. . .

7 y 11 son indicadores de condición. Se activa tras algunas operaciones aritmético-lógicas para indicar que el número de bits a uno resultante es par. ‡ IF (Interrupt Flag): Indicador de interrupciones: puesto a 1 están permitidas. ‡ AF (Auxiliary Flag): Para ajuste en operaciones BCD.Registro de estado o de indicadores (flags).Registros índices: SI = Índice fuente (source index). ‡ TF (Trap Flag): Indicador de atrape (ejecución paso a paso). DI = Índice destino (destination index). Los bits 0. que reflejan los resultados de operaciones del programa. Puntero de instrucciones o contador de programa: IP = Puntero de instrucción (instruction pointer). Utilizado como registro de índice en ciertos modos de direccionamiento indirecto. . 6. 2. .. indica el sentido de avance (ascendente/descendente). 4. Su valor más habitual es lo que nos llevamos en una suma o resta. también se emplea para guardar un valor de desplazamiento en operaciones de cadenas. ‡ PF (Parity Flag): Indicador de paridad. ‡ SF (Sign Flag): Indicador de resultad o o comparación negativa. Manipulando bloques de memoria. ‡ DF (Direction Flag): Indicador de dirección. ‡ OF (Overflow Flag): Indicador de desbordamiento. los bits del 8 al 10 son indicadores de control y el resto no se utilizan. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF ‡ CF (Carry Flag): Indicador de acarreo. Marca el desplazamiento de la instrucc ión en curso dentro del segmento de código. lo que permite variar el flujo secuencial del programa según el resultado de las operaciones. Indica que el resultado de una operación no cabe en el tamaño del operando destino. Estos indicadores pueden ser comprobados por las instrucciones de salto condicional. Es un registro de 16 bits de los cuales 9 son utilizados para indicar diversas situaciones durante la ejecución de un programa. ‡ ZF (Zero Flag): Indicador de resultado 0 o comparación igual. Se usa en determinados modos de direccionamiento indirecto y para almacenar un desplazamiento en operaciones con cadenas.

Sign up to vote on this title
UsefulNot useful