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
(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
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
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 ?
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