bonjour,
En 16 bits , est il possible d'appeler un prog situé dans un autre segment de code puis de revenir
dans le segment de code initial ?
ex:
mov ax,cs ;ici cs vaut une certaine valeur
mov ds,ax
call "NEWcs:offset" ;NEWcs:offset est l'endroit où se trouve mon sous prog se terminant par un ret
blabla ;poursuite du prog principal
Car lorsque le processeur rencontre call "NEWcs:offset" ,cs prend la valeur NEWcs,le sous prog se déroule puis lors du ret on a le pop ip habituel qui renvoie bien l'offset de l'instruction suivant le call (blabla)
mais la valeur de cs reste celle du segment où se trouve le sous prog et pas celui du prog original avant le call,donc ça plante
J'ai essayé de faire push cs avant le call puis pop cs dans le sous prog avant le ret mais à priori pop cs n'est plus valable au dela des 8088.
J'y arrive en faisant des jmp mais c'est pas pratique du tout.
je travaille sous virtualbox pour l'émulation 16 bits .
Merci pour vos conseils.
Partager