Facebook Twitter RSS Reset

Introducción al Assembler

El post va a ser puramente práctico, si alguien está interesado pero no sabe bien de qué se trata el assembler le recomiendo buscar un poco por internet para estar al tanto!

Esto está realizado en un emulador de debug ya que no corre en los SO de 64 bits o en los mas nuevos ya ni viene. De todas formas se pueden buscar por internet algún emulador y listo! O si bien tienen alguna PC con un win de 32b ejecutan el CMD y escriben DEBUG y ya entran!

*Gracias titi40 por recordarme esto Introducción al AssemblerIntroducción al Assembler

Aspectos a tener en cuenta (hay muchos más pero para iniciar en el tema alcanza):

enter E address

Introducción al Assembler
Introducción al Assembler

assemble A

Introducción al Assembler

unassemble U

Introducción al Assembler

register R

Introducción al Assembler

Los registros que vamos a utilizar tienen una parte baja y una parte alta, es decir:

*El registro AX tiene una parte AH y una parte AL que se componen de 8 bits cada una.

Introducción al Assembler

De todas formas lo veremos más adelante.

Caso práctico 1:

Colocar en la posición de memoria 0100 el dato 02 00.

Colocar en la posición de memoria 0200 el dato 04 00.

Verificar que estén correctos.

Comenzar a escribir las instrucciones desde la posición 1000.

Mover al registro AX el dato de la posición 0100.

Mover al registro BX el dato de la posición 0200.

Sumarle al registro AX el registro BX.

Mover lo que esté dentro del registro AX a la posición de memoria 0300.

Verificar que estén correctos.

Ejecutar el programa!

Bien ahora voy a explicar paso por paso:

1) Colocar en la posición de memoria 0100 el dato 02 00.

Hacemos un E en la posición 0100 y escribimos primero 02 y luego 00 (tocando la barra espaciadora sigue en la memoria).

Introducción al Assembler

2) Colocar en la posición de memoria 0200 el dato 04 00.

Introducción al Assembler

3) Verificar que estén correctos.

Hacemos un E en la posición 0100 y otro en la 0200 para comprobar que estén los datos (simplemente hacemos E [posición], tocamos enter y vamos presionando la barra espaciadora).

Introducción al Assembler

4) Comenzar a escribir las instrucciones desde la posición 1000.

Vamos a empezar a hacer el A (assemble de las instrucciones a partir de la posición 1000)

Introducción al Assembler

5) Mover al registro AX el dato de la posición 0100.

Es decir, nos pide que movamos hacia la posición 0100 el número 2 (en este caso vamos a usar el registro entero, parte baja y alta).

Al escribir 02 00 quedaría como si fuese 0002, son 8 bits y 8 bits.

Entonces:

Hacemos con el comando A (assemble) en la posición 1000 un MOV AX, [0100].

Introducción al Assembler

Se está moviendo al registro AX lo que hay dentro de la posición [0100].

6) Mover al registro BX el dato de la posición 0200.

Les recomiendo escribir todas las instrucciones seguidas para no hacerse lío con las posiciones de memoria.

Introducción al Assembler

Muevo a BX lo que hay dentro de la posición [0200].

7) Sumarle al registro AX el registro BX.

Le adicionamos (add) al registro AX lo que hay en el registro BX.

Introducción al Assembler

8) Mover lo que esté dentro del registro AX a la posición de memoria 0300.

Primero va la posición de destino y luego lo que se va a mover.

Introducción al Assembler

9) Verificar que estén correctos.

Introducción al Assembler

10) Ejecutar el programa!

Para ejecutar el programa se utiliza el comando P lo cual va a ejecutar instrucción por instrucción comenzando desde la posición de memoria que indique el IP.

Introducción al Assembler

En nuestro caso el programa va a comenzar en la posición de memoria 1000, entonces tenemos que cambiar el valor del registro con el comando RIP.

Introducción al Assembler

También sirve para cambiar otros registro, por ejemplo en el caso de AX sería RAX.

Bien, ahora solo queda ir ejecutando con el comando P instrucción por instrucción.

Introducción al Assembler

Luego de ejecutar todas las instrucciones vamos a observar la posición de memoria 0300 en la cual si todo salió bien tendría que estar el valor 06 00 (6).

Introducción al Assembler

Bueno esto es una introducción muy básica, si a alguien le interesa después hago una segunda parte con más ejemplos y con instrucciones ya un poco mas complejas.

No comments yet.

Leave a Comment