Академический Документы
Профессиональный Документы
Культура Документы
Rapport
La SOMIP
Verificat de profesorul:
Chiinu 2015
Conideratii teoretice
O dischet obinuit folosete un sistem de fiiere denumit FAT( de la File Allocation Table Tabel de alocare a
fiierelor). n urma formatrii spaiul de stocare al unei dischete este divizat n urmtorul fel:
Avnd n vedere c o dischet are dou fee, se adun n total un numr 2880 de sectoare, care pot stoca
1,457,560 de baii (2880512).
Dac un fiier de 4 KB (4096 de baii) va ocupa 8 sectoare, un fiier de 500 KB (512.000 baii) va ocupa 1000 de
sectoare din cele disponibile.
In cel mai simplist mod putem spune ca bootloaderul este programul/codul executat in momentul n care un
computer pornete. Orice mainrie care ruleaz un sistem de operare are implementat un bootloader. Bootloaderul
este o component foarte important n funcionarea oricrei astfel de mainrii i fr bootloader nu poate porni. n
bootloader pot exista anumite programe de securitate care verific dac sistemul ce urmeaz s fie ncrcat este unul
autentic sau nu.
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.
Atunci cnd BIOS-ul va citi boot loader-ul de pe primul sector al dischetei, codul compilat n fiierul nostru
ASM va fi ncrcat pe adresa 0:07C00h, de unde propriu zis, vom suprancrca regitrii.
fi transmis la aceast adres. Pentru un hard disc, acest cod din sectorul rdcin
determin n realitate compartimentul activ al discului, dup care ncarc i execute sectorul rdcin al
acestui compartiment. Prin acesta controlul este transmis si stemului de operare activ al discului.
ca o instructiune if:
cmp bl,5
cmp pozitie,0
jb incrementeaza
jle setCol
anuleaza:
decr:
mov dx,pozitie
mov bl,1
sub dl,5
jmp endifblock
jmp endifpoz
incrementeaza:
inc bl;
mov dx,pozitie
jmp endifblock
jmp endifpoz
endifblock:
endifpoz: nop
nop
Concluzie
In aceasta lucrare de laborator am invatat cum sa salvam si sa citim date de pe discheta virtuala. In
limbajul de asamblare am creat un fisier .bin care care se executa la incarcarea sistemului de pe discheta
afisind 4 mesaje in centrul ecranului. Primul clipeste si iti schimba culoarea fiecare 2 secunde,
urmatoarele 3 se deplaseaza de la dreapta la stinga. Intreruperile 10h i 13h sunt folosite de func ia bios
disk pentru mai multe operaii asupra discurilor, n cazul dat nscrierea pe dischet.
Bibliografie
1.Assembly if AND.[Resursa electronica].- Regim de acces:
http://stackoverflow.com/questions/7883433/assembly-if-and
2.Assembly 8086 ,range of a 16 bit register and cmp.[Resursa electronica].- Regim de acces:
http://stackoverflow.com/questions/20873016/assembly-8086-range-of-a-16-bit-register-and-cmp
3.Timer interrupts in assembly.[Resursa electronica].- Regim de acces:
http://www.microchip.com/forums/m812420.aspx
Anexa
Anexa A
Listingul programului
#make_bin#
mov
org 7c00h
.MODEL
SMALL
.STACK
bl, 01h ;
mov pozitie,65
iteratie:
100h
.DATA
mesaj DB "SOMIPP"
lmesaj
EQU $-mesaj
mesaj2 DB
lmesaj2
EQU $-mesaj2
mov ax,1300h
int 10h
EQU $-mesaj3
mesaj4 DB "FI-131"
lmesaj4
EQU $-mesaj4
push bx;
buf Dw ?
mov bl,9;
pozitie dw ?
cmp pozitie,0
.CODE
start:
jle setCol
;mov ax,@data
;mov ds,ax
;mov es,ax
; registrul de
decr:
mov dx,pozitie
sub dl,5
jmp endifpoz
; functia
setCol: mov pozitie,65
mov dx,pozitie
jb incrementeaza
jmp endifpoz
anuleaza:
mov bl,1
jmp endifblock
endifpoz: nop
;mesaj2
incrementeaza:
mov pozitie,dx
inc bl;
mov dh,12
jmp endifblock
endifblock:
nop
mov ax,1300h
int 10h
;mesej3
mov bl,9
;stergem
mov buf,bx;
mov bl,0;
mov ax,1300h
int 10h
mov ax,1300h
int 10h
mov bl,9
; stergem mesaj 2
mov dh,14 ;rindul
mov dx,pozitie
mov dh,12
mov ax,1300h
int 10h
mov ax,1300h
pop bx;
int 10h
mov buf,0
; stergem mesaj 3
mov dx,pozitie
;timer 2s
mov dh,13
MOV AH,0x86
MOV CX,001eh
MOV DX,8480h
mov ax,1300h
int 0x15
int 10h
; stergem mesaj 4
cmp bl,5
mov dx,pozitie
mov dh,14
jne iteratie
mov ax,1300h
END Start
int 10h
mov bx,buf
INT 19h
; reboot
times 510-($-$$) db 0
cmp dl,200