Qu'est ce que le DOS ?

CyberP1708 -  
 CyberP1708 -
Bonjour,

Je voudrais savoir ce qu'est réellement le DOS...

En effet, j'ai créé une disquette de boot qui affiche "Hello World!", le tout en assembleur (donc ce qui est sur la disquette n'est QUE le programme, rien d'autre n'est inclus).

Et pour afficher "Hello World!" j'utilise une interruption (une fonction en quelques sortes) "du DOS".

Ca m'indigne beaucoup parce que je pensais que le DOS était un système d'exploitation... (c'est ce qu'il y a écrit sur le site d'ailleurs) Mais si je boote à partir de la disquette il ne peut pas y avoir de système d'exploitation lancé !

Merci d'avance

4 réponses

dje-dje Messages postés 10442 Statut Modérateur 758
 
"Mais si je boote à partir de la disquette il ne peut pas y avoir de système d'exploitation lancé ! "
-> Il ya des systemes d'exploitation qui tiennent sur 1 disquette :)
-> On peut démarrer sur une disquette a condition que certains fichiers soient présents sur la disquette: il n'y a vraiment rien d'autre que ton prog sur cette disquette?

a+
dje-dje
0
Utilisateur anonyme
 
Bonjour,

Il y a quoi sur ta disquette à part ton programme ? Qu'est ce qui la fait booter ?

Le DOS est bel et bien un OS... :)
0
CyberP1708
 
Voici le contenu de la disquette :

jmp debut
db "BOOT", 0, 0, 0, 0
dw 512
db 1
dw 1
db 2
dw 224
dw 2880
db 0xF0
dw 9
dw 18
dw 2
dw 0
dw 0
db 0
db 0
db 0x29

debut:
cli
mov ax, 0x6000
mov ss, ax
mov ax, 0x07C0
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
mov sp, 0xFFFF
mov ax, 0012h
int 10h
sti

mov cx, 12
boucle:
mov di, 12
sub di, cx
mov ah, 0Eh
mov al, [helloworld + di]
mov bh, 0
mov bl, 0FFh
int 10h
loop boucle
infini:
jmp infini

helloworld db "Hello World!"

times 510 - ($-$$) db 0

db 0x55
db 0xAA


Une disquette est bootable si les octets 511 et 512 contiennent un code spécial (55AA en hexa, ce sont les deux dernières lignes du code que j'ai mis)
Il n'y a pas besoin spécialement de fichiers supplémentaires : pour une disquette de démarrage c'est le premier segment (là où ça boote) qui démarre les autres fichiers, dans mon cas tout se fait directement dans le premier segment
La preuve c'est que ça marche et que windows me dit que 0 octets sont utilisés sur la disquette
0
CyberP1708
 
Désolé, il semblerait que j'ai fait une erreur : ce que j'utilise c'est en fait une interruption du BIOS (il y a les deux)
Je viens de trouver un site disant que c'est impossible que ce soit du DOS (justement puisqu'il n'est pas là) et en approfondissant j'ai trouvé que ce que j'utilisais n'était pas du DOS

Merci quand même
0