La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Introducción al NASM The Netwide Assembler MIA J. Rafael Rojano C.

Presentaciones similares


Presentación del tema: "Introducción al NASM The Netwide Assembler MIA J. Rafael Rojano C."— Transcripción de la presentación:

1 Introducción al NASM The Netwide Assembler MIA J. Rafael Rojano C.

2 Convenciones de colores
Rojo= Directivas propias del nasm sin traducción directa a ensamblador Morado= Directivas del ensamblador En fondo naranja la sintaxis general En fondo azul los ejemplos concretos MIA J. Rafael Rojano C.

3 Esqueleto básico [section .text] ..start: [section .data]
;colocar código mov ah,4ch int 21h [section .data] ;variables inicializadas MIA J. Rafael Rojano C.

4 Pseudo-op ORG 100h SECTION .text SECTION .data SECTION .bss
Define la dirección de “origen”. En el caso de programas com la dirección es 100h SECTION .text Define el inicio de un grupo de instrucciones para ser ensambladas en un código ejecutable. SECTION .data Define el inicio de un grupo de declaraciones que son inicializadas en el segmento de datos. SECTION .bss Define el inicio de un grupo de declaraciones no inicializadas. El uso de la directiva SECTION puede ser intercalada en cualquier orden, ya que cuando el código se compila todas las secciones son concatenadas. Primero .text, luego .data y .bss. (la sección.bss no genera código en realidad pero el proceso de reservación de bloques de memoria provoca que las etiquetas asociadas tomen los valores correctos). MIA J. Rafael Rojano C.

5 Declarando etiquetas(1)
El uso de etiquetas permite hacer referencia a una dirección de memoria por medio de un nombre simbólico en lugar de un valor. La declaración se hace con la directiva DB Las declaraciones se asocian con la dirección del segmento en donde se declaran. MIA J. Rafael Rojano C.

6 Declarando etiquetas(2)
El formato de declaración es Nombre_et DB lista Donde nombre es el nombre como si fuera “una variable” DB define el tamaño del dato a asignar (pueden usarse DW, DQ o DT) Ejemplo: Nombre DB “juanito”, 0dh, 0ah ; CR y LF MIA J. Rafael Rojano C.

7 Declarando etiquetas(3)
Los valores que son asignados a la variable pueden ser numéricos o cadenas Para los numéricos el default es decimal, pero si se desea otra base se usan: h para hexadecimal q para octal b para binario Los datos alfanúmericos se colocan entre apostrofes ´ o comillas ” MIA J. Rafael Rojano C.

8 Reserva de espacio Existe otra directiva llamada RESB por medio de la cual se reserva un bloque de memoria de n bytes, ejemplo: Var1 resb 8 ;reserva 8 bytes Var2 resb 4 ;reserva 4 bytes También se pueden reservar bytes de tamaño word con la directiva RESW MIA J. Rafael Rojano C.

9 Declaración de constantes
Existe el uso de una directiva para definición particular de constantes, así como la redefinición de etiquetas. Tal directiva es EQU. Etiqueta EQU valor Asociados a esta declaración existen dos constantes especiales que son $ y $$ MIA J. Rafael Rojano C.

10 Constantes especiales(1)
El $ define la dirección de memoria al inicio de la declaración msj db “pepito” tamaño EQU $ - msj Aquí la variable tamaño tiene la diferencia de $ (valor de inicio de la dirección para la declaración tamaño) menos la dirección de donde se declaro msj. El valor de tamaño es 6 MIA J. Rafael Rojano C.

11 Constantes especiales(2)
El uso de la constante $$ evalúa la dirección al inicio del segmento de la declaración. Por ejemplo: var1 db “variable 1$” var2 db “variable 2$” valor db 10 espacio EQU $ - $$ Obtiene en la variable espacio la cantidad de espacio utilizado en el segmento hasta la declaración actual. Para este ejemplo el valor es 23d o 17h. MIA J. Rafael Rojano C.

12 Compilación Para compilar en un ambiente de windows se opta por tener dos formatos de salida: Los obj que representan aplicaciones típicas .exe de 16 o 32 bits Los bin que representan programas típicos como los .com Para compilar desde la línea de comandos se hace tecleando: nasm –f obj archivo.asm MIA J. Rafael Rojano C.

13 Ligado Un proceso necesario para la generación de archivos ejecutables es el ligado a través del cual se agregan todos los elementos necesarios para el ambiente de ejecución del programa. La compilación en línea de comandos se hace tecleando: alink archivo.obj Como resultado obtenemos un archivo con extensión .exe MIA J. Rafael Rojano C.

14 Ejemplos de programas(1)
;[File]: uniseg.asm ;[Author]: J. Rafael Rojano C. ;NASM-IDE ASM Assistant Assembler Project File [BITS 16] ;Set code generation to 16 bit mode [ORG 0x0100] ;Set code start address to 0000h [SEGMENT .text] ;Main code segment mov dx, msj mov ah,09 int 21h mov ah,4ch [SEGMENT .data] ;Initialised data segment msj db 'simple mensaje$' [SEGMENT .bss] ;Uninitialised data segment ;Para compilar use: ; nasm -f bin uniseg.asm -o uniseg.com ; o bien si bin es el default (nasm -hf) ; nasm uniseg.asm -o uniseg.com MIA J. Rafael Rojano C.

15 Ejemplos de programas(2)
;[File]: firstexe.asm ;[Author]: J. Rafael Rojano C. segment code ..start: mov ax,data mov ds,ax mov dx,msj mov ah,9 int 21h mov ah,4ch segment data msj db 'hola muchachitos...$' Nasm –f obj firstexe.asm Alink firstexe.obj Nota no hay pila por lo que manda una advertensia MIA J. Rafael Rojano C.

16 Ejemplos de programas(3)
;[File]: firstexe.asm ;[Author]: J. Rafael Rojano C. segment datos data longi db 10 numcar db 0 cadena resb 10 msj1 db 'Teclea una cadena: $' msj2 db 'escribe caracter de busqueda: $' msj3 db 'escribe caracter de rempleazo: $' B db 0 R db 0 segment pila stack resb 0x64 segment codigo code ..start: ;Inicializa DS y ES mov ax,datos mov ds,ax mov es,ax ;inicia programa mov dx,msj1 mov ah,9 int 21h mov dx,longi mov ah,0ah int 21h mov dx,msj2 mov ah,9 mov ah,01 mov [B],al mov dx,msj3 mov [R],al ; coloca indice en cadena mov si,cadena mov di,cadena xor cx,cx mov cl,[numcar] ciclo: lodsb cmp al,[B] jne .siguiente mov al,[R] .siguiente: stosb loop ciclo mov al,'$' mov dx,cadena mov ah,9 int 21h mov ah,01 mov ah,4ch MIA J. Rafael Rojano C.


Descargar ppt "Introducción al NASM The Netwide Assembler MIA J. Rafael Rojano C."

Presentaciones similares


Anuncios Google