Asssembleur

Fermé
funinformatique Messages postés 3 Date d'inscription dimanche 1 janvier 2012 Statut Membre Dernière intervention 2 janvier 2012 - Modifié par funinformatique le 1/01/2012 à 02:52
funinformatique Messages postés 3 Date d'inscription dimanche 1 janvier 2012 Statut Membre Dernière intervention 2 janvier 2012 - 2 janv. 2012 à 00:32
slt tous le monde , j'ai devlopé ce code en assembleur , qui a pour role , de detourné la int 20h vers une autre routine
et je sais pas prk
ca marche pas
aidé moi a le corrigé et merci







title tp_2
.model small
.stack 100h
.data
msg db "suucess detournement 20h $"
msg1 db "pour continuer tapez 1 , pour terminer tapez 0 $"

msg2 db "le programme va se terminer $"




redirect_int proc
push ds
mov ax,cs
mov ds,ax

mov dx,offset new_routine



mov ah,25h
mov al,20h
int 21h
pop ds
int 20h
redirect_int endp





new_routine proc


call success_detournement msg
call routine_detournement msg1
new_routine endp





success_detournement proc

mov ah,9
mov dx,offset msg
int 21h

endm success_detournement



routine_detournement proc
adr3:

mov ah,9
mov dx,offset msg1
int 21h

mov ah,1
int 21h
cmp al,'1'
je adr1
jne adr2
adr1:
call afficher_msg msg2
adr2:
cmp al,'0'
je adr4
jne adr3
adr4:
call fin_propre
routine_detournement endp



afficher_msg proc

mov cx,5

boucle:

mov ah,9
mov dx,offset msg2
int 21h

loop boucle




afficher_msg endp


fin_propre proc
pop ds
pop dx
mov ah,25h
mov al,20h
int 21h


fin_propre endp





.code


main proc
mov ax,@data
mov ds, ax
mov ah ,35h
mov al,20h
int 21h
push bx
push es
call redirect_int




endp main
end

3 réponses

funinformatique Messages postés 3 Date d'inscription dimanche 1 janvier 2012 Statut Membre Dernière intervention 2 janvier 2012
1 janv. 2012 à 02:47
ce code ne marche pas aidez moi a le corrigé
0
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
Modifié par nicocorico le 1/01/2012 à 11:03
Et à quel endroit ça bloque ?
Est-ce que le détournement lui-même fonctionne ?

Il y a quelques problèmes au niveau de la manière de coder dans 'routine_detournement', et surtout un gros soucis sur le rétablissement de l'interruption d'origine, car tu sauvegarde BX et ES sur la pile, et tu veux les dépiler à la suite de plusieurs Call, donc en fait tu dépiles les adresses de retour des Call au lieu des valeurs souhaitées.
Pour y palier, il suffit de les sauvegarder dans des variables...

Le chêne aussi était un gland, avant d'être un chêne
0
funinformatique Messages postés 3 Date d'inscription dimanche 1 janvier 2012 Statut Membre Dernière intervention 2 janvier 2012
2 janv. 2012 à 00:32
merci :)
0