viernes, 19 de abril de 2013

Instrucciones en ensamblador





En esta entrada les pongo las instrucciones básicas de ensamblador, es esencial conocerlas todas y cada una de ellas.

 

a: este sirve para comenzar a dar instrucciones


REGISTROS


ax (ah - al) - acumulador
bx (bh - bl) - registro base
cx (ch - cl) - registro contador
dx (dh - dl) - registro de datos
sp - registro del apuntador de pila


Los registros competos ax, bx, cx, dx trabajan sobre 16 bits, mientras la parte alta (ah, bh, ch, dh) y baja (al, bl, cl, dl) de cada registro trabaja sobre 8 bits, es esencial conocerlo para a la hora de programar no cometer errores en mover datos de un registro a otro.

INSTRUCCIONES DE TRANSAFERENCIA DE DATOS

mov: mueve o transfiere

xchg: intercambia

in: entrada

out:salida

xlat: traduce usando una tabla

lea: carga la direccion efectiva

lds: carga el segmento de datos

les: carga el segmento extra

lahf: carga los indicadores en ah

sahf: guarda ah en los indicadores

push fuente: (sp)<- fuente

pop destino: destino <- (sp)


 

INSTRUCCIONES DE PRUEBA, COMPARACIÓN Y SALTOS

test: verifica
cmp: compara
jmp: salta


INSTRUCCIONES ARITMÉTICAS

add: suma
adc: suma con acarreo
aaa: ajuste ascii para la suma
daa: ajuste decimal para la suma

sub: resta
sbb: resta con acarreo negativo
aas: ajuste ascii para la resta
das: ajuste decimal para la resta

mul: multiplicacion
imul: multiplicacion entera
aam: ajuste ascii para la multiplicacion

div: division
idiv: division entera
aad: ajuste ascii para la division

cbw: pasar octeto a palabra
cwd: pasar palabra a doble palabra
neg: negacion


INSTRUCCIONES LÓGICAS

not: negacion
and: producto logico
or: suma logica
xor: suma logica exclusiva


INSTRUCCIONES DE PILA

push: instroducir
pop: extraer
pushf: introducir indicadores
popf: extraer indicadores


INTERRUPCIONES

sti: poner a 1 el indicador de interrupcion
cli: borrar el indicador de interrupcion
into: interrupcion por capacidad excedida(desbordamiento)
iret: retorno de interrupcion
int: interrupcion

int 21: interrupcion 21, esta manda llamar al sistema operativo que ejecuta las instrucciones anteriores

int 20: interrupcion 20, esta interrupcion ejecuta lo anterior y termina el programa para que no se cicle


INSTRUCCIONES EXTRAS


r: muestra o hace la carga de un registro, "rcx"

n: este comando almacena un programa, va despues de las interrupciones y lleva extension .com, "-n alex.com"

h: se anotan el ultimo registro y el primer, funciona como un delimitador, "-h 012e 0100"

g: sirve para la ejecucion de un programa, "-g"

t: va realizando paso a paso las instrucciones del programa, "-t"

ITERACIONES:


La instruccion loop es util cuando se va a efectuar cierto bloque de instrucciones un numero finito de veces, por ejemplo;

CONTADOR:   DW,100
.
..
MOV       CX,CONTADOR

CICLO:
.
.
LOOP   CICLO

la instruccion que se encuentra entre itera y loop se ejecutara hsta que cx llege a 0, cada ves que se ejecuta cx se decrementa en 1 hasta llegar a cero


Los operadores son iguales a los utilizados en el lenguaje de programación C:

+ suma
- resta
* multiplicación
/ división
% residuo después de división
& and
I or
^ or exclusiva
Las expresiones son evaluadas de izquierda a derecha y las expresiones con paréntesis no están previstas. La aritmética es realizada con precisión de enteros en complemento a dos con signo.


Sería todo por el momento, mas adelante se verán mas instrucciones conforme valla subiendo los programas como es el manejo de interrupciones y de archivos.

No hay comentarios:

Publicar un comentario