petite question sur les registres - ASM - Programmation
Marsh Posté le 06-11-2003 à 21:57:07
huh ? 
dans BX tu auras AX 
 
DX est dans DX et pas dans AX 
 
DX:AX fait 32bits, je vois pas comment tu veux faire entrer ca dans VX qui lui en fait 16 
 
 
Marsh Posté le 06-11-2003 à 22:06:22
est il normal que 1/2 ne rentre pas dans AX ? et qu'il concatene donc DX ?
Marsh Posté le 06-11-2003 à 22:42:55
disons, si j'agit sur AX qui est concatené avec DX 
par disons un MUL  AX (pour faire un AX^2 par exemple) 
le MUL AX vas t'il agir sur AX et DX ?
Marsh Posté le 06-11-2003 à 22:45:50
mais comment diable ton AX est il concatené avec DX ? 
par quelle sorcellerie ?
Marsh Posté le 06-11-2003 à 22:49:04
sans doute car ma valeur ne rentre pas entierement dans AX ?
Marsh Posté le 06-11-2003 à 22:49:12
Tu veux "concaténer" DX et AX ? 
MOV BX,DX 
SHL EBX,16 
MOV BX,AX ![[:figti] [:figti]](https://forum-images.hardware.fr/images/perso/figti.gif) 
  
 
(modulo toutes les erreurs possible et imaginables  )
 )
Marsh Posté le 06-11-2003 à 22:50:43
ben genre si il est en 16bits il va pas etre decu du voyage 
Marsh Posté le 06-11-2003 à 22:51:13
je pipe rien à ce qu'il dit ![[:mlc] [:mlc]](https://forum-images.hardware.fr/images/perso/mlc.gif) 
 
si tu fais un "mul ax" et que le résultat dépasse 16 bits, les 16 bits de poids fort iront dans dx et puis voila hein ! 
Marsh Posté le 06-11-2003 à 22:52:38
| Harkonnen a écrit : je pipe rien à ce qu'il dit  | 
 
vi et donc si apres je veux faire un  
MOV BX,AX j'aurais koi dans mon BX ? que la valeur du AX, sans le poid fort. 
Marsh Posté le 06-11-2003 à 22:58:17
| Spy-master a écrit :   | 
 
ben oui, les registres ne sont pas élastiques ![[:skeye] [:skeye]](https://forum-images.hardware.fr/images/perso/skeye.gif) 
 
si tu veux tout avoir dans un registre, tu bosses en 32 bits et puis voila !
Marsh Posté le 06-11-2003 à 22:58:23
| Spy-master a écrit :   | 
 
 
Bon, c'est tres simple 
 
mul xx 
 
produira un resultat sur 32bits 
 
les 16bits poids haut iront dans DX  
les 16bits poids faible iront dans AX 
 
C'est le comportement de CETTE instruction, n'en deduit pas qu'elles fonctionnent toute comme ca ! (ce qui est faux a 99.99% du tps) 
 
 
 
Marsh Posté le 06-11-2003 à 23:13:14
| chrisbk a écrit :   | 
 
c'est valable aussi pour imul  
 
et pour div/idiv, DX contient le reste de la division 
Marsh Posté le 06-11-2003 à 23:15:12
| Harkonnen a écrit :   | 
 
 
mr veut avoir le dernier mot hein ? 
Marsh Posté le 06-11-2003 à 23:24:11
| chrisbk a écrit :   | 
  
 
 
n'empeche que c'est une belle merde  
 
je suppose que c'est pour préserver cette foutue compatibilité qu'Intel n'a jamais prévu de mettre les 16 bits de poids fort dans la partie haute de EAX en cas de dépassement de la partie basse... y serait peut etre temps qu'ils y viennent, c'est archi anachronique ce truc ! s'ils sortent un proc 64 bits, ce genre de bidouille fera tache  
 
 
et AMD, y'zont rectifié le tir sur les Athlon 64 ? ![[:cupra] [:cupra]](https://forum-images.hardware.fr/images/perso/cupra.gif)
Marsh Posté le 06-11-2003 à 21:55:19
si j'ai AX qui se trouve concaténé avec DX, et que je fais un :
 
 
MOV BX,AX qu'aurais je dans BX ? d'apres mes test j'ai ce qu'il y avait dans AX, mais sans ce qu'il y avait dans DX.
Es ce que je me trompe ? Si non ,comment faire pour passer la valeur total DX-AX à BX ?
Merci