当前位置: 首页 > news >正文

做网站外包最牛的公司南京网燃网络科技有限公司

做网站外包最牛的公司,南京网燃网络科技有限公司,网站服务器搭建教程,骨干专业群建设任务书网站学习交流加 个人qq#xff1a; 1126137994个人微信#xff1a; liu1126137994学习交流资源分享qq群#xff1a; 962535112 我们已经知道#xff0c;处理器是一台电子计算机的核心#xff0c;它会在振荡器脉冲的激励下#xff0c;从内存中获取指令#xff0c;并发起一系列… 学习交流加 个人qq 1126137994个人微信 liu1126137994学习交流资源分享qq群 962535112 我们已经知道处理器是一台电子计算机的核心它会在振荡器脉冲的激励下从内存中获取指令并发起一系列由该指令所定义的操作。当这些操作结束之后它接着再取下一条指令。通常情况下这个过程是连续不断、循环往复的。 文章目录1、寄存器和算数逻辑部件2、内存储器3、指令和指令集4、Intel 8086处理器4.1、 8086的通用寄存器4.2、 程序的重定位问题4.3、 内存分段机制4.4 、8086的内存分段机制4.5 、8086 处理器内部组成框图5、 总结1、寄存器和算数逻辑部件 电子计算机能能做很多事情。计算天气预报看电影听音乐上网等实际上都是以数学计算为基础。它之所以能够计算是因为它特殊的设计。想要了解计算机为什么能够自动计算请去阅读书籍《穿越计算机的迷雾》。本片文章主要讲解处理器的简单功能。 如图是一个处理器 在处理器的周围有大量的引脚这些引脚可以接受从外面来的电信号或者向外发送电信号与外设进行信号的交互。有很多引脚是复用的假如现在我们要进行加法运算我们就需要重复使用某一些引脚来依次将加数与被加数送入。一旦被加数被送入处理器代表这个二进制数字的一组电信号就会出现在与该引脚相连的内部线路上我们称这个内部线路为内部总线。这是一组高低电平的组合代表着二进制数中的每一位。当被加数被送进来了接下来就要将加数送进来但是此时内部总线上有被加数所以处理器内部需要有一个电路来将被加数“锁存”。这个将被加数锁存的电路就是寄存器。它是一个存储器件。 同样加数也要锁存进另一个寄存器。如图中RA与RB分别锁存的是被加数与加数。此后被加数与加数将不再受处理器的内部总线的影响。寄存器是双向器件它会将它锁存的数在另一端产生一模一样的电信号注意此时寄存器中依然锁存着之前的电信号它只是在另一端产生一个一模一样的电信号传送给相应的算数逻辑部件ALU进行计算。算数逻辑部件ALU计算出结果后,将结果送出给另一个寄存器RC锁存稍后再将RC中的内容通过内部总线送到处理器外部或者再次送回RA RB寄存器进行其他计算。 那么处理器是如何知道什么时候该干什么各个部件在各个时间点该干什么以及哪些部件在哪些时候使用内部总线以避免总线冲突呢这些实际上都是由处理器内部的一个控制器控制的图中没有画出。 处理器总是繁忙的所有数据都只能在寄存器中寄存一会就必须被送往别处。早期的寄存器只能存储4比特、8比特或者16比特分别叫做4位寄存器8位寄存器和16位寄存器。现在的处理器大多是32位和64位的。 2、内存储器 上一节我们知道处理器的计算过程实际上是借助于寄存器和算数逻辑部件进行的。那么计算的数据是从哪里来的呢它是从一个可以保存很多数字的电路叫做存储器。存储器的种类很多我们常见的U盘硬盘磁盘内存条甚至寄存器等都是存储器。 我们这里主要说内存条。由于它通常是和处理器直接相连的所以叫内存储器或者主存储器。又或者内存或者主存。和寄存器不同内存用于保存更多的比特。对应用的最多的个人计算机来说内存是按字节来组织的单次访问的最小单位是1字节这是最基本的存储单元。如下图所示是一个内存和内存访问示意图 内存中的每一个字节都对应着一个地址。从0地址开始由于上面的内存是65536字节所以该内存的最后一个字节是FFFF都是用的十六进制表示的。为了访问一个内存处理器需要给出一个地址。同时访问内存是什么方式读方式或者写方式所以处理器需要有一个读写控制。如果是写数据处理器还需要有一个数据传输的控制。最后处理器单次访问内存时是以字节为单位访问还是以字为单位访问等需要有一个字长控制来告知。 3、指令和指令集 从一开始设计处理器就是想让它自动工作另外还需要提供一种机制来允许程序员决定进行何种工作。处理器的设计者用某些数来表示该处理器该做什么这些数我们称为指令或者叫机器指令。 下面给个实际例子来分析指令在内存中的布局 假设现在我们的处理器是从内存的0000地址开始取指令实际上肯定不是从0地址开始这里只是假设。第一条指令B8 5D 00该指令的意思是将立即数005D传送到RA寄存器它具有一个字节的操作码B8。由此我们可以看出简单的一个B8 5D 00指令是一个传送指令且该指令将两个字节005D传送到RA寄存器并且由于下一条指令的地址是在0003字节处所以该指令肯定还知道它自己是一条3字节指令以便下一次处理器可以直接去到0003字节处去取指令。 对于一些复杂的指令一个字节的操作码肯定不够用所以第二条指令8B 1E 3F 00的指令操作码是两字节8B 1E。 同时我们注意到上述前两条指令中第一条指令是将一个数005D直接传送到寄存器第二条指令是需要从另外一个地址003F先取出数据然后再将数据传送到寄存器。第一种的操作数005D我们称为立即数表示可以立即将数传送而不需要再去另外一个地址取数据。 由以上分析我们很容易知道上述的几条指令首先将两个数放到寄存器中去运算然后运算结果放到其中一个寄存器中最终还需要将运算结果再传回到内存中以便该结果作为其他用处时处理器好可以从内存中得到计算结果。最后F4指令停机。 指令和非指令的二进制数据是一模一样的在组成内存的电路中都是一些高低电平的组合。因为处理器是按顺序取指令并加以执行的这样的话如果指令和数据存放在一起处理器很容易将数据的二进制当成指令从而导致错误。所以我们需要将指令与数据分开存放。分别存放在不同的区域。存放指令的区域叫做代码区存放数据的区域叫做数据区这就是为什么进程的虚拟地址空间中代码和数据区分开的原因。 一个处理器能够识别的指令的集合称为指令集。 4、Intel 8086处理器 要想学好编程就必须要懂底层原理。但是想要彻底学好底层就要把汇编学好。想要学好汇编不得不先学好针对8086的汇编技术。 4.1、 8086的通用寄存器 8086处理器内部有8个16位寄存器。分别被命名为AX,BX,CX,DX,SI,DI,BP,SP。通用的意思是他们中大部分可以根据需要用于多种目的。他们的用处将在后面的文章逐渐给出。 下图是几个寄存器 可以看到有介个寄存器AX,BX,CX,DX又可以分为两个8位的寄存器来使用。在后面文章中我们会看到具体的应用。 4.2、 程序的重定位问题 我们知道处理器是自动取指令和执行指令的只要每条指令都正确无误它就能准确的知道下一条指令的地址。所以指令必须集中在一起形成一个段叫做代码段。 为了做某件事而编写的指令形成我们所知道的程序。程序中肯定需要操作大量的数据这大量的数据也应该集中在一起位于内存中的某个地方叫做数据段。 段在内存中的位置并不重要因为处理器是可控的我们可以让处理器在内存中的任何一个位置开始取指令并加以执行。 下面看一个图示 假设上面是一个程序片段在内存中的位置相关指令的用处已经在图中表明。这里不再赘述。但是现在有一个问题就是我们写的程序不管是C语言还是C语言或者Java语言最终要运行在内存中的位置是无法确定的。因为你想一想本身你的电脑中有各种程序在跑了有qq程序在跑微信程序在跑或者还有微博等在跑他们可能把你的内存都占完了当你想运行你写的程序的时候你的程序本想从0100H处开始存放代码段但是可能这个时候0100H处有其他程序的代码或者指令在运行此时你的程序只能去另一个位置存放你的代码和数据假设你的代码下一次运行的时候代码段和数据段在如下位置 此时你的程序的代数据段在内存的位置为1000H处但是你会发现你的代码段的第一条指令还是将地址单元0100H处的内容传送到AX寄存器中。但是此时0100H处的内容并不是我们想要的内容。 产生这种情况的原因就是我们在程序中使用的是绝对内存地址。这样的程序是无法重新定位的。所以我们需要使用另一种方式访问内存相对地址或者叫做逻辑地址。在任何时候程序的重定位都是非常棘手的事情。在8086处理器中这个问题得到解决。它使用了分段机制。 4.3、 内存分段机制 在内存分段中段是很多个连续的字节组成的。如图 上图有一个7个字节的段。段的起始地址为A532。那么段中的地址从第一个字节开始他们的地址此时就是段内的偏移地址000000010002…。而他们的实际的物理地址又恰好等于段地址加上段内的偏移地址。可以用“段地址偏移地址”来表示段中的每一个字节的地址。 为了在硬件一级提供对“段地址偏移地址”的支持。处理器至少要提供两个段寄存器分别是代码段寄存器CS数据段寄存器DS。 对代码段CS内容的改变将导致处理器从新的代码段开始执行。当然在访问数据之前也是必须要提前设置好数据段寄存器DS的使DS之指向数据段。 很重要的一点是当处理器取指令执行指令的时候它是把指令中指定的内存地址看成是段内偏移地址的。而不是内存的物理地址。那么当处理器遇到一条访问内存的指令时它就会将DS中的数据段起始地址加上指令中提供的段内偏移地址得到访问内存所需要的物理地址的。 如下图所示 代码段地址为1020H数据段地址为1000H在代码段中有一条指令A1 02 00,它的功能是将地址0002H处的的一个字传送到寄存器AX。在这里处理器将0002H看成是段内偏移地址段地址在DS中应该在执行这条指令之前就已经用别的地址将数据段地址传送到DS寄存器中了。当处理器执行到指令A1 02 00时处理器会将DS中的内容和指令中指定的便宜地址相加得到内存中的一个物理地址这个物理地址就是处理器要去访问的内存地址就可以从该地址获取一个字00A0H。 如果下一次执行该程序代码段和数据段发生变化只需要将程序的代码段地址和数据段地址分别传送到CS和DS就可以正常的执行程序了。 4.4 、8086的内存分段机制 前面讲了如何从逻辑地址转换到物理地址以使得程序的运行和它在内存中的位置是无关的。上述策略在很多处理器上应用得到了支持。但是在8086处理器上由于8086处理器是16位处理器如果按照正常计算给它提供16根地址线的话那么8086处理器就只能用于寻址最多64KB的内存空间65536字节2的15次方1。在当时的年代64KB的内存还是不够的。所以8086处理器就将16根地址线扩展到20根地址线。从而使得可寻址的空间变为1M16*64KB。 但是有一个问题就是16位的段地址加上16位的段内偏移地址还是16位的并不是20位的。所以有一个解决办法就是在计算内存的物理地址时先将段地址先左移4位然后加上段内偏移地址这样就可以得到20位的物理地址就可以将整个1M的地址空间表示完全。 8086在进行分段时并不是每一个地址都可以作为段地址地址必须是16的倍数才能作为段地址。 如下图是其中的一种情况我们从0地址开始分段每段16字节从任何地址只要这个地址是16的倍数都可以作为段地址每一个段内最低有16字节可以分为65536个段的内存最高有65536可以分为16个段个字节的内存 4.5 、8086 处理器内部组成框图 最后我们再来看一下8086处理器内部组成框图 上图中我们知道8086内部有8个16位通用寄存器分别为AX,BX,CX,DX,SI,DI,BP,SP。ALU是算数逻辑部件用于算数逻辑运算或者数据传送。标志寄存器是用于控制各种依赖于标志位的标志来进行相应的指令执行的这个可以等到以后的文章中进行详细的说明目前不需要理解。处理器可以自动执行依赖于控制器的控制。 指令队列缓冲器又名指令预取队列。什么意思呢就是当你的CPU在忙于做其他事情一般是指执行那些不需要去内存中取的指令而并没有去内存中取指令执行时此时指令队列缓冲器指令预取队列就会去内存中取出6个字节的指令放到指令队列缓冲器那么当CPU该执行内存中的指令时它就会就近向指令队列缓冲器中去取指令这样的话就会比去内存中取指令要快很多毕竟内存还是通过外部总线与内存条相连接的。 CS是代码段寄存器。DS是数据段寄存器。SS是栈段寄存器很重要以后会讲。ES是额外的段寄存器它的用处相当于补充段寄存器当你的DS在使用时但是你还要访问另一个数据段那么此时就可以使用ES寄存器后面的文章中我们就用ES寄存器指向显卡的内存区域用来寻址显存从而控制显卡。IP寄存器是存代码段的段内偏移地址的。那么指令的地址此时就可以用“CS:IP”来表示。 上面的与总线控制逻辑相连的16位总线实际上是16位的数据总线与20位的地址总线的低16位复用的。20位代表的是20位的地址总线是当然低16位是与数据总线复用的。 5、 总结 想要写出优秀的应用程序就必须对系统编程有深入的理解。想要对系统编程有一定的理解就必须理解操作系统原理。我选择从X86汇编开始学习逐步深入理解操作系统与计算机系统之间的关系。 本片文章可以让我们学会 寄存器与算数逻辑部件的简单关系内存储器指令和指令集程序的重定位问题处理器与内存之间的关系内存分段机制 学习探讨加 qq1126137994 微信liu1126137994
http://www.pierceye.com/news/20284/

相关文章:

  • 中国建设银行官网站额度申请搭建平台高质量
  • 深圳网站建设 卓越创php建站系统
  • 网站的特点建设电商网站的总结
  • ota平台网站建设自己做卖东西网站
  • 常州外贸网站建设公司成都最好的seo外包
  • 事件网站推广视频播放网站模板
  • 网站注销申请书出租房千万不要托管
  • 网站关键词在哪设置建设工程质量安全监督站官方网站
  • 网站开发与维护 专业亚马逊跨境电商开店
  • 上海网站建设 微信开发公司好的h5网站
  • 自己可以建设网站卖东西吗wordpress国内几大主题
  • 做微网站需要什么哪些网站需要做分享按钮
  • 建设网站有什么特点特色WordPress pdo mysql
  • 东城响应式网站建设用wordpress制作表单
  • 西安昆奇网站建设深圳网站优化
  • 肥西县建设发展局网站wordpress 外链裁剪
  • 建站新体验桐乡做网站
  • 深圳苏州旅游网站建设服务上海建设工程质监局网站
  • 多媒体资源库网站建设网站动态背景欣赏
  • 公司网站建设维护合同制作宣传片的步骤
  • 成都网站快速排名提升做兼职设计去哪个网站
  • 廊坊网站建设案例河北建设工程信息网可上中项网
  • 松江品划做网站公司网站仿制公司
  • 网站建设朋友圈广告蒙特网站建设公司
  • 江苏省工程建设标准站网站wordpress怎么安装多说
  • 手机网站微信代码广州市白云区建设局 网站
  • 阿里云的网站空间wordpress怎么转移
  • 科技类公司网站设计网页设计实验报告精品课程网站
  • 正常成都建设网站临沂做网站好的公司
  • 大连科技官方网站微信小程序开发价格