day11.通用寄存器(二)

本文详细介绍了32位CPU中的通用寄存器,包括32位、16位及8位寄存器的具体使用方法,并通过OLLDBG工具进行实操演示,帮助读者深入理解寄存器的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第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位的结果也是类似的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随行之旅

python国产化自动化

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值