salut,
; scan les 32 premiers secteurs du disque afin de trouver une copie du mbr
; a mettre sur une d7 boot dos.
[BITS 16]
[ORG 0x100]
start:
mov di,1
lea si,[msgnok]
.1:
inc di
cmp di,32
jae .nok
mov ax,0x0201
mov dx,0x80 ; !!! mettre 0x80:IDE0,0x81:IDE1,...
lea bx,[buff]
mov cx,di
int 0x13
jc .1
cmp pw[buff+0x1FE],0xAA55
jne .1
mov ax,0x0301
mov dx,0x80 ; !!! mettre 0x80:IDE0,0x81:IDE1,...
lea bx,[buff]
mov cx,1
int 0x13
jc .nok
lea si,[msgok]
; !!! rend la copie mbr invalide. ( appels recursifs )
; mov ax,[buff+0x1FE]
; xchg al,ah
; mov [buff+0x1FE],ax
;
; mov ax,0x0301
; mov dx,0x80 ; !!! mettre 0x80:IDE0,0x81:IDE1,...
; lea bx,[buff]
; mov cx,di
; int 0x13
.nok
call outMsg
ret
outMsg: ;IN si = string ptr
push si
push bx
.1
cmp pb[si],0
mov al,[si]
je .2
mov ah,0x0A
xor cx,cx
xor bx,bx
int 0x10
inc si
jmp .1
.2
pop bx
pop si
ret
msgok:
db "reecriture mbr effectuee.",0
msgnok:
db "echec reecriture mbr.",0
buff:
;-------------------------------------
a compiler avec nasm
@++