Sie sind auf Seite 1von 5

iNSTRuCCioNeS BaSiCaS De eNSaMBLaDoR

En este apartado os presentare unas cuantas instrucciones bsicas de ensamblador.


No espereis saber programar en este lenguaje con lo que os voy a presentar (para
ello debereis seguir otros tutoriales, como los que estoy haciendo yo y que pod
ras encontrar en mi web, ;-)), esto tan solo es una pequea ayuda para que entenda
is como funciona un programa y no os perdais en el codigo. Para ello empezare co
n los diferentes tipos de saltos que existen en Ensamblador (Asm de ahora en ade
lante).
Empezaremos diciendo que en ensamblador no existen las instrucciones IF (bueno,
si que existen pero no con la misma utilidad que tienes para lenguajes de alto n
ivel como C), FOR, WHILE ... en sustitucion a esto, existen todo tipo de saltos
condicionales. Por ejemplo:
mov ax,05 <-- AX = 5
mov bx,06 <-- BX = 6
cmp ax,bx <-- Compara AX com BX
je Bien <-- JE (Jump if Equal) Salta a "Bien" si AX y BX son iguales
[Mal] <-- Si son diferentes, continua con la siguiente instruccion
Despues de esto os presentare una serie de saltos:
JA
Salto si esta encima de
JAE
Salto si esta encima de o igual
JB
Salto si debajo de
JBE
Salto si debajo de o igual
JC
Salto si lleva (acarreo)
JCXZ
Salto si CX = 0
JECXZ
Salto si ECX = 0
JE
Salto si igual
JG

Salto si mayor
JGE
Salto si mayor o igual
JL
Salto si menor
JLE
Salto si menor o igual
JNA
Salto si no encima de
JNAE
Salto si no encima de o igual
JNC
Salto si no hay acarreo
JNE
Salto si no igual
JNG
Salto si no mayor
JNGE
Salto si no mayor o igual
JNL
Salto si no menor
JNLE
Salto si no menor o igual
JNO
Salto si no Overflow (dividido entre 0)
JNP
Salto si no paridad
JNS
Salto si no signo (es decir igual a cero)
JNZ

Salto si no es cero
JO
Salto si Overflow
JP
Salto si paridad
JPE
Salto si la paridad es igual
JPO
Salto si la parida es impar
JS
Salto si hay signo
JZ
Salto si es cero
JMP
Salto incondicional (es decir salta siempre)
Bueno esta es la lista (creo que completa) de los salto que existen en ensamblad
or. Ya es hora de que vayamos a por los registros bsicos:
Los registros internos son 14, cuyos Bits se numeran de derecha a izquierda, sie
ndo 0 el Bit menos significativo. Los registros que ahora indico son los de 16 b
its, para los registros de 32 bits (los usados hoy en dia) debemos poner una "E"
delante.
Registros de Datos
AX (EAX) = Acumulador. Registro principalutilizado en la instruccuiones aritmtica
s
BX (EBX) = Base. Se usa para indicar un desplazamiento (Offset)
CX (ECX) = Contador. Se utiliza como contador en los bucles y en operaciones rep
etitivas
DX (EDX) = Dato. Se usa tambin en operaciones aritmticas
Registros de Segmentos
CS = Registro de segmento de cdigo (Code Segment). Contiene la direccin del segmen
to de cdigo

DS = Registro de segmento de datos (Data Segment). Contiene la direccin del segme


nto de datos
SS = Registro de segmento de pila (Stak Segment). Contiene la direccin del segmen
to de pila
ES = Registro de segmento extra (Extra Segment). Contiene la direccin del segment
o extra
Registros Punteros de la Pila
SP (ESP) = Puntero de la pila (Stak Pointer) Contiene la direccin relativa al seg
mento de la pila
BP (EBP) = Puntero base (Base Pointer) Se usa para fijar el puntero de la pila
Registro de Instruccin
IP (EIP) = Puntero de Instruccin (Instructuion Pointer). Tambin llamado contador d
e programa. Contiene el desplazamiento de la instruccin siguiente a ejecutar resp
ecto al segmento de cdigo del programa en ejecucin. Unido a CS (CS:IP) indica la d
ireccin completa de la siguiente instruccin a ejecutar.
Despues de esto tenemos los registros de banderas:
Registro de Banderas (de estado)
CF = Bandera de Acarreo (Carry Flag) Indica el acarreo en intrucciones aritmticas
OF = Bandera de desbordamiento (Overflow Flag)
ZF = Bandera de resultado cero o comparacin igual (Zero Flag)
SF = Bandera de resultado o comparacin negativa (Sign Falg)
PF = Bandera de paridad (Parity Falg)
AF = Bandera auziliar (Auxiliar Falg)
Registro de Banderas (de control)
DF = Bandera de direccin (Direction Flag)
IF = Bandera de interrupciones (Interrupt Flag)
TF = Bandera de atrape (Trap Flag) Controla la operacin modo paso a paso
Debemos indicar que los registros de datos poseen dos "partes" (por asi decirlo)
. La parte alta (High) y la parte baja (Low) por ello pueden ser divididos asi:
AX = AH (High) + AL (Low)
Si AX es de 16 bits, AH es de 8 bits y AL tambien de 8 Bits, pero si es EAX (32
Bits), logicamente AH y AL seran de 16 Bits cada una.

Se que esta introduccion de Ensamblador es un poco floja pero creo que es sufici
ente para defenderte algo en el cracking, si quereis saber mas mirad en la secci
on de "Direcciones a tener en cuenta".

Das könnte Ihnen auch gefallen