卖汽车的网站怎么做的吗,官方网站建设案例,做网站是不是很简单,电商运营基本常识通用寄存器
什么是寄存器呢#xff1f;
计算机在三个地方可以存储数据#xff0c;第一个是把数据存到CPU中#xff0c;第二个把数据存到内存中#xff0c;第三个把数据存到硬盘上。
那这个所谓的寄存器#xff0c;就是CPU中用来存储数据的地方。那这个寄存器有多大呢
计算机在三个地方可以存储数据第一个是把数据存到CPU中第二个把数据存到内存中第三个把数据存到硬盘上。
那这个所谓的寄存器就是CPU中用来存储数据的地方。那这个寄存器有多大呢那取决于你CPU的位数比如说如果你是一个32位的CPU。那它这个CPU里边能够提供的这个容器就会有三种类型。分别是8位的16位的和32位的。那如果这个CPU呢是64位的CPU那它能提供的这种容器也就是说能提供的这种寄存器就会有四种类型。分别是8位的16位的32位的和64位的。那么大家可能感兴趣想知道自己当前的CPU是32位的还是64位的其实你都可以不用查了。因为只要你从零五年以后买的机器几乎都是64位的
大家现在不太可能用那么老的机器了。那这就意味着我们当前的计算机其实都是支持64位的。
为什么要学32位的汇编
那么现在CPU 64位已经普及了为什么还要学32位的CPU还要学32位的汇编呢其实大家可能对这个硬件的发展历史不是特别的了解因为我们现在用的这个32、64位的CPU都是从32位的CPU拓展过来的也就是说从32位到64位它并没有整体结构上的变化只是在原来的基础上增加了一些新的寄存器汇编指令都是一样的。
那么也就是说如果没有32位的汇编的底子想直接学64位的汇编的话学起来是非常吃力的。那换句话说如果你掌握了32位的汇编想看64位的汇编可以直接看懂。只是查一查资料了解一下新增的那些寄存器而已。所以呢这也是为什么我们无论是学CPU还是学操作系统还是学应用程序都是要先学32位的。
还有一点虽然现在我们的CPU和操作系统都支持64位了但是现在我们运行的程序大多数仍然是32位的程序。这也就意味着我们不可能彻底把32位抛弃直接进入64位的这个时代。所以呢我们的汇编还是要从32位开始学。
寄存器是什么呢接下来主要给大家介绍介绍8个通用寄存器。大家知道32位的CPU它能提供的寄存器就会有三种类型分别是8位、16位、32位的那我给大家介绍的就是32位的寄存器而且是通用寄存器。
为什么叫通用寄存器呢
因为在32位的CPU里边呢它的寄存器有很多种。其它的寄存器都有自己特殊的用途比如说eip寄存器它的宽度也是32位但是这个寄存器里边存储的值是CPU下一次要执行的指令的地址不能用作其他用途。所以它不能叫通用寄存器。那么我给大家介绍的寄存器是你想存什么就存什么你需要它存什么它就存什么所以呢称为通用寄存器。 通用寄存器一共有8个分别是eax、ecx、edx、ebx、esp、edp、esi、edi。这8个通用寄存器都是32位的那这就意味着我们向这些寄存器里边的任何一个存储数据不能超过32个0和1如果超过的话多余的部分就会被丢弃。
如何使用32位的通用寄存器
mov指令
汇编是什么汇编简单点说其实大家可以理解成就是寄存器跟寄存器或者寄存器跟内存之间数据的来回流动汇编要做的事情就是这个那也就是说如果你想学好汇编你只要记住几个关键词就可以了。寄存器、内存、指令。
我们就围绕这三点就可以把汇编学好而且我个人感觉汇编是所有语言里边最简单的语言。因为它很好理解很好做实验。
那我们简单介绍一下mov指令mov指令move指令是用来移动数据的。 mov指令的作用
把一个立即数就是一个普通的数存到寄存器里。把其他寄存器的值存到另外的寄存器
在ollyICE里演示一下mov指令的用法
首先我们打开ollyICE动态调试软件可以看到如下界面 将HelloWorld.exe拖入窗口后可以看到如下界面 比如说我要向eax这个寄存器里边存储一个数那就可以写mov eax,1。然后逗号后边跟一个值。 比如说我还想往ecx这个寄存器里边也存一个值2写mov ecx,2
那同样的道理除了可以把立即数存到寄存器里以外还可以把其他寄存器的值存到另外的寄存器里比如说我现在我可以这么写move eax,ebx意思就是把寄存器ebx的值存到寄存器eax中。 这个位置这意味当前这个程序中CPU将要执行位置004011A0了。那当我们想执行这行指令的时候呢我们可以按一下快捷键F8。 mov eax,1执行完毕了已经把1这个立即数写到这个寄存器eax里去了。 同样的道理我再按一下F8就把2这个值存到这个寄存器ecx里了。 同样的道理我再按一下F8就把寄存器ebx的值存到这个寄存器eax里了。