寄存器 EAX, AX, AH, AL

EAX与AX不是独立的,EAX是32位寄存器,而AX是EAX的低16位。
举例来说
mov eax, 12345678h
那么AX将会是eax的低16位,也就是5678h。
而如果此时
mov ax,3344h
那么eax的值将变为12343344h,所以对ax的赋值是会影响eax的。 

同样,AH是ax的高8位,而AL是ax的低8位,这就是说ah为33h,al为44h。
 
先请看图,图看懂了就基本解决这个了疑问了。

00000000 00000000 00000000 00000000
|===============EAX===============|--32个0,4个字节,2个字,1个双字
|======AX=======|--16个0,2个字节,1个字
|==AH===|-----------8个0,1个字节
|===AL==|---8个0,1个字节

虽说EAX是32位的寄器,但其实只是在原有的8086CPU的寄存器AX上增加了一倍的数据位数而已。故而EAX与AX根本不可能独立,二者是整体与部分的关系。

对EAX直接赋值,若更改了低16位自然会改变了AX值,而AX又可以影响EAX整体。而AH,AL寄存器和AX之间的关系也是如此。

 

posted @ 2016-04-13 17:48  Atlas_wu  阅读(2478)  评论(0编辑  收藏  举报