Guía para ejercicios. Desde el comienzo hasta TP4.1

Documentos relacionados
Arquitectura de computadoras

SISTEMAS BASADOS EN MICROPROCESADORES

Conceptos de Arquitectura de Computadoras Curso 2015

Objetivo. Introducción. Tema: GENERACION DE CODIGO. Compiladores, Guía 11 1

Arquitectura de Computadores II 8086 Parte II

Práctica 3: El teclado del PC

SISTEMAS BASADOS EN MICROPROCESADORES

INTRODUCCIÓN. Interrupciones.

Tema 4: Las interrupciones y la ROM-BIOS

Práctica 2: Sector de arranque

Procedimientos para el Montaje de Equipos Microinformáticos.

Arquitectura (Procesador familia 80 x 86 )

SISTEMAS BASADOS EN MICROPROCESADOR 2º Grado Ingeniería Informática (EPS UAM) EXAMEN FINAL EXTRAORDINARIO JULIO 2013 ENUNCIADO DEL PROBLEMA

Sobre cómo dividir un programa ensamblador x86 (modo Real) en módulos compilables por separado.

Apellidos Nombre DNI

Conmutación de Tareas

CONALEP TEHUACÁN 150. INSTALACIÓN DE SISTEMAS MICROPROCESADOS. GRUPO 309 SOMA UNIDAD 2. INTRODUCCIÓN A LA PROGRAMACIÓN EN LENGUAJE ENSAMBLADOR

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

Procesadores de 64 bits

INFORMATICAFACIL BIOS AMI. configuración. ekocop H T T P : / / I N F O R M A T I C A F A C I L. W O R D P R E S S. C O M

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

La arquitectura del 8086/8088

UNIVERSIDAD TECNOLÓGICA NACIONAL FACULTAD REGIONAL SAN NICOLÁS INGENIERIA EN ELECTRÓNICA

Arquitectura de Computadores II Clase #3

Programas Residentes En Lenguaje Ensamblador

ESTRUCTURA DE COMPUTADORES I (Capítulo 16:El Teclado) 1/5 16-EL TECLADO

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

Guía sobre la utilidad Computer Setup (F10) Modelos dx2390 y dx2400 microtorre Equipos para empresas de HP Compaq

Iniciación del mouse El servicio utilizado es el 00, este servicio inicializa el controlador del mouse como sigue:

Ciclos de máquina. Otro ejemplo: decremento de un registro par (donde rp = HL, DE, BC, SP) DCX rp

8.4. El software en los μprocesadores

BIOS (Basic I/O System) Ing. Víctor Valencia PNFSI - Arquitectura del Computador III

Intel 8086 modelo básico (primera parte) Registros:

Tema 5. Presentación de datos por pantalla

MÓDULO III PROGRAMACIÓN DEL MICROPROCESADOR

Contenidos. Arquitectura de ordenadores (fundamentos teóricos) Elementos de un ordenador. Periféricos

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

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

Asignatura: ASSEMBLER INF-153 LABORATORIO 1

Comprobaciones básicas tras el montaje del equipo informático.

Instrucciones de Control de Flujo y Usos de la Pila

Relación de Problemas I

Tema 2. Presentación de datos por pantalla. La ROM-BIOS

Módulo 08 Lenguaje Ensamblador

CONTENIDO. Capítulo 1. Capítulo 3. Capítulo 2. Contenido. Sobre el autor 4 Prólogo 5 El libro de un vistazo 8 Introducción 14

USO DEL SOFTWARE PROVIEW 32

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

Periféricos Interfaces y Buses

BIOS: Basic Input Output System

Arquitectura del CPU. Organización del Computador 1 Verano 2016

Tema 5.1: Presentación de datos en pantalla

Estructura del tema. Introducción Arranque de un PC. BIOS Procedimiento de arranque Configuración y actualización de la BIOS

Ingeniería en Sistemas. Sistemas Operativos. Trabajo Práctico: Repaso de Interrupciones, direccionamiento de memoria y registros del procesador.

Procesadores IA-32 e Intel R 64 Inicialización

El Diseño de un Lenguaje Máquina

ENSAMBLADOR DE ARCHIVO TASM MASM NASM GAS. Características de un Ensamblador de Archivo

Transferir datos por medio del puerto paralelo utilizando un lenguaje de bajo nivel. (Lenguaje ensamblador auxiliándose del macroensamblador MASM)

MANEJO DEL MOUSE EN LENGUAJE C++

LABORATORIOS DE: DISPOSITIVOS DE ALMACENAMIENTO Y DE ENTRADA/SALIDA. MEMORIAS Y PERIFÉRICOS. PRÁCTICA #9 EL RATÓN DE UNA COMPUTADORA

Instrucción De Salto Incondicional

SISTEMAS OPERATIVOS Arquitectura de computadores

Introducción a los Sistemas Operativos

Apunte sobre Bochs. Programación de Sistemas Operativos. 1. Introducción bochs - VM con Debugger... 2

4. Escribe con palabras lo que significan las siguientes letras y di cuántos bytes hay aproximadamente: a) 1 Gb? b) 1 Mb? C) 1 Kb?

Sistema Operativo. Repaso de Estructura de Computadores. Componentes Hardware. Elementos Básicos

Sistemas Operativos. Tema 1. Arquitectura Básica de los Computadores

Arquitectura de Computadoras

Organización de computadoras. Clase 4. Universidad Nacional de Quilmes. Lic. Martínez Federico

Diferentes Perspectivas de un Ordenador

Tema 4. Lenguaje máquina y lenguaje ensamblador

Introducción a la Entrada/Salida

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

Organización n del Computador. CPU (ISA) Conjunto de Instrucciones de la Arquitectura

Guía sobre la utilidad Computer Setup (F10) Modelo dx2450 microtorre Equipos para empresas de HP Compaq

La Pila en los Procesadores IA-32 e Intel c 64

Tema 5: La pila, las macros y los procedimientos

Guía sobre la utilidad Computer Setup (F10) Ordenadores de la serie HP Elite 7000 MT

Construyendo Programas más Complejos

Conmutación de Tareas

VOCABULARIO DEL HARDWARE. Docente Yeni Ávila

Práctica 2. Registros y posiciones de memoria

SELECCIÓN DE COMPONENTES PARA ENSAMBLE DE EQUIPOS DE COMPUTO. Ing. Eduardo Cruz Romero

Tema 4. Lenguaje máquina y lenguaje ensamblador

Informática Tema: H a r d w a r e

UNIDAD 3 ARQUITECTURA DEL Z80. Microprocesadores Otoño 2011

INTERRUPCIONES. Existen 256 interrupciones En el modo real cada una tiene un vector asociado Vectores de 4 bytes: segmento + offset 32 F0 50 8A

Press <enter> to begin or press F2 for boot options boot:

0-31 : caracteres de control : carac. Comunes : especiales (flechas, símbolos) y particulares (ñ)

Mantenimiento de Equipos Informáticos. Práctica 1: Instalación y configuración de placas base y tarjetas.

Práctica 2: Sector de arranque

Tema 3. Introducción a la configuración de un PC

P1.- Para facilitar la tarea, suponemos definido en el segmento de datos lo siguiente:

Sist s em e a m s s O per e ativos o. s Unidad V Entrada Sali l d i a.

BIOS: conceptos y configuración.

Introducción al ensamblador 80x86

Introducción a la programación en Lenguaje Assembler.

Informática Ingeniería en Electrónica y Automática Industrial

EL EMU8086 Y EL MICROPROCESADOR 8086.

Tema 9 Periféricos de Entrada

Transcripción:

Guía para ejercicios Desde el comienzo hasta TP4.1

T.P. Nº 2. BIOS y Boot El proceso de boot comienza ejecutando el código de la BIOS ubicado en la posición física 0xFFFF0. Allí comienza el POST (Power On Self Test) que es parte de la ROM BIOS. El POST realiza la inicialización básica del hardware (por ejemplo, la placa de video) y su verificación. Luego busca algún dispositivo de booteo: Disco Rígido, Floppy, USB, etc. El orden de búsqueda está determinado en una pequeña memoria RAM estática que se alimenta con una pila de Li. Es lo que se conoce como setup de la PC al que se ingresa mediante alguna tecla específica disponible para tal fin durante algunos instantes cuando recién se enciende la PC. Transcurrido ese breve intervalo se desactiva la opción de ingreso al Setup. Una vez localizado el dispositivo de arranque, carga el primer sector de 512 bytes (excepto en el caso de CDROM, cuyo tamaño es 2048) en la posición de memoria 0x07C00 y salta a esa dirección. Las imagen de arranque es la encargada de cargar el kernel y luego pasarle el control. IMPORTANTE: Las imágenes de arranque deben ocupar exactamente 512 bytes (excepto en el CDROM), y estar firmada en los últimos dos bytes con 0x55AA. A continuación se muestra un esquema posible de la distribución de la memoria al arrancar la máquina.

Power On Self Test (POST) (1) Antes de iniciar su operación el sistema verificará el correcto funcionamiento de la CPU Chequea si el contenido de la ROM es el correcto (realiza un checksum del contenido de la ROM completa que en fábrica se ajusta de modo que el resultado del check sea cero). Detecta el tipo de adaptador de video instalado. Lo inicializa en modo texto 80x25.Escribe en la BIOS DATA AREA los principales datos de interés para el sistema que proporciona este controlador. Comprueba la correcta interacción con el 8042 y setea el modo de trabajo con los diferentes ports de E/S que proporciona este chip. Si el Timer 1 funciona correctamente se lo programa para generar un pulso al final de la cuenta, cuenta cíclica, y duración de la misma 15 mseg aproximadamente. Comprueba el correcto funcionamiento para el canal de DMA 0. Si los test descriptos indican que el Timer 1 y el canal 0 de DMA funcionan correctamente, entonces se dispara el refresco de memoria.

Power On Self Test (POST) (2) Comprueba el 8259 y lo inicializa con los valores default de los vector es de Interrupción. A los que usa, los apunta a las rutinas de la ROM correspondientes. Cuenta la memoria RAM y comprueba su funcionamiento Una vez finalizada la cuenta de memoria, chequea los restantes timers y canales de DMA. Si funcionan correctamente los inicializa de acuerdo a la forma en la que van a trabajar cada uno de ellos. Cheque el teclado y el timer tick, habilita sus interrupciones en el 8259. Testea el funcionamiento de las unidades de disco flexible y rígido. Una vez comprobado las inicializa, y escribe los resultados y principales parámetros en la BIOS DATA AREA. Chequea si existen ports serie. Inicializa a los que encuentra y guarda resultados en BIOS DATA AREA. Chequea si existen ports paralelo. Inicializa a los que encuentra y guarda resultados en BIOS DATA AREA. Establece si existen extensiones BIOS. Esto es: La ROM BIOS de las PC provee un camino para integrar adaptadores de E/S con su propia ROM onboard. Llama a la rutina Bootstrap loader para la carga del sistema operativo.

Ejercicio 2.1.Debuggeando BIOS Iniciar el Bochs, y debuggear el POST de la BIOS. Seguir el código tratando de ver (a grandes rasgos) que operaciones realiza el POST. Boot de un OS Iniciar el Bochs, y cargar alguna imagen de Linux. Seguir el código e indicar el momento exacto en que el Bootloader pasa el control al Kernel. Ejercicio 2.2. Programa autobooteable En el link http://en.wikibooks.org/wiki/x86_assembly/ Bootloaders, se presenta una versión "bootloader" del programa Hello World y las líneas necesarias para compilarlo usando NASM. Descárguelo, compile y pruebe su funcionamiento, debuggeando paso a paso.

Ejercicio 2.2. Programa autobooteable (1) org 7C00h jmp short Start ;Jump over the data (the 'short' keyword makes the jmp instruction smaller) Msg: db "Hello World! " EndMsg: Start: mov bx, 000Fh ;Page 0, colour attribute 15 (white) for the int 10 calls below mov cx, 1 ;We will want to write 1 character xor dx, dx ;Start at top left corner mov ds, dx ;Ensure ds = 0 (to let us load the message) cld ;Ensure direction flag is cleared (for LODSB) Print: mov si, Msg ;Loads the address of the first byte of the message, 7C02h in this case ;PC BIOS Interrupt 10 Subfunction 2 - Set cursor position ;AH = 2 Char: mov ah, 2 ;BH = page, DH = row, DL = column int 10h lodsb ;Load a byte of the message into AL. ;Remember that DS is 0 and SI holds the offset of one of the bytes of ;the message. ;PC BIOS Interrupt 10 Subfunction 9 - Write character and colour ;AH = 9

Ejercicio 2.2. Programa autobooteable (2) mov ah, 9 ;BH = page, AL = character, BL = attribute, CX = character ;count int 10h inc dl ;Advance cursor cmp dl, 80 ;Wrap around edge of screen if necessary jne Skip xor dl, dl inc dh cmp dh, 25 ;Wrap around bottom of screen if necessary jne Skip xor dh, dh Skip: cmp si, EndMsg ;If we're not at end of message, jne Char ;continue loading characters jmp Print ;otherwise restart from the beginning of the message times 0200h - 2 - ($ - $$) db 0 ;Zerofill up to 510 bytes dw 0AA55h ;Boot Sector signature ;OPTIONAL: ;To zerofill up to the size of a standard 1.44MB, 3.5" floppy disk ;times 1474560 - ($ - $$) db 0

Ejercicio 2.2. Programa autobooteable (3)

Ejercicio 3.4. Combinación de C y ASM Verificar la potencia y flexibilidad que brinda la combinación de lenguaje C y ASM según los requerimientos y complejidad del programa. Entender el uso de los compiladores de C y ASM, de los linkeadores y sus diferencias. Paso de argumentos por la pila. Para ello escribir dos programas: a) Cuerpo principal en C que solicite dos operandos por consola, y una operación (s: suma, r:resta) y devuelva por pantalla el resultado. Las operaciones serán realizadas por funciones auxiliares en ASM (func.asm) b) Cuerpo principal en ASM. Espera presión de una tecla. Según la tecla presionada (a-z) cambia el color del texto y sale. El switch que evalúa el scan code se realizará en un programa externo en C (evalscancode.c)

Ejemplo de Combinación C y Assembler Cuentas.c extern int cuentas_asm (int a, int b);//permite el linkeo //posterior, le digo al compiler que la función viene después #include <stdio.h> int main (int argc, char *argv[]) //Si cuando se //ejecuta no se agregan parámetros: violación de segmento { int a,b,r=0; a=atoi(argv[1]); b=atoi(argv[2]); r=cuentas_asm(a,b); //Llamo a la función que me //suma en assembler. printf("la suma es: %d\n",r); return 0; }

Ejemplo de Combinación C y Assembler Cuentas_asm.asm GLOBAL cuentas_asm ; Hace la conexión con extern %define sumando1 ebp+8 %define sumando2 ebp+12 cuentas_asm: ; Etiqueta que marca el comienzo enter 8,0 ; Adecua el stack, ebp y reserva dos ;dobles word para uso de la rutina mov eax, [sumando1] mov ebx, [sumando2] ret add eax, ebx leave ; Reestabece el stack y ebp, ; a partir del valor de ebp

Ejemplo de Combinación C y Assembler Script.sh nasm -f elf cuentas_asm.asm -l cuentas_asm.lst gcc -c Cuentas.c gcc -g Cuentas.o cuentas_asm.o -o floppy rm Cuentas.o cuentas_asm.o Programa en C Programa en asembler Compilador de C Compilador de asm Linker Ejecutable

Ejercicio 4.1.Entrada a Modo Protegido Escriba un programa autobooteable que ponga al procesador en modo protegido, seguidamente ponga la pantalla en modo de video inverso, y termine su ejecución mediante HLT. Asuma un controlador de video color.

TP4.1: Resolución a medias (1)

TP4.1: Resolución a medias (2)

TP4.1: Resolución a medias (3)

TP4.1: Resolución a medias (4)

TP4.1: Resolución a medias (5)

TP4.1: Resolución a medias (6)

FIN