第11节:通用寄存器(二)
这节课在给大家介绍一下通用寄存器,在上一节课里面讲过32位的CPU它能包含的或它能提供的寄存器有三种类型分别是8位、16位、32位,那么在上一节课介绍了八个32位寄存器。我给大家介绍一下而外的16位寄存器和8位寄存器分为有:
ax cx dx bx sp bp si di (16位寄存器)
ah bh sh dh al cl dl bl (高8位和低8位寄存器)
首先我们用工具olldebug打开一个exe程序,在窗口右侧就是寄存器窗口,在寄存器窗口中我们可以很清楚看到8个32位寄存器,但是我们找不到16位和8位的寄存器,其实16位和8位的寄存器都在32位寄存器中,只是没有显示出来,比如说一个32位寄存器叫做EAX,那么它的16位寄存器叫做AX,那在寄存器中如何可以看的出来呢?比如在寄存器中的EAX的值是0048DF3D,把这个值改成-1(就是FFFFFFFF)。接着在反汇编窗口中输入MOV AX,1,然后按“F8”单步执行,在寄存器的结果看到的值是FFFF0001。这样就可以看出来了在FFFF 后面的0001就是16位寄存器的值。那么高8位和低8位如何理解呢?我们接着看例子:在反汇编窗口中输入MOV AH,2 和 MOV AL,3,在按"F8"单步执行看右侧的寄存器的结果是多少,最后的结果是0203,最终32位的EAX整体的结果是FFFF0203。
以上演示的寄存器是将一个立即数存到一个16位和8位寄存器中,那寄存器和寄存器之间也是可以赋值的我们在来举个例子:首先将右侧的寄存器中的EAX值改成FFFF0203,EBX的值改成“-1”(FFFFFFFF)。然后在反汇编窗口输入MOV BX,AX,按"F8"单步执行,结果BX的值就是0203,最终的32位结果是FFFF0203。以此类推高8位和低8位的结果也是类似的。
这节课在给大家介绍一下通用寄存器,在上一节课里面讲过32位的CPU它能包含的或它能提供的寄存器有三种类型分别是8位、16位、32位,那么在上一节课介绍了八个32位寄存器。我给大家介绍一下而外的16位寄存器和8位寄存器分为有:
ax cx dx bx sp bp si di (16位寄存器)
ah bh sh dh al cl dl bl (高8位和低8位寄存器)
首先我们用工具olldebug打开一个exe程序,在窗口右侧就是寄存器窗口,在寄存器窗口中我们可以很清楚看到8个32位寄存器,但是我们找不到16位和8位的寄存器,其实16位和8位的寄存器都在32位寄存器中,只是没有显示出来,比如说一个32位寄存器叫做EAX,那么它的16位寄存器叫做AX,那在寄存器中如何可以看的出来呢?比如在寄存器中的EAX的值是0048DF3D,把这个值改成-1(就是FFFFFFFF)。接着在反汇编窗口中输入MOV AX,1,然后按“F8”单步执行,在寄存器的结果看到的值是FFFF0001。这样就可以看出来了在FFFF 后面的0001就是16位寄存器的值。那么高8位和低8位如何理解呢?我们接着看例子:在反汇编窗口中输入MOV AH,2 和 MOV AL,3,在按"F8"单步执行看右侧的寄存器的结果是多少,最后的结果是0203,最终32位的EAX整体的结果是FFFF0203。
以上演示的寄存器是将一个立即数存到一个16位和8位寄存器中,那寄存器和寄存器之间也是可以赋值的我们在来举个例子:首先将右侧的寄存器中的EAX值改成FFFF0203,EBX的值改成“-1”(FFFFFFFF)。然后在反汇编窗口输入MOV BX,AX,按"F8"单步执行,结果BX的值就是0203,最终的32位结果是FFFF0203。以此类推高8位和低8位的结果也是类似的。