Introducción al NASM. Convenciones de colores



Documentos relacionados
Modulo 1 El lenguaje Java

Matemáticas para la Computación

62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52

EL EMU8086 Y EL MICROPROCESADOR 8086.

OBTENER DATOS EXTERNOS

El sistema decimal, es aquél en el que se combinan 10 cifras (o dígitos) del 0 al 9 para indicar una cantidad específica.

Programación: QBASIC

Cualquier número de cualquier base se puede representar mediante la siguiente ecuación polinómica:

Matemática de redes Representación binaria de datos Bits y bytes

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 2: representación de la información

SISTEMAS DE NUMERACIÓN (11001, 011) = = (32,12)

La ventana de Microsoft Excel

Tema 1. SISTEMAS DE NUMERACION

COMO HACER UN CUMENTO DE WORD PARA TRABAJOS LARES

INSTRUCCIONES ARITMÉTICAS.

Conceptos básicos: 1,2 puntos

Instructivo de Microsoft Excel 2003


Introducción a Microsoft Word

Lección 1. Representación de números

EJERCICIOS DEL TEMA 1

FACULTAD DE INGENIERÍA, U.B.A. Seminario de Sistemas Embebidos TRABAJO PRÁCTICO 0

Pregunta correcta= 0,3 Pregunta no contestada= 0 Pregunta incorrecta (tipo test)= -0,15

Para dudas, comentarios escribe a: C BASICO

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

Sistemas de numeración y aritmética binaria

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

Microsoft Excel. El Documento Excel. Interfase de Programa. Celdas

Ensamblador. Interrupciones. Dentro de una computadora existen dos clases de interrupciones:

Sintaxis y Convenciones de Java. M. en C. Erika Vilches

Sistemas Numéricos. M. en C. Erika Vilches

Informática I. While & do While

Curso PHP Módulo 1 R-Luis

CCNA Discovery Networking para el hogar y pequeñas empresas

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Tema 2. Diseño del repertorio de instrucciones

Instalación del programa PSPP y obtención de una distribución de frecuencias.

PRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador.

Práctica de laboratorio Uso de la Calculadora de Windows con direcciones de red

Operación de Microsoft Word

Tema 2 : Códigos Binarios

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

INSTITUTO UNIVERSITARIO DE TECNOLOGÍA JOSE LEONARDO CHIRINO PUNTO FIJO EDO-FALCON CATEDRA: ARQUITECTURA DEL COMPUTADOR PROFESOR: ING.

1 MANUAL DE INSTALACIÓN

Entre los más conocidos editores con interfaz de desarrollo tenemos:

Notas de Teórico. Sistemas de Numeración

Sistema binario. Representación

Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte)

TABLA DE CONTENIDO LISTA DE FIGURAS

Centro de Capacitación en Informática

Sistemas de numeración

Ejercicio 1. Desarrollar un pequeño juego para practicar mecanografía.

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

Introducción a la Programación 11 O. Humberto Cervantes Maceda

Sistemas de numeración

Instituto Tecnológico de Celaya

Tutorial Sistema de indicadores Observatorio de la Persona Joven

UNIDADES DE ALMACENAMIENTO DE DATOS

UD 1. Representación de la información

Práctica 2: Sector de arranque

TEMA II: REPRESENTACIÓN DE LA INFORMACIÓN

Manual de usuario. Modulo Configurador V.1.0.1

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

Ilustrar el mecanismo de llamadas al sistema para solicitar servicios al sistema operativo.

Informática I Notas del curso

En la actualidad ASCII es un código de 8 bits, también conocido como ASCII extendido, que aumenta su capacidad con 128 caracteres adicionales

3.2 Operaciones aritmético-lógicas en Pascal

CAPÍTULO IV BREVE DESCRIPCIÓN DE LA INFRAESTRUCTURA DE CÓMPUTO VISUAL BASIC 6.0 PARA WINDOWS

GUIÓN EXCEL Objetivo Manejo del entorno para el desarrollo de pequeñas aplicaciones.

Capitulo V Administración de memoria

Buses y Periféricos 2006/2007 Práctica 3. Ensamblador

SISTEMAS DE NUMERACIÓN

Base de datos en Access

Módulo II - Word. Eliminar caracteres Selección de texto Selección de una palabra Selección de varias palabras...

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

TEMA 1 Representación de la información

En el desarrollo de esta práctica vamos a utilizar las diversas herramientas con las que cuenta Word para incluir dibujos en nuestros documentos.

"Programación en Ensamblador del microprocesador Pentium (I)"

DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO

Microsoft Excel Unidad 6. La Hoja de Cálculo

Soporte lógico de computadoras

Para ingresar a la aplicación Microsoft Word 97, los pasos que se deben seguir pueden ser los siguientes:

10 En este caso indica la dirección GPIB del instrumento.

3. FUNCIONAMIENTO DE LA FUNCIONES TXD Y RXD 4. EJEMPLO DE ENVÍO DE SMS DESDE EL PLC 5. EJEMPLO DE RECEPCIÓN DE SMS EN EL PLC

TEMA 2: Representación de la Información en las computadoras

Universidad Popular Autónoma del Estado de Puebla

SISTEMAS DE NUMERACIÓN. Sistema decimal

MÓDULO III PROGRAMACIÓN DEL MICROPROCESADOR

ZILOG DEVELOPER STUDIO

Academia técnica de computación A.T.C.

Universidad Popular Autónoma del Estado de Puebla

La visualización de la ventana de Word tiene las siguientes partes:

Matemáticas Básicas para Computación

Tema 3 Elementos básicos de programación

Materia: Informática. Nota de Clases Sistemas de Numeración

Las propiedades de la clase en java es el equivalente a las variables globales en lenguajes estructurados como el C.

2.1.- EJEMPLO DE UN PROGRAMA FORTRAN

PROTEUS Depuración de programas para microprocesadores

MATERIAL 2 EXCEL 2007

Transcripción:

Introducción al NASM The Netwide Assembler MIA J. Rafael Rojano C. 1 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. 2 1

[section.text]..start: ;colocar código mov ah,4ch int 21h Esqueleto básico [section.data] ;variables inicializadas MIA J. Rafael Rojano C. 3 Pseudo-op ORG 100h 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. 4 2

Etiquetas Tanto en los lenguajes de alto nivel como en los de bajo nivel, se puede hacer referencia a las posiciones (direcciones) de memoria mediante un símbolo. Tales símbolos se llaman etiquetas. Así pues tendremos dos tipos de etiquetas esencialmente: Etiquetas 1) Etiquetas para hacer referencia a posiciones dentro del programa (líneas) 2) Etiquetas para hacer referencia a variables del programa MIA J. Rafael Rojano C. 5 Declarando etiquetas(1) En el primer caso (líneas de código) la definición de una etiqueta se hace mediante un nombre que termine en dos puntos, por ejemplo: ciclo: salto: En el segundo caso (variables) las etiquetas se declaran mediante un nombre, la instrucción DB y el valor de inicialización. Recordar: cada declaración ya sea variable o línea de código esta haciendo referencia a una posición de la memoria particular. MIA J. Rafael Rojano C. 6 3

Declarando etiquetas(2) Veamos ejemplos ahora de la declaración de variables. No debemos olvidar que la declaración de las variables se hace en el segmento de datos El formato general de la declaración es: Nombre DB lista Donde nombre es la etiqueta que usaremos como una variable DB define el tamaño del dato a asignar (pueden usarse DW, DQ o DT) Y lista, representa el valor o valores con los que se inicializa 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 4

Ejemplos de distintas declaraciones Nombre db juan perez ; declara una cadena de longitud 10, ya que cada letra ocupa un byte Edad db 15h ; aquí juan tiene 21 puesto que la h indica decimal Sexo db h ; sexo ocupa un byte de longitud Direccion db av. Xalapa s/n ; otra cadena Contador db 0 ; contado se inicializa a cero Aux dw 0 ; aux ocupa dos byte ya que es word la declaración arreglo1 db 0,0,0,0,0 ;este arreglo ocupa 5 bytes, uno por cada cero arreglo2 dw 1,2,3,4,5 ;este arreglo ocupa 10 bytes, dos por cada digito, ya que se declararon como word MIA J. Rafael Rojano C. 9 Reserva de espacio Cuando se trata de declarar espacio para cadenas muy grandes no tiene caso que enumeremos todos los bytes, en su lugar usamos RESB o RESW RESB reserva un bloque de memoria de tamaño de N bytes, ejemplos: Var1 resb 8 ;reserva 8 bytes para var1 Var2 resb 4 ;reserva 4 bytes para var2 También se pueden reservar bytes de tamaño word con la directiva RESW Var3 resw 4 ;reserva 8 bytes MIA J. Rafael Rojano C. 10 5

Declaración de constantes No olvidar que comunmente en la declaración también se usan constantes. Para ello se emplea la instrucción EQU La sintaxis de EQU es similar a la de DB, solo que en lugar del db o dw se pone EQU, ejemplo: Etiqueta EQU valor En conjunto a la declaración de constantes, el nasm define dos pseudo operaciones que permiten el cálculo de direcciones estas dos constantes especiales son $ y $$, a continuación se explican MIA J. Rafael Rojano C. 11 Constantes especiales(1) El $ define la posición de la dirección de memoria al inicio de donde lo coloquemos, ejemplo: msj db pepito tamaño EQU $ - msj Ya que $ regresa la posición en donde éste se encuentra; si realizamos una resta del valor que tiene $ menos la posición de la etiqueta msj, lo que obtendremos como resultado es la longitud de la declaración msj. En este caso el resultado lo asignamos a la variable tamaño. Tamaño es igual a 6 MIA J. Rafael Rojano C. 12 6

Constantes especiales(2) De forma similar, el uso de la constante $$ regresa la dirección segmento en donde incluyamos esta constante. Por ejemplo: var1 db variable 1$ var2 db variable 2$ valor db 10 espacio EQU $ - $$ En este caso lo que se obtiene como resultado es la longitud de espacio ocupada por todo el segmento hasta antes la declaración de la variable espacio. Para este ejemplo el valor es 23d o 17h. Un byte por cada caracter MIA J. Rafael Rojano C. 13 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. 14 7

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. 15 Ejemplos de programa com ;[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] mov dx, msj mov ah,09 int 21h ;Main code segment int 20h [SEGMENT.data] msj db 'simple mensaje$' [SEGMENT.bss] ;Initialised data segment ;Uninitialised data segment MIA J. Rafael Rojano C. 16 8

Ejemplos de programa exe ;[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 int 21h segment data msj db 'hola muchachos...$' MIA J. Rafael Rojano C. 17 Diferencia de los com y exe(1) En los ejemplos anteriores las diferencias principales aparecen en negritas y con fuente color azul. Los com inician en la posición 100h Los exe emplean la directiva..start: para marcar el punto de inicio que puede ser 0 Los com finalizan el programa mediante la int 20 Los exe emplean la función 4ch de la interrupción 21 MIA J. Rafael Rojano C. 18 9

Diferencia de los com y exe(2) Otra diferencia substancial es como se compilan y ligan: Los com solo se compilan Nasm f bin hola.asm Los exe se compilan y ligan. Nasm f obj hola.asm Alink hola.obj MIA J. Rafael Rojano C. 19 Desde la interfase Si trabajas compilando desde la interfase debes hacer dos adecuaciones importantes para compilar los com y los exe Para ello deberás cambiar el tipo de archivo de salida desde el menú options/assembler y luego en la sección de target elegir la salida adecuada MIA J. Rafael Rojano C. 20 10

Donde esta el menú Tranquilo, aquí esta el menú options, luego buscas el submenú Assembler MIA J. Rafael Rojano C. 21 Seleccionar target para com Del paso anterior abrirá esta ventana, aquí eliges la opción com executable MIA J. Rafael Rojano C. 22 11

Si el target es exe Del paso anterior abrirá esta ventana, aquí eliges la opción sys device o bien Dos 16 para generar el archivo exe MIA J. Rafael Rojano C. 23 12