Buenas a to2!
Acabo de empezar a estudiar el lenguaje ensamblador y me ha surgido una duda sobre los registros.
Es lo mismo un registro de tipo EAX que de tipo AX?
Si no es asi, en que se diferencian?
Gracias de antemano y prdon x la duda, que se que es algo muy basico.
Si no recuerdo mal:
EAX y AX no son "tipos" de registros, sino nombres de registros concretos. EAX es el doble de grande que AX (igual que EBX respecto a BX), y además AX es la parte menos significativa de EAX. Creo que era que EAX son 4 bytes, de los cuales los 2 menos significativos "son" AX.
La necesidad de ser compatible hacia atrás hace que el ensamblador del x86 sea odioso a más no poder. Cuando todas las aplicaciones de usuario sean Java o .Net, al fin podrán en Intel diseñar un repertorio como Dios manda (como ya hicieron al diseñar el Itanium).
--------------
| AH | AL | <--- 2 x 16bit
--------------
| AX | <--- 16bit
---------------
| EAX | <---- 32 bit
---------------
| RAX | <--- 64 bit
----------------
AX = 0x0000
Eso quiere decir que AH vale 0x00 y AL 0x00
si cambiasemos los registros
mov AH, 0x4C
mov AL, 0x69
entonces cambiaria el valor de AX
Al primer movimiento se quedaria en
AX = 0x4C00
Al segundo
AX = 0x4C69
16 DOS r00lz
Gracias a ambos por vuestra ayuda.
Ahora lo tengo claro.
Salu2!