Accueil > > > [NASM] ÉCRITURE BOOT DISQUETTE ET DISQUE DUR
[NASM] ÉCRITURE BOOT DISQUETTE ET DISQUE DUR
Information sur la source
Description
AVERTISSEMENT SURTOUT Y FAUT PAS L'éXECUTER !!!! Y a peut-être 1 chance sur 100 que ca marche mais ca peut endommager la zone de boot de votre ordinateur.
C justement pour ca que j'ai pas pu le tester ce code et j'aimerai savoir si d'après vous il marche ou comment le tester sans rien risquer (au pire j'irai le tester au lycée lol).
Merci d'avance j'espere avoir de l'aide !!!
Source
- BITS 16 ;Set code generation to 16 bit mode
- ORG 0x0100 ;Set code start address to 0100h
-
-
- SEGMENT .text ;Main code segment
-
- jmp start ;saut au d?but du prog
-
- ; --- Donn?s diverses ---
-
- first db 'Ins?rez une disquette et appuyez sur une touche...',13, 10, '$'
- msgErr db 'Erreur pendant ?criture sur disquette...', 13, 10, '$'
- okay db 'A fini correctement VIVE PRINCE DES SARDINES !!!', 13, 10, '$'
- floppybuf resb 512 ;tableau repr?sente secteur de disquette
-
- ; --- Initialisation ---
-
- start: ;d?but du prog
- mov ax, cs
- mov ds, ax
- mov es, ax
-
- ; --- Ecrit message et attend l'appui d'une touche ---
-
- ;?crit
- mov ah, 09h
- mov dx, first
- int 21h
-
- ;attend l'appui
- mov ax, 0C08h
- int 21h
-
- ; --- Copie secteur dans floppybuf ---
-
- mov si, debut_Disquette
- mov di, floppybuf
- mov cx, 512
- rep movsb
-
- ; --- pour le compte des erreurs ---
-
- xor ax, ax ;on met ax a 0
-
- ; --- On copie le code de la disquette dans buffer ---
-
- copie_disquette:
-
- ;on met ax dans la pile
- push ax
-
- ;recalibre la disquette
- mov ah, 00h
- mov dl, 0 ;drive 0
- int 13h
-
- ;?crit le secteur
- mov ax, 0301h ;1 secteur
- mov dx, 0 ;t?te et lecteur de disquette
- mov ch, 0 ;cylindre 0
- mov cl, 1 ;premier secteur de disquette
- mov bx, floppybuf ;pointeur sur tableau
- int 13h
-
- ;si correct fin
- jc erreur
- mov ah, 09h
- mov dx, okay
- int 21h
- jmp fin
-
- ;si erreur
- erreur:
- pop ax
- inc ax
- cmp ax, 5
- jl copie_disquette
-
- ;message d'erreur et fin du prog
- mov ah, 09h
- mov dx, msgErr
- int 21h
- jmp fin
-
- ; --- Termine le programme ---
-
- fin:
- mov ax, 4C00h
- int 21h
-
- ; --- Code ? copier sur une disquette ---
-
- jmp debut_Disquette
-
- hardbuf resb 512 ;tableau repr?sente secteur de disque dur
-
- ; --- Initialisation ---
-
- debut_Disquette:
- mov ax, cs
- mov es, ax
- mov ds, ax
-
- ; --- Affiche OK ---
-
- mov ah, 0Eh
- mov al, 'O'
- mov bl, 4
- int 10h
-
- mov al, 'K'
- int 10h
-
- ; --- Copie secteur dans hardbuf ---
-
- mov si, debut_DisqueDur+7C00h
- mov di, hardbuf+7C00h
- mov cx, 512
- rep movsb
-
- copie_disque_dur:
-
- ;on recalibre le disque dur
- mov ah, 00h
- mov dl, 80h ;disque dur 1
- int 13h
-
- ;on ?crit le secteur
- mov ax, 0301 ;?crit un secteur
- mov ch, 0 ;cylindre 0
- mov cl, 1 ;secteur 1
- mov dh, 0 ;t?te 0
- mov dl, 80h ;pour le disque dur
- mov bx, hardbuf+7C00h ;pointeur sur tableau
- int 13h
-
- ;si pas d'erreur affiche K puis boucle infinie
- jnc bien
-
- ;si erreur
- jmp copie_disque_dur
-
- ;affiche ! pour signaler la r?ussite
- bien:
- mov ah, 0Eh
- mov al, '!'
- mov bl, 4
- int 10h
-
- ;entame une boucle infinie (disquette)
- boucle_floppy:
- jmp boucle_floppy
-
- ; --- Code ? copier sur le disque dur ---
-
- debut_DisqueDur:
-
- ;initialisations
- mov ax, cs
- mov ds, ax
- mov es, ax
-
- ;affiche une cha?ne de caract?res
- mov ah, 0Eh
- mov al, 'P'
- mov bl, 4
- int 10h
-
- mov al, 'r'
- int 10h
- mov al, 'i'
- int 10h
- mov al, 'n'
- int 10h
- mov al, 'c'
- int 10h
- mov al, 'e'
- int 10h
- mov al, '_'
- int 10h
- mov al, 'd'
- int 10h
- mov al, 'e'
- int 10h
- mov al, 's'
- int 10h
- mov al, '_'
- int 10h
- mov al, 's'
- int 10h
- mov al, 'a'
- int 10h
- mov al, 'r'
- int 10h
- mov al, 'd'
- int 10h
- mov al, 'i'
- int 10h
- mov al, 'n'
- int 10h
- mov al, 'e'
- int 10h
- mov al, 's'
- int 10h
- mov al, ' '
- int 10h
- mov al, 'C'
- int 10h
- mov al, 'O'
- int 10h
- mov al, 'R'
- int 10h
- mov al, 'P'
- int 10h
- mov al, 'O'
- int 10h
- mov al, 'R'
- int 10h
- mov al, 'A'
- int 10h
- mov al, 'T'
- int 10h
- mov al, 'I'
- int 10h
- mov al, 'O'
- int 10h
- mov al, 'N'
- int 10h
-
- ;boucle infinie
- boucle_hard:
- jmp boucle_hard
-
- ; --- Fin du code disque dur ---
-
BITS 16 ;Set code generation to 16 bit mode
ORG 0x0100 ;Set code start address to 0100h
SEGMENT .text ;Main code segment
jmp start ;saut au d?but du prog
; --- Donn?s diverses ---
first db 'Ins?rez une disquette et appuyez sur une touche...',13, 10, '$'
msgErr db 'Erreur pendant ?criture sur disquette...', 13, 10, '$'
okay db 'A fini correctement VIVE PRINCE DES SARDINES !!!', 13, 10, '$'
floppybuf resb 512 ;tableau repr?sente secteur de disquette
; --- Initialisation ---
start: ;d?but du prog
mov ax, cs
mov ds, ax
mov es, ax
; --- Ecrit message et attend l'appui d'une touche ---
;?crit
mov ah, 09h
mov dx, first
int 21h
;attend l'appui
mov ax, 0C08h
int 21h
; --- Copie secteur dans floppybuf ---
mov si, debut_Disquette
mov di, floppybuf
mov cx, 512
rep movsb
; --- pour le compte des erreurs ---
xor ax, ax ;on met ax a 0
; --- On copie le code de la disquette dans buffer ---
copie_disquette:
;on met ax dans la pile
push ax
;recalibre la disquette
mov ah, 00h
mov dl, 0 ;drive 0
int 13h
;?crit le secteur
mov ax, 0301h ;1 secteur
mov dx, 0 ;t?te et lecteur de disquette
mov ch, 0 ;cylindre 0
mov cl, 1 ;premier secteur de disquette
mov bx, floppybuf ;pointeur sur tableau
int 13h
;si correct fin
jc erreur
mov ah, 09h
mov dx, okay
int 21h
jmp fin
;si erreur
erreur:
pop ax
inc ax
cmp ax, 5
jl copie_disquette
;message d'erreur et fin du prog
mov ah, 09h
mov dx, msgErr
int 21h
jmp fin
; --- Termine le programme ---
fin:
mov ax, 4C00h
int 21h
; --- Code ? copier sur une disquette ---
jmp debut_Disquette
hardbuf resb 512 ;tableau repr?sente secteur de disque dur
; --- Initialisation ---
debut_Disquette:
mov ax, cs
mov es, ax
mov ds, ax
; --- Affiche OK ---
mov ah, 0Eh
mov al, 'O'
mov bl, 4
int 10h
mov al, 'K'
int 10h
; --- Copie secteur dans hardbuf ---
mov si, debut_DisqueDur+7C00h
mov di, hardbuf+7C00h
mov cx, 512
rep movsb
copie_disque_dur:
;on recalibre le disque dur
mov ah, 00h
mov dl, 80h ;disque dur 1
int 13h
;on ?crit le secteur
mov ax, 0301 ;?crit un secteur
mov ch, 0 ;cylindre 0
mov cl, 1 ;secteur 1
mov dh, 0 ;t?te 0
mov dl, 80h ;pour le disque dur
mov bx, hardbuf+7C00h ;pointeur sur tableau
int 13h
;si pas d'erreur affiche K puis boucle infinie
jnc bien
;si erreur
jmp copie_disque_dur
;affiche ! pour signaler la r?ussite
bien:
mov ah, 0Eh
mov al, '!'
mov bl, 4
int 10h
;entame une boucle infinie (disquette)
boucle_floppy:
jmp boucle_floppy
; --- Code ? copier sur le disque dur ---
debut_DisqueDur:
;initialisations
mov ax, cs
mov ds, ax
mov es, ax
;affiche une cha?ne de caract?res
mov ah, 0Eh
mov al, 'P'
mov bl, 4
int 10h
mov al, 'r'
int 10h
mov al, 'i'
int 10h
mov al, 'n'
int 10h
mov al, 'c'
int 10h
mov al, 'e'
int 10h
mov al, '_'
int 10h
mov al, 'd'
int 10h
mov al, 'e'
int 10h
mov al, 's'
int 10h
mov al, '_'
int 10h
mov al, 's'
int 10h
mov al, 'a'
int 10h
mov al, 'r'
int 10h
mov al, 'd'
int 10h
mov al, 'i'
int 10h
mov al, 'n'
int 10h
mov al, 'e'
int 10h
mov al, 's'
int 10h
mov al, ' '
int 10h
mov al, 'C'
int 10h
mov al, 'O'
int 10h
mov al, 'R'
int 10h
mov al, 'P'
int 10h
mov al, 'O'
int 10h
mov al, 'R'
int 10h
mov al, 'A'
int 10h
mov al, 'T'
int 10h
mov al, 'I'
int 10h
mov al, 'O'
int 10h
mov al, 'N'
int 10h
;boucle infinie
boucle_hard:
jmp boucle_hard
; --- Fin du code disque dur ---
Conclusion
Alors voila maintenant hésitez pas à déposez vos commentaires mais soyez gentil je suis un noob de l'asm et le moin qu on puisse dire c que de toute facon l'optimisation c pas mon truc lol.
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|