Documente Academic
Documente Profesional
Documente Cultură
Obiective
Dezvoltarea propriului bootloader si inscrierea acestuia pe discheta.
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 510 bytes de pe dischet.
Teoretic acesta reprezint primul sector, care l vom seta pentru ncrcarea kernelului de sistem dezvoltat la urmtoarele lucrri de laborator.
Un exemplu de bootstrap este expus mai jos:
;**************************************
[BITS 16]
ORG
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 ntrun 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.
Lansm aplicaia
Concluzii
n cadrul lucrrii de laborator Nr.1 am fcut cunotin cu emulatorul emu8086,
am studiat procesul make_boot. n cadrul lucrrii am realizat un macrou, am folosit
instruciunile de salt condiionat (JZ, JMP). Pentru definirea mesajelor,modului de
afisare a acestora am creat un macrou ,unde folosim intreruperea 10h,care se foloseste
pentru lucru cu terminalul grafic.Am ndeplinit condiia de crearea a unui bootloader i
nscrierea acestuie pe o dischet virtual.
Bibliografie
1 Documentation for emu8086 - assembler and microprocessor emulator, Daniel B.
Sedory
2 Emu 8086. [Resurs electronic].- regim de acces
http://muhendislik.istanbul.edu.tr/elektrikelektronik/wpcontent/uploads/2013/12/Emu808
6_tutorial. pdf
3 Complete 8086 instruction set. [Resurs electronic]- regim de acces
http://www.electronics.dit.ie/staff/tscarff/8086_instruction_set/8086_instruction_set.html#
CMP
ANEXE
ANEXA 1
Rezultatele afirii pe ecran
Fig 4 Rezultatele
ANEXA 2
#make_boot#
org 07c00h
mov di,0
;Message Macro
labSOMIPP macro x,y,col,size,mess
mov dl,x
mov dh,y
mov ah,02h
int 10h
mov cx,size
mov al,1
mov bl,col
mov bp,offset mess
mov ah,13h
int 10h
endm
;Delay Macro
macro off msec
mov ah,86h
mov cx,msec
int 15h
endm
Repeat:
mov dl, contor
cmp dl,50
je ResetContor
Cycle:
inc dl
inc di
mov contor, dl
labSOMIPP contor,7,1111b,9,mess1
labSOMIPP contor,9,1111b,9,mess2
labSOMIPP contor,13,1111b,9,mess3
labSOMIPP contor,15,1111b,9,mess4
off 4
call ClrScr
cmp di,5
je sleep
jmp Repeat
sleep:
inc dl
mov contor,dl
inc color
cmp color, 0Fh
je ResetColour
labSOMIPP contor,7,1111b,9,mess1
labSOMIPP contor,9,1111b,9,mess2
labSOMIPP contor,13,1111b,9,mess3
labSOMIPP contor,15,1111b,9,mess4
labSOMIPP 35,11,color,13,mess
off 5
mov di,0
call ClrScr
jmp Repeat
ResetContor:
mov dl,0
mov contor,dl
jmp Cycle
;=========================DataSegement================
mess db
'Hello, World!'
mess1 db
'Message 1'
mess2 db
'Message 2'
mess3 db
'Message 3'
mess4 db
'Message 4'
contor
db 0
color
db 0