1. 23/07/15 Profesor Pedro Contreras Flores 1
Arranque de un Sistema Operativo
mediante Lenguaje Assembler
Universidad de Atacama
Facultad de Ingeniería
DIICC
2. 23/07/15 Profesor Pedro Contreras Flores 2
Temario
1. Introducción
Sistemas Operativos
Lenguaje ensamblador y programación
2. Sectores de arranque
Estructura
Funcionamiento
3. Caso Práctico
4. Conclusiones
4. 23/07/15 Profesor Pedro Contreras Flores 4
Conocimientos previos
Unidades de información
Celdas especiales (registros), de 6 a 8 flip-flops
(almacena niveles de voltaje 0.5 volts a 5 volees ),
Bits (binary digits), nibbles (4 bits), byte (8 bits),
palabra (16 bits)
RAM, ROM
Sistemas numéricos
Decimal, Binario, Hexadecimal
Texto, digitos, punto flotante
ASCII, Método BCD
Arquitectura Van Newman
Software, hardware, firmware, middleware
Cpu y registros internos
5. 23/07/15 Profesor Pedro Contreras Flores 5
Funcionamiento de un S.O.
Programa que supervisa el funcionamiento
de otros programas y que controla el uso del
hardware
Tareas
Administra memoria
Administrar CPU (procesador)
Administrar dispositivos de ES
Administrar información (datos)
Administrar comunicación con operador
Tipos
Monoprogramables, Multiprogramables,
Tiempo Compartido, Multiprocesamiento.
6. 23/07/15 Profesor Pedro Contreras Flores 6
Integración
USUARIO
APLICACIONES
SISTEMAS OPERATIVOS
HARDWARE
Resultado Ordenes
Respuestas Requerimientos
Respuestas Instrucciones
8. 23/07/15 Profesor Pedro Contreras Flores 8
Estructura del i8086
El Microprocesador 8086 tiene catorce registros de 16 bits.
Dichos registros son:
Registros de datos
Registros de segmento
Registros de punteros de pila
Registros índices
Registro de puntero de instrucciones
Registro de flags de instrucciones
9. 23/07/15 Profesor Pedro Contreras Flores 9
Banco de Registros
Registros de Datos
AX acumulador (AL , AH)
BX registro base ()(
CX registro contador
DX registro de datos
Punteros
SP Puntero de pila
BP Puntero base de pila
SI registro índice fuente
DI registro índice destino
IP Contador de programa, apuntador de siguiente instrucción
DS registro del segmento de datos
ES registro del segmento extra
SS registro del segmento de pila
CS Registro del segmento de código
NV, EI, PL, NZ, NA, PO, NC, DB
F registro de banderas
10. 23/07/15 Profesor Pedro Contreras Flores 10
Estructura de un programa en
ensamblador
DOSSEGDOSSEG
.MODEL SMALL.MODEL SMALL
.STACK 100H.STACK 100H
.DATA.DATA
.CODE.CODE
MOV AX, @DATAMOV AX, @DATA
MOV DS, AXMOV DS, AX
MOV AH,4CHMOV AH,4CH
INT 21HINT 21H
ENDEND
PREPARACION DEL PROGRAMA PARA
TRABAJAR CON EL MS-DOS
MODO DE CREACION DEL EJECUTABLE
DEFINICION DE LA PILA
DEFINICION DE LOS DATOS DEL PROGRAMA
INFORMACION DEL LUGAR EN EL QUE SE
ENCUENTRAN LOS DATOS
INSTRUCCIONES DEL PROGRAMA
INFORMACION AL SISTEMA OPERATIVO DE
QUE EL PROGRAMA HA FINALIZADO
FINAL DEL FICHERO FUENTE
11. 23/07/15 Profesor Pedro Contreras Flores 11
Pasos para crear un fichero ejecutable
Programación
Los programas deben escribirse en un de texto ASCII u otro editor
El nombre del fichero debe tener como extensión ASM
Para ensamblar el fichero se debe teclear en línea de ordenes
MASM NombreFichero.ASM
Si no se producen errores, se debe enlazar tecleando en la línea de
órdenes:
LINK NombreFichero.OBJ
12. 23/07/15 Profesor Pedro Contreras Flores 12
Tipos de instrucciones
Tipo de instrucciónTipo de instrucción EfectoEfecto
Instrucciones de transferencia Mueven información entre registros,
registros y posiciones de memoria, o
entre registros y puertos de
entrada/salida
Instrucciones aritméticas Realizan operaciones aritméticas: sumas,
restas, etc.
Instrucciones de manejo de bits Realizan operaciones de desplazamiento,
rotación y lógicas sobre registros o
posiciones de memoria
Instrucciones de transferencia de control Sirven para controlar la ejecución de las
instrucciones del programa
Instrucciones de entrada y salida Mueven información entre registros y
puertos de entrada/salida
Instrucciones de manejo de cadenas Realizan operaciones entre sobre cadena
de bytes o palabras
Instrucciones de interrupción Provocan que el microprocesador realice
un servicio que se le solicita diferente a
las instrucciones que esta ejecutando
13. 23/07/15 Profesor Pedro Contreras Flores 13
Instrucciones de transferencia de datos
•Nombre: MOV
•Formato: MOV destino, origen
•Descripción: Transfiere un byte o una palabra
desde el operando origen al operando destino.
•Ejemplos:
•MOV CX, 112h ;CX=112h
•MOV ES, AX ;ES=AX
•MOV AL, 12h ;AL=12h
•MOV PAL_MEM, BX ;PAL_MEM=BX
•Nombre: POP
•Formato: POP destino
•Descripción: Transfiere un byte o una palabra
desde la cima de la pila al operando destino y luego
decrementa la pila en 2.
•Ejemplos:
•POP BX ;Pone en BX el contenido
;de la cima de la pila
•Nombre: PUSH
•Formato: PUSH origen
•Descripción: Decrementa el puntero de la pila (SP)
en 2 y luego transfiere la palabra que se ha
especificado en el operando origen a lo alto de la
pila.
•Ejemplos:
•PUSH BX ;Pone BX en la pila
14. 23/07/15 Profesor Pedro Contreras Flores 14
Instrucciones aritméticas (I)
•Nombre: ADD
•Formato: ADD destino, origen
•Descripción: Suma los dos operandos y el
resultado lo deja en el operando destino. Los
operandos deben ser del mismo tipo.
•Ejemplos:
•ADD CL, BL ;CL=CL+BL
•ADD AL, 12h ;AL=AL+12h
•ADD CX, DX ;CX=CX+DX
•Nombre: ADC
•Formato: ADC destino, origen
•Descripción: Suma los dos operandos más el posible
acarreo de la operación anterior. El resultado se
almacena en el operando destino. Además los
operandos deben ser del mismo tipo. Ejemplos:
•ADC CL, BL ;CL=CL+BL+CF
•ADC AL, 12h ;AL=AL+12h+CF
•ADC CX, DX ;CX=CX+DX+CF
•Nombre: SUB
•Formato: SUB destino, origen
•Descripción: Resta el operando origen del
operando destino. El resultado se almacena en el
operando destino y además, ambos operandos
deben ser del mismo tipo.
•Ejemplos:
•SUB CL, BL ;CL=CL-BL
•SUB AL, 12h ;AL=AL-12h
•SUB CX, DX ;CX=CX-DX
•Nombre: SBB
•Formato: SBB destino, origen
•Descripción: Resta el operando origen del
operando destino. Resta uno si el flag de acarreo
está activo. Los operandos deben ser del mismo
tipo. El resultado se almacena en el operando
destino.
•Ejemplos:
•SBB CX, DX ;CX=CX-DX-CF
15. 23/07/15 Profesor Pedro Contreras Flores 15
Instrucciones aritméticas (II)
•Nombre: MUL
•Formato: MUL origen
•Descripción: Multiplica, sin considerar el signo el
acumulador (AL o AX) por el operando origen. Si el
operando origen es de tipo byte el resultado se
almacena en AX. Si es de tipo palabra se almacena
en DX (palabra superior) y AX (palabra inferior).
•Ejemplos:
• ;AX=1234h
• ;BX=1000h
•MUL BX ;DX=0123h, AX=4000h
•Nombre: IMUL
•Formato: IMUL origen
•Descripción: Multiplica, considerando el signo, el
acumulador AL o AX por el operando origen. Si el
operando fuente es un byte se almacena el resultado
en AX. Si se trata de una palabra, se almacena en DX
(palabra superior) y AX (palabra inferior).
•Ejemplos:
• ;AL=FEh=-2
• ;BL=12h=18
•IMUL BX ;AX=FFDCh=-36
•Nombre: DIV
•Formato: DIV origen
•Descripción: Divide, sin considerar el signo, el
acumulador (AL o AX) y su extensión (AH o DX) por
el operando origen. El resultado se almacena en AL
o AX, según el operando sea de un byte o de una
palabra. El resto se almacena en la extensión del
acumulador AH o DX.
•Ejemplos:
• ;AX=0013h=19
• ;BL=02h=2
•DIV BL ;AH=1, AL=9
•Nombre: IDIV
•Formato: IDIV origen
•Descripción: Divide, considerando el signo, el
acumulador AL o AX y su extensión (AH o DX) por
el operando origen. El resultado se almacena en AL
o AX, según el operando sea de un byte o de una
palabra. El resto se almacena en la extensión del
acumulador AH o DX.
•Ejemplos:
• ;AX=FFEDh=-19
• ;BL=02h=2
•IDIV BL ;AH=1, AL=F7h=-9
16. 23/07/15 Profesor Pedro Contreras Flores 16
Instrucciones aritméticas (III)
•Nombre: INC
•Formato: INC destino
•Descripción: Suma una unidad al operando
destino. El operando puede ser de tipo byte o
palabra.
•Ejemplos:
• ;AX=1234h
•INC AX ;AX=1235h
•INC AH ;AH=13h
•Nombre: DEC
•Formato: DEC destino
•Descripción: Resta una unidad al operando
destino. El operando puede ser de tipo byte o
palabra.
•Ejemplos:
• ;AX=1234h
•DEC AX ;AX=1233h
•DEC AH ;AH=11h
•Nombre: NEG
•Formato: NEG destino
•Descripción: Cambia de signo mediante el
complemento a 2 del operando destino. Deja el
resultado en el operando destino. El operando
puede ser de tipo byte o palabra.
•Ejemplos:
•NEG AL ;Si AL=F2h antes de la operación,
después AL=0Eh
17. 23/07/15 Profesor Pedro Contreras Flores 17
Editores-Compiladores-Enlazadores
Editores-Compiladores-EnlazadoresEditores-Compiladores-Enlazadores Sistema OperativoSistema Operativo
Debug de windows Windows
MASM32 V8, Macro Assembler Microsoft Windows
Batronix Prog-Studio 5.2 Windows
MPL V 1.02.00 Windows
Negatory Assembly Studio 2.0 (ml, link y rc) Windows
MiniIDE V1.16 Windows/Linux
VNBasm4 Windows
Turbo Assembler Windows
Power Assembler 32 1.2 Windows
Small Memory Footprint Editor 3.0b Windows
G C C 3.3.3 Linux
Xebot 0.8.00 Linux
18. 23/07/15 Profesor Pedro Contreras Flores 18
Primer programa
Este ejemplo realizara una suma de dos valores que se
introducirá directamente desde el programa
Pasos:
Debug
Comando “a”, indica inicio de assembler
Solo se comprueba valor de inicio (0100H) de aplicación .COM por
lo tanto se omite ingreso
Luego se puede comenzar a ingresar las instrucciones , después de
ingresar “a0100” al debug
“int 20” no es una instrucción propia de assembler sino de la cpu
19. 23/07/15 Profesor Pedro Contreras Flores 19
Guardar y editar Primer Programa
“h 10a 100” obtiene la
suma y resta de
direcciones, donde 10a
es la direccion final y 100
es la direccion inicial
“n prueba.com” permite
colocar el nombre al
programa
“rcx” permite cambiar el
tamaño del programa en
registro CX a 00a (10
bytes) (resta de
direcciones)
“w” escribe programa en
el disco, indicando
tamaño escrito.
23. 23/07/15 Profesor Pedro Contreras Flores 23
Interrupciones
Las interrupciones son
mensajes que los
dispositivos de e/s
envían a la CPU
indicando un estado y la
necesidad de un recurso
Tipos de interrupciones
Internas de hw
Externas de hw
De sw
Cada interrupción tiene
diferentes funciones
25. 23/07/15 Profesor Pedro Contreras Flores 25
Arranque de SO
Existen 2 maneras de arrancar el sistema: en
frío o en caliente.
En Frío: está apagado y lo arrancamos con el
'ON'. Cachea los dispositivos de entrada y de
salida, teclado, monitor, discos duros,
disquetes, memoria (RAM), etc. Después
busca el S.O. y lo carga, primero mira en la
disquetera y si hay disquete con sistema
operativo lo arranca; después mira el disco
duro.
En Caliente: Se ejecuta apagando el
ordenador con el botón reset o con
Ctrl+Alt+Supr. No se hacen todos los test
anteriores y se carga directamente del S.O.,
suele emplearse tras caídas del sistema
operativo o bloqueo del ordenador.
27. 23/07/15 Profesor Pedro Contreras Flores 27
Estructura de MBR
MBR – Master Boot Record
Sector físico de 512 bytes almacenado en el cilindro 0, cabeza 0,
sector 1.
Sólo se ejecuta el MBR del Primary Master Disk. De este disco se
realiza el booteo.
Se diferencian dos partes del MBR:
Master Boot Code (MBC)
Tabla de particiones
Sólo puede modificarse con determinados utilitarios (fdisk,
Partition Magic, fips,etc).
Como se utiliza el MBR
Como última acción, el BIOS lee el primer sector de la unidad de
booteo, lo valida y ejecuta.
Si es un diskette, este sector es un PBS (Partition Boot Sector).
Si es un HD, el sector es un MBR. Luego:
Se ejecuta el MBC: busca una partición marcada como booteable
(activa).
Si la ejecución es exitosa, salta al cilindro, cabeza y sector de esa
partición y carga el PBS en memoria, lo valida y ejecuta.
28. 23/07/15 Profesor Pedro Contreras Flores 28
Particiones
Límite de 4 particiones primarias.
Es posible crear más de 4 utilizando particiones
extendidas:
Simula una unidad física
Posee su propia tabla de particiones LOGICAS
Las particiones lógicas se almacenan en forma
contigua (enlazadas)
Límite de 15 particiones para discos SCSI y 63 para
discos IDE
29. 23/07/15 Profesor Pedro Contreras Flores 29
Gestores de arranque (bootloader)
Es una programa que se encuentra en el sector de
arranque de la partición primaria que esta activa o
en el MBR
Gestores de arranque populares en GNU/Linux
:LILO (LInux LOader), GRUB(Grand Unified
Bootloader)
Otros ejemplos de bootloaders son BootMagic,
BootStar, Ranish Partition Manager, etc.
LILO puede arrancar otros SO aparte de GNU/Linux
LILO puede instalarse en un sector de arranque de
una partición extendida
30. 23/07/15 Profesor Pedro Contreras Flores 30
Partes de MBR
Master Boot Code
Los primeros bytes del MBR corresponden al MBC.
Es un pequeño código que permite la carga del sistema operativo.
Incluye los siguientes mensajes de error:
Error loading operating system
Missing operating system
Tabla de particiones
Se ubica a partir del byte 446 dentro del MBR.
Es de 64 bytes. A continuación se dispone de dos bytes más.
Cada entrada es de 16 bytes. Los campos reelevantes en cada entrada
son:
Indicador de booteo
comienzo de la partición
ID de sistema
final de la partición
Otros
31. 23/07/15 Profesor Pedro Contreras Flores 31
Partition Boot Sector
Generalmente de 512 bytes.
Situado en el primer sector de
cada partición.
Si reside en una partición
booteable, contiene los datos
necesarios para cargar el SO.
Depende del SO
Su estructura es similar al MBR.
Mantiene un código ejecutable
e información de la partición.
Almacena los siguientes
errores:
Non-system disk or disk
error
Replace and press any key
when ready
32. 23/07/15 Profesor Pedro Contreras Flores 32
Caso Practico: Arranque de
SO en disquete
Parte 3
33. 23/07/15 Profesor Pedro Contreras Flores 33
Caso Práctico
Compilar con MASM 5.0, luego el LINK y ejecuta el
fichero.exe obtenido.
Este programa es para diskette y puede ser adaptado a
disco duro
Este ejemplo protege el disco duro en todo momento
para no perder la información
El sistema de archivos que utiliza es FAT
40. 23/07/15 Profesor Pedro Contreras Flores 40
Conclusiones
Ventajas
Conocimiento a fondo del computador
Control total del computador
Aplicaciones más rápidas, compactas
Optimización en tamaño y ejecución de programas
Desventajas
Difícil de conocer todas las instrucciones existentes
Aumenta el tiempo de programación
Problemas de compatibilidad con el hardware
Modificaciones de instrucciones según compilador
41. 23/07/15 Profesor Pedro Contreras Flores 41
Conclusiones
Limitaciones
Primer paso solo arranca desde diskette
Dependencia de Sistema de archivos
Trabajos futuros
Realizar modificaciones para arranque desde HD
Definir sistema de archivos independiente
Comenzar definir procesos (kernel)
42. 23/07/15 Profesor Pedro Contreras Flores 42
Arranque de un Sistema Operativo
mediante Lenguaje Assembler
Universidad de Atacama
Facultad de Ingeniería
DIICC