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