c'est normal sous Tasm par défaut assrmble en 16bits. Il génère un préfixe de changement en 32bits. Il faut que tu ecrives:
CODE sgment dword use32
mov dword ptr [00445120], 90909090h
CODE ends
Core Breaker 
-------------------------------
Réponse au message :
-------------------------------
> Bonjour à tous.
>
> J'utilise un Pentium II PC, Windows ME, et un debuggeur qui a un assembleur intégré. Lorsque je veux modifier le programme que je debuggue, je tape dans cet assembleur, par exemple :
>
> mov dword ptr [00445120], 90 90 90 90
>
> Lorsque j'exécute cette ligne, le débuggueur remplace le dword en 445120 qui contenait XX XX XX XX par 90 90 90 90.
> Autrement dit : [00445120] ne signifie pas : "l'adresse contenue à l'adresse 445120", mais bien : cette adresse 4455120 elle-même.
> D'ailleurs le code fabriqué par cet assembleur intégré est bien :
> C7 05 20 51 44 00 90 90 90 90
>
> Mais lorsque je veux obtenir le même code en tapant un source pour TASM, par exemple, ou MASM, ces assembleurs lisent bien ma ligne
> mov dword ptr [00445120], 90909090
> mais refusent de me fabriquer :
> C7 05 20 51 44 00 90 90 90 90
> en me disant -ce qui ne me surprend pas- 'illegal immediate'.
>
> Je dois alors écrire :
> mov eax, 445120h
> mov dword ptr [eax], 90909090
> pour obtenir mon résultat. Mais cela ne me satisfait pas car le code prend plus d'octets.
> Mettre :
> .data
> mem dd 4455120h
> ne me convient pas davantage, pour la même raison.
>
> Ma question est :
> pourquoi le debuggueur fabrique-t-il, lui, le bon code ?
> que dois-je écrire pour obtenir ce même résultat (i.e C7 05 20 51 44 00 90 90 90 90) avec TASM ou MASM ?
>
> TIA
> Erkson