【汇编基础】CPU寄存器和内存的坦诚相见!!!

       话说有辣么一丢丢玩过电脑的人应该都知道电脑上面打开程序是要运行内存的,每当内存不足的时候电脑就甩一个窗口提示你~~

                                                        【汇编基础】CPU寄存器和内存的坦诚相见!!!

                                                然鹅!!!   

                                         【汇编基础】CPU寄存器和内存的坦诚相见!!!

               你真的清楚平常挂在口边的GB、MB、KB是什么意思吗?

                                                        【汇编基础】CPU寄存器和内存的坦诚相见!!!

        不知道是吧?!(知道的大神们配合下我好吗?!不然我怎么演下去!)

                           那就对了,我们来聊聊CPU中的储存器和内存~~ 

                           为什么要聊这个?因为我只会这点东西呀

           注意:我将要说的不是下载游戏的那种喔,是↓↓↓↓↓↓↓↓↓↓↓运行内存

                                                     【汇编基础】CPU寄存器和内存的坦诚相见!!!

                                                    然后我们来尬聊

                                                           来尬聊

                                                             尬聊

                                                               聊

       首先我们要知道计算机存放数据的地方除了CPU里面的寄存器就是内存

                  【汇编基础】CPU寄存器和内存的坦诚相见!!!CPU               内存→ 【汇编基础】CPU寄存器和内存的坦诚相见!!!

☆★☆★☆为了说明方便我用32、16、8位的寄存器来讲解~~☆★☆★☆

                    通用的32位寄存器中常用的有8个,分别是以下8个

                             【汇编基础】CPU寄存器和内存的坦诚相见!!!

                               ↓↓↓↓↓↓↓↓以下是16位的 ↓↓↓↓↓↓↓↓

                                                              【汇编基础】CPU寄存器和内存的坦诚相见!!!

                               ↓↓↓↓↓↓↓↓以下是8位的 ↓↓↓↓↓↓↓↓

                                       【汇编基础】CPU寄存器和内存的坦诚相见!!!

                               它们三个之间有什么关系呢???

      它们三个并不是三个独立的寄存器,而是互相嵌套的!!!!

                                                   如下

       由于32位的寄存器可以分成两个16位的寄存器16位的寄存器又可以分为两个8位的寄存器,所以可以在的32位寄存器中间分开成两部分,分别是0~15和16~32,16位寄存器中间分开成两部分,分别是0~7和8~15,8位寄存器也是如此照搬分成0~7和8~15.

【汇编基础】CPU寄存器和内存的坦诚相见!!!

       我们把32位寄存器(图下)这一块用来保存数据的地方称之为EAX寄存器,由于它一分为二了,所以把右边表示为低位部分(浅粉色)的区域称之为AX寄存器

    so:一整块我们称之为EAX寄存器,右边低位部分我们称之为AX寄存器 

                     【汇编基础】CPU寄存器和内存的坦诚相见!!!  

       而16位寄存器一分为二之后,把它的左边部分即代表高位,右边部分即代表低位,所以阔以表示成图下这个样子↓↓↓↓↓↓↓

                         【汇编基础】CPU寄存器和内存的坦诚相见!!!

 ↓↓所以呀,不难看出,其实三个寄存器的关系就是像下面酱子的↓↓

【汇编基础】CPU寄存器和内存的坦诚相见!!!

                                         其他的就以此类啦~~

                                                   不懂??

                                                                                         【汇编基础】CPU寄存器和内存的坦诚相见!!!

                                              OllyDbg启动!!

【汇编基础】CPU寄存器和内存的坦诚相见!!!

                   看着这个扎堆扎堆的数据我的脑壳就duangduang疼

我们密切关注右边那个框,可以看到最上面就是我们上面说过的8个寄存 器

                                                                【汇编基础】CPU寄存器和内存的坦诚相见!!!

                      然后我现在用一个例子来让你印象更加深刻

我们拿EAX寄存器来进行试验,我们看到现在寄存器里保存了一个数据7687342B

                                                                                   【汇编基础】CPU寄存器和内存的坦诚相见!!!                     

然后我们输入以下代码

  【汇编基础】CPU寄存器和内存的坦诚相见!!!

 

             |    这段代码具体是这样的    |

1.把0x00000000这个数据保存到EAX寄存器里面

2.把0xAAAA这个数据保存到AX寄存器里面

3.把0xBB这个数据保存到AH寄存器里面

4.把0xCC这个数据保存到AL寄存器里面

 

————————以下是代码执行结果——————————

                                            Step1:【汇编基础】CPU寄存器和内存的坦诚相见!!!

                                            Step2:【汇编基础】CPU寄存器和内存的坦诚相见!!!

                                            Step3:【汇编基础】CPU寄存器和内存的坦诚相见!!!

                                            Step4:【汇编基础】CPU寄存器和内存的坦诚相见!!!

———————————————————————————————

                              em......不懂的话就看多几次吧>^<

                                     |    下面我说下内存    |

       其实只要理解了寄存器,内存是很容易理解的,只是内存的容量比寄存器大很多多多多多多多多,所以不能给每块位置上一个专属于自己的名字,所以便用了编号来代替名字,而每个编号就是代表这块位置的地址

       比如有一块32位的内存,那么它的编号可能就是这样的

                       【汇编基础】CPU寄存器和内存的坦诚相见!!!

       而每个编号里面可以存1byte(字节)=8bit(位)的数据,所以一块32位的内存最大可以存储     

                                                   【汇编基础】CPU寄存器和内存的坦诚相见!!!

                          4294967296byte这么多的数据↑    ↑    ↑    

————————————————————————————

我们知道                1KB=1024byte

                               1MB=1024KB

                               1GB=1024MB

————————————————————————————

所以如果我们要转换成GB的话就要÷1024÷1024÷1024,所得到的结果为

                                               【汇编基础】CPU寄存器和内存的坦诚相见!!!

                                                4GB!!!

所以一个计算机是32位的话,它最大只能识别到4GB大的内存!!!

Tip:32位指的是计算机的寻址编号宽度为32位

 

 

对此,你还有任何疑问吗?有的话......请百度~~~~~

                                         【汇编基础】CPU寄存器和内存的坦诚相见!!!