1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| org 0h
call enregistre_ip ;empile ip et fait un saut nul
enregistre_ip:
push cs
xor eax,eax
xor ebp,ebp
pop ax
pop bp
shl eax,4
add ebp,eax
sub ebp,enregistre_ip ;ebp pointe désormais sur le premier octet du programme (adresse absolue)
cmp ebp,50000h ;la position ou devrait se trouver le programme
je position_code_ok
mov eax,ebp ;déplace le code au bon endroit
mov esi,ebp
shr eax,4
and esi,0Fh
mov ds,ax
xor di,di
mov ax,5000h
mov es,ax
mov cx,8000h
rep movsb
mov cx,8000h
rep movsb
jmp 5000h:position_code_ok
position_code_ok: |
Partager