C/C++ 您当前所在位置:首页 > C/C++ > 常用8个32位通用寄存器
常用8个32位通用寄存器
简介 在CPU在底层是如何计算加法的一文中说了CPU计算后会将中间结果放在容器里,计算机里面有很多的这种容器,这个容器可能是内存提供,也可能是CUP提供,总之就会存在某个地方。CPU提供的容器很少,内存则多。它们在底层是没有什么区别的,都是存0和1,也都有宽度。为什么CPU提供的容器少,因为CPU贵啊,而内存则相对便宜很多。CPU中的容器速度非常快,缺点是少,而内存缺点则是慢,这个慢也是相对CPU来说,优点是内存提供的更多。下面说一下CPU中常用到的8个32位的通用寄存器。
在CPU在底层是如何计算加法的一文中说了CPU计算后会将中间结果放在容器里,计算机里面有很多的这种容器,这个容器可能是内存提供,也可能是CUP提供,总之就会存在某个地方。CPU提供的容器很少,内存则多。它们在底层是没有什么区别的,都是存0和1,也都有宽度。为什么CPU提供的容器少,因为CPU贵啊,而内存则相对便宜很多。CPU中的容器速度非常快,缺点是少,而内存缺点则是慢,这个慢也是相对CPU来说,优点是内存提供的更多。下面说一下CPU中常用到的8个32位的通用寄存器。
1、EAX
编号:0
存储数据范围:0x00000000 - 0xFFFFFFFF
用途:累加器
2、ECX
编号:1
存储数据范围:0x00000000 - 0xFFFFFFFF
用途:计数
3、EDX
编号:2
存储数据范围:0x00000000 - 0xFFFFFFFF
用途:I/O指针
4、EBX
编号:3
存储数据范围:0x00000000 - 0xFFFFFFFF
用途:DS段的数据指针
5、ESP
编号:4
存储数据范围:0x00000000 - 0xFFFFFFFF
用途:堆栈指针
6、EBP
编号:5
存储数据范围:0x00000000 - 0xFFFFFFFF
用途:SS段的数据指针
7、ESI
编号:6
存储数据范围:0x00000000 - 0xFFFFFFFF
用途:字符串操作的源指针,SS段的数据指针
8、EDI
编号:7
存储数据范围:0x00000000 - 0xFFFFFFFF
用途:字符串操作的目标指针,ES段的数据指针
注意上面的用途是CPU在设计的时候建议用途,并不一定要这样使用。
最好将这8个32位通用寄存器背熟EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI以及它们对应的编号。
再简单介绍一下16位和8位寄存器
寄存器 | 编号(二进制) | 编号(十进制) | ||
---|---|---|---|---|
32位 | 16位 | 8位 | ||
EAX | AX | AL | 000 | 0 |
ECX | CX | CL | 001 | 1 |
EDX | DX | DL | 010 | 2 |
EBX | BX | BL | 011 | 3 |
ESP | SP | AH | 100 | 4 |
EBP | BP | CH | 101 | 5 |
ESI | DI | DH | 110 | 6 |
EDI | SI | BH | 111 | 7 |
上面的表格看出什么来了吗?这几个32位寄存器就是由16位扩展而来,去掉前面的E就是16位。16位就是从32位中间切一刀,而8位就是从16位中间再切一刀。8位中有高8位和低8位,以EAX为例,高8位就是AH,低8位就是AL,ECX、EDX和这一样。如果我们在汇编中使用mov ax,0x1指令,则会改变后4位的值(注意是16进制),汇编中使用move ah,0x1指令,则会改变第三和第四位的值(从右往左数)。最后再说一次这些名字和顺序最好记住它。
上一篇: 关闭网站响应头中PHP版本信息
下一篇: 计算机能识别的寻找内存地址的五种方式
猜你喜欢
点击排行
热门推荐
随机展示
站点信息
- 上线时间:2020年05月30日
- 网站程序:自建框架
- 博客模板:今夕何夕
- 文章统计:43篇文章
- 评论统计:0条评论
- 留言统计:1条留言
- 统计数据:百度统计