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

Slides:



Advertisements
Presentaciones similares
Instrucciones de operación sobre datos
Advertisements

DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
DEBUG.EXE.
REGISTROS INTERNOS DEL PROCESADOR.
CLASE 4 EL ENSAMBLADOR.
CLASE 3 SOFTWARE DEL MICROPROCESADOR
CLASE 6 TALLER: MACROENSAMBLADOR
Introducción a Simulink
Declaración de datos en el segmento de datos.. EXISTEN UN CONJUNTO DE DIRECTIVAS QUE NOS PERMITEN DECLARAR DATOS EN EL SEGMENTO DE DATOS, LAS DIRECTIVAS.
No. Lista 31 Teresita Ramírez Uribe HORA: 8:00-9:00AM.
MODOS DE DIRECCIONAMIENTO
N.L 32 ROMERO HERNÁNDEZ GABRIELA VERÓNICA. HORA: 8:00-9:00AM ESQUELETO DE UN PROGRAMA EN ENSAMBLADOR.
Direcciones, Arreglos y Argumentos de Funciones
Programación en ensamblador
SEMANA 9_2.
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Assembly y el Simulador SPIM
TASM: Ensamblador Se le llama ensamblador no sólo al lenguaje; sino también al programa que traduce el código fuente escrito en ensamblador, a código objeto,
3. INTRODUCCIÓN A LA PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
Netwide Assembler o NASM
Programación en Lenguaje Ensamblador.
Problema a Resolver: mostrar por pantalla el mensaje “Hola Mundo!”
Introducción a lenguaje C
INTRODUCCION AL ASSEMBLER 86
Conceptos Básicos de Java
POO Java Módulo 3 Elementos de programas Identificadores
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
Evidencia no. 5 modos de direccionamiento Paréntesis para poder resolverla ADD OP-DESTINO, OP.FUENTE OP1 OP2 SUMA= ADD ¿Cómo funciona? Op_Destino=Op_Destino+Op.Fuente.
MODOS DE DIRECCIONAMIENTO No. Lista 21 7am Rivas chacón Ana cristina
MODOS DE DIRECCIONAMIENTO
Introducción al lenguaje ensamblador
Tema 2: INTRUCCIONES Profesor: Carlos Concha S LENGUAJES DE BAJO NIVEL.
Programación III Clase 07 Funciones.
MODOS DE DIRECCIONAMIENTO
Índice. Revisando conceptos acerca de la memoria.
1 SEMANA 04_2. 2 OPERADORES ARITMETICOS OPERADOR: + FORMATO: VALOR1 + VALOR2 FUNCION : SUMA VALOR1 Y VALOR2 EJEMPLO : TABLA_MAS_2 DW TABLA + 2 ; (DESPLAZAMIENTO.
Lenguaje Ensamblador Unidad 2
Secciones y Segmentos STARTUP
PBN © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS.
Microprocesador (80X86) Universidad Nacional de Ingeniería
Unidad I: Registros e Interrupciones Facilitador: Ing. Eduardo Brando.
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006.
introducción al Lenguaje Ensamblador
MODOS Y METODOS DE DIRECCIONAMIENTO
Modos de Direccionamiento  No. 18  8:00-9:00am  Lenguaje ensamblador.

PROGRAMACION A BAJO NIVEL
MODOS DE DIRECCIONAMIENTO
Términos algoritmo diseñar algoritmo implementar algoritmo
SEMANA 01_2.
N.L 32 ROMERO HERNÁNDEZ GABRIELA VERÓNICA. HORA: 8:00-9:00AM ESQUELETO DE UN PROGRAMA EN ENSAMBLADOR.
No. De lista: 27 No. De lista: 27 Hora: 8-9 am Hora: 8-9 am Materia: Lenguaje Ensamblador Materia: Lenguaje Ensamblador.
Ing. Lionel Hendryk. Sistemas Embebidos Un sistema embebido es un sistema de computación diseñado para realizar una o algunas pocas funciones dedicadas.
METODOS DE DIRECCIONAMIENTO NO. 12 HORA: 8:00 ENSAMBLADOR MIGUEL ALEJANDRO DAVALOS HUERTA.
No. 26 8:00 a.m. Lenguaje Ensamblador. Segmento de Pila  Model small  stack  Data  Code  mov  mov ds, ax  push ds  …código del programa.
No. De Lista: 23 Hora: 8:00 a 9:00 Lenguaje Ensamblador.

introducción al Lenguaje Ensamblador
Lenguaje de programación c
No. Lista 9 8:00 am-09:00 am LENGUAJE ENSAMBLADOR.
EL TIPO DE DATO LOGICO y constantes.
Modos de Direccionamiento
Modos de Direccionamiento No. Lista 31 7 am Lenguaje ensamblador.
Lenguaje ensamblador Conceptos introductorios. Formatos de Instrucción. Modos de Direccionamiento. Conjunto de instrucciones básico. Introducción al Lenguaje.
Arquitectura de PCs El ambiente de desarrollo. Introducción Ambiente de desarrollo del curso: - CPU Intel Teclado - Monitor color - Disco duro.
Arquitectura de PCs Lenguaje ASM Intel Lenguaje de máquina y ASM Toda CPU interpreta su código de máquina propio Instrucciones en código de máquina.
Arquitectura de PCs Secuencia de compilación de un programa.
P ROCESO DE E NSAMBLADO Cámara Vázquez Berenice Rubí.
Katty Evangelina Hipólito Chi.   Aunque cada maquina tiene un lenguaje ensamblador distinto, el proceso de ensamblador tiene suficiente similitudes.
Transcripción de la presentación:

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

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.