Documente Academic
Documente Profesional
Documente Cultură
RAPORT
Lucrare de laborator Nr.1
Disciplina: Sisteme de operare. Mecanisme interne i principii de proiectare
A efectuat:
A verificat:
Chiinu 2014
Obiectivele lucrarii:
Dezvoltarea peopriului bootloader i nscrierea acestuia pe dischet.
Condiii:
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.
Realizarea sarcinii:
Pentru a efectua aceast lucrare de laborator am avut nevoie de compilatorul nasm,
folosit pentru compilarea fiierelor .asm i o aplicaie care nscrie fiiere pe primul sector
al dischetei.
Compilatorul nasm l-am descrcat de pe sit-ul oficial nasm.us i l-am instalat,
procedura de instalare fiind una standart.
Pentru a obine dintr-un fiier n format .asm unul .com este destul s deschidem
nasmul i s introducem urmtoare instruciune: nasm numefisier.asm o bin f
numefisier.com(vezi n Figura 1).
am creat pe dischet a fost deajuns s aleg fiierul n format .com i s aps butonul write
(vezi n Figura 2).
db
dw
db
dw
db
dw
dw
db
dw
dw
dw
dd
dw
db
dd
db
db
0,0,0,0,0,0,0,0
512
1
1
2
224
2880
0F0h
9
18
2
0
0
0
0
255,255,0,0,0,0,0,0,0,0,0
1,0,0,0,0,0,0,0
[ORG 0]
jmp 07C0h:_start
msg1
lmsg1
db 'Laboratorul'
EQU $-msg1
msg2
lmsg2
db 'nr1'
EQU $-msg2
msg3
lmsg3
db 'SOMIPP'
EQU $-msg3
msg4
lmsg4
db 'Cobilas'
EQU $-msg4
msg5
lmsg5
db 'Adrian'
EQU $-msg5
msg6
lmsg6
msg7
lmsg7
msg8
lmsg8
db
EQU
color db 09,07,05,02,04,06
space db 57,46,35,20,10,5
_start:
; Update the segment registers
mov ax, cs
mov ds, ax
mov es, ax
mov ax, 03
int 10h
mov si,0
a:
call printfirstrow
call printallrow
call interrup
call clear
call interrup
inc si
cmp si,6
je b
jne a
b:
;curatirea ecranului
mov si,0
jmp a
printfirstrow:
mov
mov
mov
mov
mov
mov
mov
mov
int
ah,13h
al,1
bh,0
bl,[color+si]
cx,lmsg1
dh,8
dl,25
bp,msg1
10h
;numarul functiei
;write mode (advance cursor, ASCII string)
;numarul paginii video active
;attribute (blue on black)
;string length
;rindul de afisare
;coloana de afisare
mov
mov
mov
mov
mov
mov
mov
mov
int
ah,13h
al,1
bh,0
bl,[color+si]
cx,lmsg2
dh,8
dl,37
bp,msg2
10h
;numarul functiei
;write mode (advance cursor, ASCII string)
;numarul paginii video active
;attribute (blue on black)
;string length
;rindul de afisare
;coloana de afisare
mov
mov
mov
mov
mov
mov
mov
mov
int
ah,13h
al,1
bh,0
bl,[color+si]
cx,lmsg3
dh,8
dl,41
bp,msg3
10h
;numarul functiei
;write mode (advance cursor, ASCII string)
;numarul paginii video active
;attribute (blue on black)
;string length
;rindul de afisare
;coloana de afisare
mov
mov
mov
mov
mov
mov
mov
mov
int
ah,13h
al,1
bh,0
bl,[color+si]
cx,lmsg4
dh,8
dl,48
bp,msg4
10h
;numarul functiei
;write mode (advance cursor, ASCII string)
;numarul paginii video active
;attribute (blue on black)
;string length
;rindul de afisare
;coloana de afisare
mov
mov
mov
mov
mov
mov
mov
ah,13h
al,1
bh,0
bl,[color+si]
cx,lmsg5
dh,8
dl,56
;numarul functiei
;write mode (advance cursor, ASCII string)
;numarul paginii video active
;attribute (blue on black)
;string length
;rindul de afisare
;coloana de afisare
mov bp,msg5
int 10h
ret
printallrow:
mov
mov
mov
mov
mov
mov
mov
mov
int
ah,13h
al,1
bh,0
bl,09
cx,lmsg6
dh,10
dl,[space+si]
bp,msg6
10h
;numarul functiei
;write mode (advance cursor, ASCII string)
;numarul paginii video active
;attribute (blue on black)
;string length
;rindul de afisare
;coloana de afisare
mov
mov
mov
mov
mov
mov
mov
mov
int
ah,13h
al,1
bh,0
bl,09
cx,lmsg7
dh,12
dl,[space+si]
bp,msg7
10h
;numarul functiei
;write mode (advance cursor, ASCII string)
;numarul paginii video active
;attribute (blue on black)
;string length
;rindul de afisare
;coloana de afisare
mov
mov
mov
mov
mov
mov
mov
mov
int
ah,13h
al,1
bh,0
bl,09
cx,lmsg8
dh,14
dl,[space+si]
bp,msg8
10h
;numarul functiei
;write mode (advance cursor, ASCII string)
;numarul paginii video active
;attribute (blue on black)
;string length
;rindul de afisare
;coloana de afisare
ret
interrup:
mov cx,000ah
mov dx,0000h
mov ah,86h
int 15h
ret
clear:
mov ax, 03
int 10h
ret
;curatirea ecranului
times 510-($-$$) db 0
dw 0AA55h
Interfaa bootloader-ului: