• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Lenguaje Ensamblador
 

Lenguaje Ensamblador

on

  • 70,680 views

 

Statistics

Views

Total Views
70,680
Views on SlideShare
70,140
Embed Views
540

Actions

Likes
6
Downloads
1,032
Comments
4

7 Embeds 540

http://www.slideshare.net 481
http://ensamblador-cs.blogspot.com 33
http://ensamblador-cs.blogspot.mx 11
http://webcache.googleusercontent.com 6
http://ensamblador-cs.blogspot.com.es 4
http://us-w1.rockmelt.com 3
http://ensamblador-cs.blogspot.com.ar 2
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

14 of 4 previous next Post a comment

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Muy completo y estructurado.
    Are you sure you want to
    Your message goes here
    Processing…
  • (:
    Are you sure you want to
    Your message goes here
    Processing…
  • muy buena informacion
    Are you sure you want to
    Your message goes here
    Processing…
  • esta muy completo... gracias era lo que buscaba
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Lenguaje Ensamblador Lenguaje Ensamblador Presentation Transcript

    • LENGUAJE ENSAMBLADOR CONTINUACION
    • DWORD y SDWORD
      • Valor1 DWORD 12345678h; sin signo
      • Valor2 SDWORD -2147483648; con signo
      • Valor3 DWORD 20 DUP(?)
      • Versiones viejas del ensamblador usan la directiva DD para definir palabras dobles con y sin signo. Valor1 DD 12345678h; sin signo valor2 DD -2147483648; con signo
      • Lista DWORD 1, 2, 3, 4, 5; arreglo de palabras dobles
    • QWORD y TBYTE
      • QWORD designa localidades para valores de 8 bytes (4 palabras). Valor1 QWORD 1234567812345678h Usted puede usar DQ por compatibilidad con ensambladores viejos.
      • TBYTE designa localidades para valores de 10 bytes (enteros de 80 bits). Se puede usar DT por compatibilidad con ensambladores viejos. Valor1 TBYTE 1000000000123456789Ah
    • REAL4, REAL8 y REAL10
      • REAL4 define una variable real de 4 bytes.
      • REAL8 define una variable real de 8 bytes.
      • REAL10 define una variable real de 10 bytes. Ejemplos rvalor1 REAL4 -2.1 rvalor2 REAL8 3.2E-260 rvalor3 REAL10 4.6E+4096 arreglo REAL4 20 DUP(0.0)
    • Ejemplo: Suma y Resta
      • Esta secuencia de instrucciones suma y resta enteros de 32 bits.
      • MOV EAX, 10000H; EAX=10000H ADD EAX, 40000H; EAX=50000H SUB EAX, 20000H; EAX=30000H
    • Ejemplo de Suma y Resta usando variables
      • Esta secuencia de instrucciones suma y resta enteros sin signo de 32 bits y almacena el resultado en una variable. Valor1 DWORD 10000h valor2 DWORD 40000h valor3 DWORD 20000h resultado DWORD ? MOV EAX, valor1 ADD EAX, valor2 SUB EAX, valor3 MOV resultado, EAX
    • Constantes Simbólicas
      • Una constante simb ó lica se define asociando un identificador (un s í mbolo) con una expresi ó n entera o con texto.
      • A diferencia de una variable, la cual reserva memoria, una constante simb ó lica no usa memoria.
      • Las constantes simb ó licas se usan solamente durante el ensamblado del programa, ellas no cambian durante la ejecuci ó n del programa (runtime).
    • Directiva =
      • La directiva = asocia el nombre de un s í mbolo con una expresi ó n entera. La sintaxis es: nombre = expresi ó n contador = 500 mov ax, contador lo que se genera y ensambla es mov ax, 500
    • Directiva =
      • esc_key = 27 mov al, esc_key
      • Contador = 100 arreglo DWORD contador DUP(0)
      • El s í mbolo definido con = puede ser redefinido cualquier n ú mero de veces: CNT = 5 mov al, CNT ; AL = 5 CNT = 10 mov al, CNT ; AL = 10 CNT = 100 mov al, CNT ; AL = 100
    • C á lculo del tama ñ o de arreglos y cadena de caracteres
      • lista BYTE 10, 20, 30, 40, 50 tama ñ o_lista = ($ - lista) MASM usa el operador $(contador de localidades) para devolver el desplazamiento asociado con la localidad actual.
      • mi_cadena BYTE “ Esta es una cadena ” BYTE “ larga que contiene ” BYTE “ cualquier n ú mero de ” BYTE “ caracteres ” tama ñ o_cadena = ($ - mi_cadena)
    • Directiva EQU
      • La directiva EQU asocia el nombre de un s í mbolo con una expresi ó n entera o con texto. Hay tres formatos: nombre EQU expresi ó n nombre EQU s í mbolo nombre EQU <texto>
      • En el primer formato, expresi ó n debe ser una expresi ó n entera v á lida.
      • En el segundo formato, s í mbolo es el nombre de un s í mbolo previamente definido con = o EQU .
      • En el tercer formato cualquier texto puede aparecer dentro de < …… > .
      • Cada vez que el ensamblador encuentra nombre sustituye el valor entero o el texto por el s í mbolo.
    • Ejemplos de EQU
      • EQU es muy ú til para definir cualquier valor que no eval ú a a entero. Por ejemplo: PI EQU <3.1415926>
      • matriz1 EQU 10*10 matriz2 EQU <10*10> ……………………… M1 WORD matriz1 M2 WORD matriz2 El ensamblador genera: M1 WORD 100 M2 WORD 10*10
      • BBB EQU AA + 5 BBB EQU AA + 10: ilegal
    • MAS DIRECTIVAS
      • Directiva TITLE [l í nea de texto] : marca la l í nea entera como comentario, permite poner t í tulo al programa. Ejemplo: TITLE Ordenar Números
      • Directiva INCLUDE [nombre archivo]: permite usar y copiar definiciones necesarias e informaci ó n de configuraci ó n desde un archivo de texto.
    • SEGMENT - ENDS
      • El formato general para un segmento es: nombre SEGMENT [align] [combine] [‘class’] ………….. nombre ENDS
      • Todos los operandos o atributos son opcionales .
      • Estas dos directivas definen segmentos completos.
    • Atributos de la directiva SEGMENT
      • El operando de la directiva SEGMENT puede tener tres tipos de atributos (opcionales): - Atributos de alineaci ó n: PARA, WORD, BYTE - Atributos de combinaci ó n: STACK, COMMON, PUBLIC, AT - Atributos de clase: ´CODE´, ´DATA´, ´STACK´ - estos atributos, entre ap ó strofes, son usados para agrupar segmentos relacionados cuando ejecutamos el LIGADOR.
      • Atributos de alineaci ó n PARA: el segmento inicia en una direcci ó n divisible para 16 (10H) WORD: el segmento inicia en una direcci ó n divisible para 2 BYTE: el segmento inicia en cualquier direcci ó n Nota: en caso de omisi ó n el ensamblador asume PARA
      • Atributos de combinaci ó n STACK: el ensamblador y ligador autom á ticamente cargan SS y SP y el segmento forma parte la pila durante la corrida. COMMON: sobrelapa segmentos que tienen el mismo nombre. PUBLIC: concatena segmentos que tienen el mismo nombre.
      • AT expresi ó n : ubica el segmento en una direcci ó n dada por expresi ó n.
    • ORG y ASSUME
      • La directiva ORG [address] le dice al ensamblador que inicie la generaci ó n de c ó digo a partir del desplazamiento de direcci ó n indicado por [address]. Se ubica inmediatamente despu é s de la directiva que define un segmento. ORG 100H
      • La directiva ASSUME le dice al ensamblador los nombres que han sido escogidos para los segmentos de datos, c ó digo, extra de datos y pila. Se ubica despu é s de la directiva segment ‘ code ’ . Assume cs:code_sg, ds:data_sg, ss:stack_sg
    • PROC – ENDP y END
      • Directivas PROC y ENDP : define procedimientos (subrutinas) nombre PROC FAR (o NEAR) ; procedimiento . … .. ; dentro del . … .. ; segmento . ret ; de c ó digo nombre ENDP
      • Directiva END : especifica el FIN del programa fuente.
    •  
    • Detalles del Ensamblador
      • Los segmentos l ó gicos contienen los tres componentes de un programa: CODE, DATA y STACK.
      • El ensamblador organiza las tres partes de tal forma que ocupe segmentos f í sicos de memoria. CS, DS y SS contienen las direcciones de memoria donde residen los segmentos l ó gicos.
      • Se puede definir segmentos de dos maneras: - Utilizando Modelos (segmentos simplificados) - Usando definiciones de segmento Completo.
    • Detalles del Ensamblador
      • Las directivas de segmento simplificado esconde muchos detalles de la definici ó n de segmento y asume las mismas normas de Microsoft usadas con los lenguajes de nivel alto.
      • Las definiciones de segmento completo requieren de una sintaxis m á s compleja, pero en cambio provee un control completo sobre c ó mo el ensamblador genera los segmentos.
      • Esto implica escribir directivas m á s complejas para manejar todas las tareas, que las directivas de segmento simplificado ejecutan autom á ticamente.
    • Directivas de Segmento Simplificado
      • Las directivas de segmento simplificado son: - .MODEL - .CODE - .CONST - .DATA - .DATA? - .FARDATA -. FARDATA? - .STACK
    • Modelos de Memoria del Ensamblador
      • Cada modelo define la manera como un programa se almacena en la memoria del sistema.
      • Por ejemplo, el modelo “ Tiny ” se usa para crear archivos .COM en lugar de archivos .EXE
      • Los archivos .COM son diferentes porque todos los datos y c ó digo calzan en un solo segmento y usan como origen la direcci ó n 100H.
      • Los archivos .COM se ejecutan m á s r á pido que los archivos .EXE.
      • Para la mayoría de las aplicaciones se usa los archivos .EXE y el modelo de memoria SMALL.
    • Modelos de Memoria del Ensamblador
      • Tiny - se combina datos y c ó digo en el mismo segmento, debe ser menor que 64K. Este modelo permite crear archivos .COM el cual se origina en la localidad 100H.
      • Small - contiene dos segmentos separados -Code <= 64K y Data <= 64K
      • Medium - contiene un segmento de datos y cualquier n ú mero de segmentos de c ó digo.
      • Compact - contiene un segmento de c ó digo y cualquier n ú mero de segmentos de datos.
      • Large - Permite cualquier n ú mero de segmentos de datos y c ó digo.
      • Huge Igual que Large, pero los segmentos de datos pueden tener m á s de 64K.
    •  
    • Ensamblado, Ligado y Ejecuci ó n de un Programa Programa Editor Programa Ensamblador Programa Ligador Ejecutar Programa Depurar Miarchivo.asm Miarchivo.obj Miarchivo.exe
    • Ejemplo de un Programa Fuente
      • title Ejemplo de un Programa Fuente datasg segment para ´data´ datoA word 250 datoB word 125 datoC word ? datasg ends codesg segment para ´code´ principal proc far assume cs: codesg, ds: datasg push ds mov ax,0 push ax mov ax, datasg mov ds,ax ;************************************************* mov ax, dataA add ax, dataB mov datoC, ax mov ax, 4c00h int 21h ret principal endp codesg ends end principal
    • Ejemplo
      • t itle Programa para mover datos en memoria datasg segment para ´data´ ;Definici ó n de constantes usadas en el programa n=16 tabla1=100h tabla2=120h datasg ends codesg segment para ´code´ principal proc far assume cs:codesg, ds: datasg ;aqu í instrucciones de inicializaci ó n ;Inicializar puntero fuente y puntero destino mov si, tabla1 mov di, tabla2 mov cx, n ; Inicializar contador proxnum: mov ah, [si] mov [di], ah inc si inc di dec cx jnz proxnum aqu í : jmp aqu í ret principal endp codesg ends end principal
    • Proceso de Arranque (boot process)
      • En el arranque se carga CS: IP con FFFFH: 0000H, punto de entrada a ROMBIOS.
      • Luego BIOS establece dos á reas de datos: tabla de vectores de interrupci ó n y datos de BIOS (hardware del sistema).
      • BIOS verifica si esta presente el sistema de archivos del DOS para accesar el Cargador del DOS.
      • El cargador del DOS lleva a memoria los archivos IO.SYS y MSDOS.SYS.
      • IO.SYS contiene “ drivers ” y c ó digos espec í ficos del harware; transfiere el control a MSDOS.
      • MSDOS a su vez inicializa tablas internas y la tabla de interrupciones del DOS. Lee el archivo CONFIG.SYS y ejecuta sus comandos.
      • Finalmente MSDOS pasa el control a COMMAND.COM el cual procesa el archivo AUTOEXEC.BAT y muestra el indicador C:> que indica que esta listo para recibir comandos.
    • Responsabilidades del DOS
      • Administrar el Sistema de Archivos
      • Entrada/ Salida de datos
      • Administrar memoria
      • Manejo de Interrupciones
      • Cargar programas para su ejecuci ó n
    • Carga de Programas para su Ejecuci ó n
      • El cargador del DOS accesa MIARCHIVO.EXE en disco.
      • Construye en memoria un Segmento Prefijo del Programa (PSP) de 256 bytes.
      • Almacena en memoria MIARCHIVO.EXE inmediatamente despu é s de PSP.
      • Carga la direcci ó n del Segmento Prefijo del Programa en DS y ES.
      • Carga CS: IP con la direcci ó n de la primera instrucci ó n de MIARCHIVO.EXE.
      • Carga el puntero SS: SP definiendo as í el tama ñ o de la Pila.
      • Transfiere el control a MIARCHIVO.EXE para su ejecuci ó n comenzando con la primera instrucci ó n en el Segmento de C ó digo.
      • Nota: Contenido de PSP p á gina 440 en: IBM PC Assembly Language and Programming por Peter Abel, Tercera Edici ó n.
    • Interface DOS-BIOS PROGRAMAS DE APLICACION COMMAND.COM MSDOS KERNEL BIOS ROM + IO.SYS “ HARWARE”
    • EL ROM-BIOS
      • El ROM-BIOS (Basic Input Output System) es parte del sistema de control en ROM de una IBM PC o compatible, provee los servicios de entrada y salida b á sicos para la operaci ó n de un computador. BIOS es una colecci ó n de procedimientos o subrutinas que implementan funciones espec í ficas tales como: leer caracteres desde el teclado, escribir caracteres en pantalla, leer informaci ó n desde un disco, etc.. Los servicios de BIOS m á s importantes son:
      • Servicios para perif é ricos . Interrupci ó n Uso 10H Despliegue de datos en pantalla 13H Control de diskettes 14H Control puertos seriales 15H Sevicios para Caseteras 16H Servicios Est á ndares de Teclado 17H Servicios para Control de impresora
    • EL ROM-BIOS
      • Servicios del estado de dispositivos Interrupci ó n Uso 11H Determinaci ó n de Equipos 12H Determinaci ó n de Memoria
      • Servicio Hora / Fecha Interrupci ó n Uso 1AH Servicio de Hora y Fecha
      • Servicio de Impresi ó n de pantalla Interrupci ó n Uso 05H Imprimir Pantalla
      • Servicios Especiales Interrupci ó n Uso 18H Activa ROM Basic 19H Activa Subrutina “ bootstrap start-up ”
    • Funciones del INT 10H
      • Funci ó n 00H: Selecciona Modo de Video AH = 00H AL = # de modo Ejemplo: AL = 03H pantalla color tipo texto 25 filas X 80 columnas
      • Funci ó n 01H: Fija tama ñ o de Cursor. AH = 01H CH = (bits 4-0) = l í nea inicial (0) CL = (bits 4-0) = l í nea final (13 monocrom á tico, 7 para color)
      • Funci ó n 02H: Posici ó n del Cursor AH = 02H BH = # p á gina (normalmente 0) DH = # de fila DL = # de columna
      • Funci ó n 06H: Buscar con avance de p á gina AH = 06H AL = # filas para buscar(0 borra ventana) BH = atributo de caracteres CH = fila superior para buscar CL = Columna izquierda para buscar DH = ú ltima fila para buscar DL = columna derecha para buscar
      Salida: desplaza la pantalla de abajo hacia arriba. Las líneas en blanco llenan la parte inferior utilizando el atributo de carácter cargado en BH. El atributo 71H significa fondo blanco frente azul.
    • Pantalla Modo Texto
      • El modo texto se usa para el despliegue normal de los caracteres ASCII en la pantalla. Provee el acceso al conjunto completo de 256 caracteres ASCII.
      • El Byte Atributo en modo texto determina las caracter í sticas de cada caracter en pantalla.
      • Cuando un programa fija un atributo, permanece fijo; es decir, todos los dem á s caracteres enviados a pantalla poseen el mismo atributo hasta que otra operaci ó n lo cambie.
    • Byte Atributo
      • El byte atributo tiene el siguiente formato:
      BACKGROUND FOREGROUND FIJA ALTA INTENSIDAD 7 BL 6 R 5 G 4 B 3 I 2 R 1 G 0 B
    • Despliegue de Colores
    • Ejemplos de Atributos T í picos
    • Funciones del INT 10H (cont.)
      • Funci ó n 09H: despliegue de atributo o car á cter en la posici ó n del cursor. AH = 09H AL = c ó digo ASCII BH = # de p á gina BL = atributo del Car á cter CX = # de veces que la funci ó n exhibe el car á cter en pantalla
      • Funci ó n 0A: despliegue de un car á cter en la posici ó n actual del cursor. AH = 0AH AL = c ó digo ASCII BH = # de p á gina CX = # de caracteres repetidos Nota: esta funci ó n no avanza el cursor
    • BIOS: Funci ó n 07H de INT 10H
      • AH=07H
      • AL= con 0 borra ventana
      • BH= atributo de caracteres
      • CH= primera fila superior de ventana
      • CL= columna izquierda superior
      • DH= ú ltima fila de ventana
      • DL= columna derecha inferior
    • Subrutinas del DOS
      • Cuando usted arranca una PC se ejecuta autom á ticamente varias tareas. Una es cargar el sistema operativo del disco duro a la memoria RAM. MS-DOS carga tres archivos en RAM: IBMBIO.COM, IBMDOS.COM y COMMAND.COM.
      • El archivo IBMDOS contiene las subrutinas de servicio del DOS. Hay diez interrupciones del DOS que son:
      • Interrupci ó n Uso 20H Termina un Programa 21H Funciones del DOS 22H Direcci ó n Terminal. ” ojo ” no usar en sus progrmas 23H Direcci ó n de ruptura (brake address) 24H Manejador de error cr í tico 25H Lee direcciones absolutas de Disco 26H Escribe en direcciones absolutas de disco 27H Termina y permanece Residente (TSR) 2FH Interrupci ó n Multiplex. Involucra comunicaci ó n entre Programas 33H Manejador de Rat ó n
    • Funciones del INT 21H
      • A trav é s de la interrupci ó n INT 21H se pueden llamar 115 funciones. Las funciones m á s importantes son:
      • Funci ó n 01H: Leer teclado con eco Espera por una entrada desde teclado. La funci ó n retorna uno de los dos c ó digos: AL = ASCII de la tecla pulsada AL = 00 significa que el usuario puls ó una de las teclas de funciones extendidas- home, page up …… la funci ó n responde a CTRL + BREAK.
      • Funci ó n 02H: Exhibir un car á cter en pantalla. El car á cter ASCII ha exhibirse se carga en DL.
      • Funci ó n 06H: Lectura directa de teclado y despliegue de datos en pantalla - Entrada de datos, cargar 0FFH en DL. Si no hay caracteres en el buffer del teclado se enciende ZF y no espera por una entrada. Si hay caracteres esperado en el buffer entonces DL se carga con el c ó digo ASCII del car á cter y despeja ZF. La funci ó n no rebota el car á cter en pantalla ni responde a CTRL + BREAK. - Despliegue de datos en pantalla, cargar el c ó digo ASCII en DL.
    • Funciones del INT 21H
      • Funci ó n 07H: Lectura directa de teclado sin eco. Opera de manera similar que la funci ó n 06H con DL = 0FFH, pero no retorna de la funci ó n hasta que se presione una tecla. Retorna en AL el c ó digo ASCII.
      • Funci ó n 08H: Lee entrada estandar sin eco. Similar a la funci ó n 07H, excepto que lee el dispositivo de entrada estandar. Puede asignarse como dispositivo estandar el teclado o el puerto COM. Responde a CTRL + BREAK mientras que 06H y 07H no. Retorna con c ó digo ASCII en AL.
      • Funci ó n 09H: Exhibe una cadena de caracteres. La cadena de caracteres debe terminar con un ASCII $ (24H). La cadena puede ser de cualquier longitud y puede contener caracteres de control tales como LF (0AH) y CR (0DH). mensaje db ´Buenos D í as´,´$´ ; … .. ó mensaje db ´Buenos D í as$´ DS:DX = direcci ó n de cadena de caracteres
    • Funciones del INT 21H
      • Funci ó n 0AH: Lee teclado con Buffer. Esta funci ó n requiere de una lista de par á metros. Necesita saber la longitud m á xima del dato que entra, para alertar al usuario con un beep en el parlante cuando ingresen demasiados caracteres. Llena tambi é n uno de los campos con el n ú mero de caracteres ingresados. Veamos un ejemplo. LISTA_PARA LABEL BYTE LONG_MAX DB 20 LONG_ACT DB ? BUFFER_TECL DB 20 DUP(?) La direcci ó n del buffer de datos se carga en DS:DX: lea dx, lista_para .
      • Si tipiamos el nombre MANUEL la lista de par á metro es:
      20 M A N U E L CR … 14 06 4D 41 4E 55 45 4C 0D 20 20 … ..