Вы находитесь на странице: 1из 9

Universitatea Tehnic a Moldovei

Catedra Automatic i Tehnologii Informaionale

Raport
La Sisteme de Operare: Mecanisme interne i principii de proiectare

Lucrarea de laborator Nr.1

Tema : Dezvoltarea bootloader-ului de sistem.

A efectuat:
st.gr. TI-143Fiodor Alexandru

Chiinu 2016

A verificat:
lect. univer. Colesnic V.

Obiective:
Dezvoltarea propriului bootloader.
Condiii:
Pentru acest lucrare de laborator vom face cunostin cu limbajul de
programare assembler, i vom utiliza ntreruperile BIOS pentru a nelege modul n
care vom dezvolta propriul nostru boot loader.
Ducem cont de modul in care BIOS-ul analizeaz sectoarele de pe dischet.
Sectorul citit de BIOS la ncrcarea FDD-ului(0:A) are adresa 0xAA55 ce reprezint un offset
de 510bytes de pe dischet. Teoretic acesta reprezint primul sector, care l vom seta pentru
ncrcarea kernel-ului de sistem dezvoltat la urmtoarele lucrri de laborator.
Un exemplu de bootstrap este expus mai jos:
;**************************************
[BITS 16]

ORG 0
INT 0x18
TIMES 510-($-$$) DB 0
DW

0xAA55

;**************************************
Atunci cnd BIOS-ul va citi boot loader-ul de pe primul sector al dischetei,
codul compilat n fiierul nostru COM va fi ncrcat pe adresa
0:07C00h, de unde propriu zis, vom suprancrca regitrii.
Deci, sarcina este de a scrie un sector de boot, asamblat ntr-un fiier binar simplu
(conform unui punct de mai jos) ,care n final trebuie nscris pe primul sector al discului,
cu ajutorul aplicaiei voastre - dezvoltata n C++/C#, Java etc.
Sarcina:
Afiarea a 4 sau 6 mesaje pe centrul ecranului - citit minimum din 8 offset-uri.
Unul din aceste mesaje va clipi periodic cu un interval de minim 2 - 3s i i va schimba
culoarea (minim 4 culori).i celelalte mesaje se vor mica orizontal pe centrul ecranului de la
dreapta spre stnga n ciclu periodic.

Mersul lucrrii:
Pentru realizarea sarcinii de afiare a 4 mesaje pe centrul ecranul am realizat urmtoarele
proceduri, care folosesc ntreruperile BIOS:
- WriteString procedur de afiare a unui ir de caractere pe eran , care folosete funcia
0x13 a ntreruperii 0x10.
-

Delay procedur de realizeare a unei reineri de 800 milisecunde , care folosete


funcia 0x86 a ntreruperii 0x15.

ClearScreen curarea ecranului . Funcia 0x06 a ntreruperii 0x10

WriteMessages procedura ce afieaz string-urile din toate 8 offset-uri la coordonata


anumit a ecranului. Procedura data apeleaz procedura WriteString.

Decrement procedura decrementeaz coordonata x a tuturor mesajelor de pe ecran .

RestartMessages procedura restabilete poziia mesajelor n partea extreme din dreapta.

Divide procedura mparte contorul principal din func ia main , pentru a realiza schimba

culorii la fiecare a 8-a iteraie.


-

main procedura principal , care reprezint un ciclu infinit, ce const dintr-un ir


de afiri i curiri a ecranului pentru a realizara micarea mesajelor afiate.
Programul sfrete cu urmtoarea poriune :

db 510 - ($ - $$) db 0

; se umple

DW 0xAA55h

; semntura

restul sectorului cu 0
sfritului bootloader-ului

Pentru compilarea codului am folosit compilatorul emu8086 .

Fig 1. Compilatorul emu8086

Fig 2.- Rezultatul boot-rii

Concluzii:
n urma efecturii lucrrii de laborator am fcut cunotin cu particularitile
limbajului de asamblare pentru acest compilator. Am cptat abiliti practice n realizarea unui
bootloader i am studiat ntreruperile BIOS 10h i 15h i diverse funcii ale acestora, care leam folosit pentru realizarea sarcinii de afiare dinamic a mesajelor.

Anex
#make_boot#
org 7c00h

; set location counter.

==========
;clear
=================
PrintMsg MACRO line, msg, color, col
mov al, 1
mov bh, 0
mov bl, color
mov dl, col
mov dh, line
push cs
pop es
mov bp, offset msg
mov ah, 13h
int 10h
ENDM
Wait_t MACRO
LOCAL delay, delay2
mov si, 0
count dw 0
coll db 34
coll2 db 39
var db 6
delay:
nop
inc si
cmp si,10
jnz delay
inc count
mov si, 0
cmp count, 6
jz delay2
clear2
mov cx, firstpart
PrintMsg 9, msg0, 11, coll
mov cx, secondpart
PrintMsg 9, msg00, 11, coll2
mov cx, firstpart
PrintMsg 10, msg1, 2, coll
mov cx, secondpart
PrintMsg 10, msg11, 2, coll2
mov cx, firstpart
PrintMsg 11, msg2, 3, coll
mov cx, secondpart

PrintMsg 11, msg22, 3, coll2


dec coll
dec coll2
cmp coll, 0
jz iterate
jmp delay
iterate:
mov coll, 35
mov coll2, 40
jmp delay
delay2:
clear
clear
mov cx, firstpart
add cx, secondpart
PrintMsg 12, msg3, var, 35
mov count, 0
inc var
cmp var,12
jz switch
jmp delay
switch:
mov var, 5
jmp delay
ENDM
clear MACRO
PUSHA
MOV AH, 7
MOV AL, 0
MOV CL, 0
MOV CH, 12
MOV DL, 80
MOV DH, 40
INT 10h
POPA
ENDM
clear2 MACRO
PUSHA
MOV AH, 7
MOV AL, 0
MOV CX, 0
MOV DL, 80
MOV DH, 11
INT 10h
POPA
ENDM
firstpart dw ?
secondpart dw ?
mov cx, size0 - offset msg0

jmp size0
msg0 db 'Mesaj'
size0:
PrintMsg 9, msg0, 11, 35
mov firstpart, cx
mov cx, size00 - offset msg00
jmp size00
msg00 db ' 0'
size00:
PrintMsg 9, msg00, 11, 40
mov secondpart, cx
mov cx, size1 - offset msg1
jmp size1
msg1 db 'Mesaj'
size1:
PrintMsg 10, msg1, 2, 35
mov cx, size11 - offset msg11
jmp size11
msg11 db ' 1'
size11:
PrintMsg 10, msg11, 2, 40
mov cx, size2 - offset msg2
jmp size2
msg2 db 'Mesaj 2'
size2:
PrintMsg 11, msg2, 3, 35
mov cx, size22 - offset msg22
jmp size22
msg22 db ' 2'
size22:
PrintMsg 11, msg22, 3, 40
mov cx, size3 - offset msg3
jmp size3
msg3 db 'Mesaj 3'
size3:
PrintMsg 12, msg3, 5, 35
Wait_t
db 510-($-clrs) dup(0)
dw 0AA55h

Bibliogfie:

1. Codenet. BIOS - INT 10H: . [Resurs electronic].- Regim de acces :


http://www.codenet.ru/progr/dos/int_0009.php
2. Cyberforum. DOS, 21 Assembler.
[Resurs electronic].- Regim de acces :
http://www.cyberforum.ru/assembler/thread724827.html

Вам также может понравиться

  • Atestarea1 (1 28)
    Atestarea1 (1 28)
    Документ30 страниц
    Atestarea1 (1 28)
    Alexandru Fiodor
    Оценок пока нет
  • Paii Pa Test Are Final
    Paii Pa Test Are Final
    Документ8 страниц
    Paii Pa Test Are Final
    Alexandru Fiodor
    Оценок пока нет
  • Structura Raportului
    Structura Raportului
    Документ11 страниц
    Structura Raportului
    Alexandru Fiodor
    Оценок пока нет
  • Laboratorul nr1
    Laboratorul nr1
    Документ9 страниц
    Laboratorul nr1
    Alexandru Fiodor
    Оценок пока нет
  • Laboratorul nr1
    Laboratorul nr1
    Документ9 страниц
    Laboratorul nr1
    Alexandru Fiodor
    Оценок пока нет
  • Prezentare Somipp
    Prezentare Somipp
    Документ274 страницы
    Prezentare Somipp
    Alexandru Fiodor
    Оценок пока нет
  • ASDN Indrumar
    ASDN Indrumar
    Документ80 страниц
    ASDN Indrumar
    Ilie Rumega
    Оценок пока нет
  • Prezentare Somipp
    Prezentare Somipp
    Документ274 страницы
    Prezentare Somipp
    Alexandru Fiodor
    Оценок пока нет
  • Indrumar
    Indrumar
    Документ26 страниц
    Indrumar
    Ion Damaschin
    Оценок пока нет
  • Lucrare de Curs Appoo
    Lucrare de Curs Appoo
    Документ43 страницы
    Lucrare de Curs Appoo
    Alexandru Fiodor
    Оценок пока нет
  • Laboratorul nr1
    Laboratorul nr1
    Документ7 страниц
    Laboratorul nr1
    Alexandru Fiodor
    Оценок пока нет
  • Laboratorul nr1
    Laboratorul nr1
    Документ9 страниц
    Laboratorul nr1
    Alexandru Fiodor
    Оценок пока нет
  • Service Ticket Proiect de Curs APPOO
    Service Ticket Proiect de Curs APPOO
    Документ29 страниц
    Service Ticket Proiect de Curs APPOO
    Alexandru Fiodor
    Оценок пока нет
  • Modul I - C 1, C 2-Introducere in Programarea Vizuala
    Modul I - C 1, C 2-Introducere in Programarea Vizuala
    Документ7 страниц
    Modul I - C 1, C 2-Introducere in Programarea Vizuala
    Alexandru Fiodor
    Оценок пока нет
  • Документ Microsoft Office Word
    Документ Microsoft Office Word
    Документ4 страницы
    Документ Microsoft Office Word
    Alexandru Fiodor
    Оценок пока нет
  • Indrumar de Laborator
    Indrumar de Laborator
    Документ135 страниц
    Indrumar de Laborator
    Alexandru Fiodor
    Оценок пока нет
  • Laboratorul nr1
    Laboratorul nr1
    Документ7 страниц
    Laboratorul nr1
    Alexandru Fiodor
    Оценок пока нет
  • AMSI Lab6
    AMSI Lab6
    Документ7 страниц
    AMSI Lab6
    Ion Boika
    Оценок пока нет
  • AMSI - LAB2 - Cobilas Adrian
    AMSI - LAB2 - Cobilas Adrian
    Документ6 страниц
    AMSI - LAB2 - Cobilas Adrian
    Alexandru Fiodor
    Оценок пока нет
  • Indicatorii Economici Ai Eficientei Investitiilor
    Indicatorii Economici Ai Eficientei Investitiilor
    Документ21 страница
    Indicatorii Economici Ai Eficientei Investitiilor
    Adriana Ioana Florescu
    100% (1)
  • Comunicația Prin Rețea
    Comunicația Prin Rețea
    Документ39 страниц
    Comunicația Prin Rețea
    Alexandru Fiodor
    Оценок пока нет
  • AMSI LAB1 Cobilas Adrian
    AMSI LAB1 Cobilas Adrian
    Документ5 страниц
    AMSI LAB1 Cobilas Adrian
    Alexandru Fiodor
    Оценок пока нет
  • Proiect de Diplomă
    Proiect de Diplomă
    Документ48 страниц
    Proiect de Diplomă
    Alexandru Fiodor
    Оценок пока нет
  • Economia Ramurii (Conspect)
    Economia Ramurii (Conspect)
    Документ31 страница
    Economia Ramurii (Conspect)
    dorin rotaru
    Оценок пока нет
  • Lab 1 C
    Lab 1 C
    Документ7 страниц
    Lab 1 C
    Alexandru Fiodor
    Оценок пока нет
  • Economia Ramurii (Conspect)
    Economia Ramurii (Conspect)
    Документ31 страница
    Economia Ramurii (Conspect)
    dorin rotaru
    Оценок пока нет
  • Cîteva Răsp V2
    Cîteva Răsp V2
    Документ8 страниц
    Cîteva Răsp V2
    Alexandru Fiodor
    Оценок пока нет
  • Cîteva Răsp
    Cîteva Răsp
    Документ7 страниц
    Cîteva Răsp
    Alexandru Fiodor
    Оценок пока нет
  • Lab 1 MN
    Lab 1 MN
    Документ12 страниц
    Lab 1 MN
    Alexandru Fiodor
    Оценок пока нет