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
TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : PIC 16F84RE : PIC 16F84 par pont
Cliquez pour lire la suite par pont RE : PIC 16F84RE : PIC 16F84 par belounis
Cliquez pour lire la suite par belounis RE : PIC 16F84RE : PIC 16F84 par pont
Cliquez pour lire la suite par pont
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|