ASM:
El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador.
Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente sólo se utiliza en contadas ocasiones, especialmente cuando se requiere la manipulación directa del hardware o se pretenden rendimientos inusuales de los equipos.
BP (BreakPoint):
sirve para detener el programa y ver el código ASM en la función que nosotros le digamos. Por ejemplo que se detenga cuando recoja el código que introducimos.
REGISTROS (Registers):
Los registros son básicamente sitios por defecto en dónde se guardan datos. Los únicos por los que os tenéis que preocupar son: (E)AX, (E)BX, (E)CX y (E)DX. (La (E) sólo es para cuando se debuguea en código de 32 bit) También están los registros de parejas:
DS:SI ; pueden ser usados como fuente (origen) para operaciones de cadenas.
ES:DI ; usado como el destino para las operaciones de cadenas
FLAGS:
Los Flags son esencialmente como los registros excepto que los Flags sólo pueden contener valores específicos, como verdadero o falso (1 o 0), etc.
Los flags son calculados por comandos como CMP y son usados para comprobar el resultado de una llamada (CALL), por ejemplo:
CMP AX,BX ; compara AX con BX, si son iguales el Flag 0 cambia
JZ 00124531 ; si el flag 0 ha cambiado, salta a 00124531, si no continua
LA PILA (STACK) Y LOS PUSH AND POP (PONER Y QUITAR):
Antes de cualquier función de llamada (a partir de ahora CALL), un programa debe PONER (a partir de ahora diremos PUSH) unos parámetros que la función espera encontrar en la pila (técnicamente llamado Stack). Los datos se colocan de una manera especial. Piensa lo siguiente. Piensalo como si fuera una "pila" (stack) de platos, el primer plato que ponemos (al hacer un montón) se queda abajo y será el último en coger; y el último en poner (el de arriba), es el primero en coger.
Recuerda esto cuando estés sobre una CALL, los parámetros son cogidos en orden inverso.
POP :
Se usa para borrar el primer "plato" de la pila. Normalmente, después de hacer uns PUSH y haber una llamada, se colocan varios POP para borrar los datos innecesarios.
AND:
Uso: AND dest, orig
Fin: Lleva a cabo una operación de tipo AND de las dos entradas, reemplazando el dest con el resultado.
Ejemplo: AND BX, 03h
CALL (Llamada):
Uso: CALL address (dirección)
Fin: Ejecuta una función en la dirección "address"
Ejemplo: CALL 10284312
INT (Interrupción):
Uso: INT interrupción
Fin: Llama a una función general
JMP (Salto):
Uso: JMP dirección
Fin: Equivale a un GOTO. Salta a la sección de código de la dirección.
Ejemplo: JMP 00402011
JMP es un salto incondicional. Tan simple como un GOTO :)
Hay muchas variantes. Las más importantes son:
JZ o JE » Salta si el Flag 0 es cambiado
JNZ o JNE » Salta si el Falg 0 no es modificado
MOV (Mover):
Uso: MOV dest, orig
Fin: Copia el byte o el valor de la palabra desde el orig al dest
Ejemplo: MOV AX, DX
RET (Retorno):
Uso: RET
Fin: Para volver de una función (Como si fuera RETURN)
Ejemplo: RET
Normalmente lo verás el final de una función, y sólo dice que vuelva a la dirección de la llamada (CALL) para continuar.
LEA (Como LET):
Uso: LEA dest, orig
Fin: Hace que el dest sea igual que el orig
Ejemplo: LEA EAX, [EBP-34]
Hace que EAX=EBP-34, fácil, no?
fuente: www.pablin.com.ar
Definiciones
Posted by ovni00
Suscribirse a:
Enviar comentarios (Atom)


0 Responses to "Definiciones"
Publicar un comentario en la entrada