You are on page 1of 4

Facultad de Ciencias de la Ingeniera Escuela de Ingeniera Civil Informtica Arquitectura de Computadores II

El lenguaje Ensamblador
Es un tipo de lenguaje de bajo nivel utilizado para escribir programas de computadora, y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura de computadoras legible por un programador. Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente slo se utiliza en contadas ocasiones, especialmente cuando se requiere la manipulacin directa del hardware o se pretenden rendimientos inusuales de los equipos.

Lenguaje
Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden al flujo de rdenes ejecutables que pueden ser cargadas en la memoria de una computadora. Por ejemplo, un procesador x86 puede ejecutar la siguiente instruccin binaria como se expresa en cdigo mquina: 1 1 1 Binario: 10110000 01100001 (Hexadecimal: 0xb061) mov al, 061h Mueva el valor hexadecimal 61 (97 decimal) al registro "al".

La representacin equivalente en ensamblador es ms fcil de recordar: Esta instruccin significa: El mnemnico "mov" es un cdigo de operacin u "opcode" , elegido por los diseadores de la coleccin de instrucciones para abreviar "move" (mover).- El opcode es seguido por una lista de argumentos o parmetros, completando una instruccin de ensamblador tpica. Las operaciones disponibles en la mayora de los conjuntos de instrucciones incluye: 1 mover
o o o

llenar un registro con un valor constante mover datos de una posicin de memoria a un registro o viceversa escribir y leer datos de dispositivos sumar, restar, multiplicar o dividir los valores de dos registros, colocando el resultado en uno de ellos on en otro registro

computar
o

Los registros de la familia 80x86 sobre los que se realizaran las operaciones son: AX BX CX DX SI DI BP SP IP CS DS ES SS Acumulator Register Base Index Register Counter Register Data Register Source Index Destination Index Base Pointer Stack Pointer Instruction Pointer Current Segment Data Segment Extra Segment Stack Segment Acumulador ndice Base Contador Dato ndice de Origen ndice de Destino Puntero Base Puntero de Pila Puntero de Instrucciones Segmento Actual del Programa Segmento de Datos Segmento Extra Segmento de Pil

Flags: Es un registro especial en el cual se guardan los resultados de la ltima operacin matemtica o de comparacin. No se guardan los resultados numricos, solo los de estado, es decir.
CF PF AF ZF SF TF IF DF OF IOPL NT RF VM Carry Flag Parity Flag Auxiliary Flag Zero Flag Sign Flag Trap Flag Interrupt Flag Direction Flag Overflow Flag I/O Privilege Level Nested Task Flag Resume Flag Virtual Mode Flag Bandera de por Acarreo Bandera de por Paridad Bandera Auxiliar Bandera por Cero Bandera de Signo Bandera de Paso Simple Bandera de Interrupcin Bandera de Direccin Bandera por Sobre flujo Solo en 286 o superior Solo en 286 o superior Solo en 386 o superior Solo en 386 o superior

INSTRUCCIONES ARITMETICAS. ADC. Adicin con acarreo. Suma los operandos ms 1 si est activada la bandera de acarreo (CF), El resultado lo guarda en el operando destino. Los operandos deben ser del mismo tipo (byte o palabra). Afeccta a los flags: OF, SF,ZF,AF,PF,CF ADC destino,fuente Lleva a cabo la suma de dos operandos y suma una al resultado en caso de que la bandera CF est activada, esto es, en caso de que exista acarreo. El resultado se guarda en el operando destino. ADD. Adicin de los operandos. El resultado lo guarda en el operando destino. Los operandos deben ser del mismo tipo (byte, palabra). Afecta alos flags: OF, SF, ZF, AF, PF, CF ADD destino,fuente SUB.

Resta el operando fuente del operando destino y el resultado lo guarda en el operando destino. Los operandos deben ser del mismo tipo (byte, palabra). Afecta a los flags: OF, SF, ZF, AF, PF, CF SUB destino,fuente SBB. Resta el operando fuente del operando destino teniendo en cuenta el acarreo, y el resultado lo guarda en el operando destino. Destino=destino(fuente+CF). Los operandos deben ser del mismo tipo (byte, palabra). Afecta a los flags: OF, SF, ZF, AF, PF, CF SBB destino,fuente - INC. Incrementa el operando. La instruccin suma uno al operando destino y guarda el resultado en el mismo operando destino. Afecta a los flags: OF, SF, ZF, AF, PF INC destino DEC. Decrementa el operando. La instruccin resta uno al operando destino y guarda el resultado en el mismo operando destino. Afecta a los flags: OF, SF, ZF, AF, PF DEC destino CMP. Compara dos operandos. Resta fuente de destino, pero no almacena el resultado. Los operandos quedan intactos pero las banderas se actualizan pudindose consultar a continuacin mediante una instruccin de bifurcacin condicional. Los operandos pueden ser del tipo byte o palabra pero siempre del mismo tipo los dos. Afecta a los flags: OF, SF, ZF, AF, AF, PF, CF CMP destino, fuente

Si ZF=1 los operandos son iguales.


Si CF=0 con operandos sin signo opernado1>=operando 2, no ha habido acarreo. Si CF=1 con operandos sin signo operando 1< operando 2, ha habido acarreo. Si OF=SF con operandos con signo desbordamiento del bit de signo. Si OF<>SF con operandos con signo operando 1 >= operando 2,

operando 1< operando 2.

INSTRUCCIONES CONDICIONALES. Jxx. Salta si se cumple la condicin. La distancia de la etiqueta est limitada por 128 y 127 bytes.

Jxx desplazamiento
El desplazamiento (valor con signo de 8 bits) debe estar comprendido entre 128 y 127 bytes desde la instruccin, que es el valor de desplazamiento mximo con signo que se puede representar con 8 bits. Transfiere el control a la instruccin IP+Desplazamiento si se cumple la condicin especificada por la instruccin. No afecta a las banderas. Tratamiento de datos sin signo. En esas instrucciones no se considera el signo, por lo que coge el menor independientemente del signo que tenga. No afecta a las banderas. INSTRUCCIN JB JNAE JC JBE JNA JE JZ JNC JAE JNB JA JNE JNZ JCXZ DESCRIPCIN Salta si inferior Salta si no superior o igual Salta si hay carry Salta si inferior o igual Saltar si no superior Salta si es igual Salta si es 0 Salta si no hay carry Salta si superior o igual Salta si no inferior Salta si superior Salta si no igual Salta si no cero Salta si CX es 0 CONDICIN CF=1 CF=1 CF=1 CF=1 ZF=1 CF=1 ZF=1 ZF=1 ZF=1 CF=0 CF=0 CF=0 CF=0 y ZF=0 ZF=0 ZF=0 CX=0

Tratamiento de datos con signo.

INSTRUCCIN
JL JNGE JLE JNG JG JNLE JGE JNL

DESCRIPCIN Salta si es menor Salta si no es mayor ni igual Salta si menor o igual Salta si no mayor Salta si mayor Salta si no menor o igual Salta si mayor o igual Salta si no menor

CONDICIN SF<>OF SF<>OF ZF=1 SF<>OF ZF=1 SF<>OF ZF=0 SF<>OF ZF=0 SF<>OF SF=OF SF=OF

You might also like