`
isiqi
  • 浏览: 16561471 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论
阅读更多

典型的处理器的主要任务包括

从内存中获取机器语言指令,译码,执行

根据指令代码管理它自己的寄存器

根据指令或自己的的需要修改内存的内容

响应其他硬件的中断请求

一般说来,处理器拥有对整个系统的所有总线的控制权。对于Intel平台而言,处理器拥有对数据、内存和控制总线的控制权,根据指令控制整个计算机的运行。在以后的章节中,我们还将讨论系统中同时存在多个处理器的情况。

处理器中有一些寄存器,这些寄存器可以保存特定长度的数据。某些寄存器中保存的数据对于系统的运行有特殊的意义。

新的处理器往往拥有更多、具有更大字长的寄存器,提供更灵活的取指、寻址方式。

寄存器

如前所述,处理器中有一些可以保存数据的地方被称作寄存器。

寄存器可以被装入数据,你也可以在不同的寄存器之间移动这些数据,或者做类似的事情。基本上,像四则运算、位运算等这些计算操作,都主要是针对寄存器进行的。

首先让我来介绍一下80386上最常用的4个通用寄存器。先瞧瞧下面的图形,试着理解一下:

上图中,数字表示的是位。我们可以看出,EAX是一个32-bit寄存器。同时,它的低16-bit又可以通过AX这个名字来访问;AX又被分为高、低8bit两部分,分别由AHAL来表示。

对于EAXAXAHAL的改变同时也会影响与被修改的那些寄存器的值。从而事实上只存在一个32-bit的寄存器EAX,而它可以通过4种不同的途径访问。

也许通过名字能够更容易地理解这些寄存器之间的关系。EAX中的E的意思是“扩展的”,整个EAX的意思是扩展的AXX的意思Intel没有明示,我个人认为表示它是一个可变的量 。而AHAL中的HL分别代表高和低

为什么要这么做呢?主要由于历史原因。早期的计算机是8位的,8086是第一个16位处理器,其通用寄存器的名字是AXBX等等;80386Intel推出的第一款IA-32系列处理器,所有的寄存器都被扩充为32位。为了能够兼容以前的16位应用程序,80386不能将这些寄存器依旧命名为AXBX,并且简单地将他们扩充为32位——这将增加处理器在处理指令方面的成本。

Intel微处理器的寄存器列表(在本章先只介绍80386的寄存器,MMX寄存器以及其他新一代处理器的新寄存器将在以后的章节介绍)

通用寄存器

下面介绍通用寄存器及其习惯用法。顾名思义,通用寄存器是那些你可以根据自己的意愿使用的寄存器,修改他们的值通常不会对计算机的运行造成很大的影响。通用寄存器最多的用途是计算。

EAX
32-bit

通用寄存器。相对其他寄存器,在进行运算方面比较常用。在保护模式中,也可以作为内存偏移指针(此时,DS作为段 寄存器或选择器)

EBX
32-bit

通用寄存器。通常作为内存偏移指针使用(相对于EAXECXEDX),DS是默认的段寄存器或选择器。在保护模式中,同样可以起这个作用。

ECX
32-bit

通用寄存器。通常用于特定指令的计数。在保护模式中,也可以作为内存偏移指针(此时,DS作为 寄存器或段选择器)。

EDX
32-bit

通用寄存器。在某些运算中作为EAX的溢出寄存器(例如乘、除)。在保护模式中,也可以作为内存偏移指针(此时,DS作为段 寄存器或选择器)。

上述寄存器同EAX一样包括对应的16-bit8-bit分组。

用作内存指针的特殊寄存器

ESI
32-bit

通常在内存操作指令中作为“源地址指针”使用。当然,ESI可以被装入任意的数值,但通常没有人把它当作通用寄存器来用。DS是默认段寄存器或选择器。

EDI
32-bit

通常在内存操作指令中作为“目的地址指针”使用。当然,EDI也可以被装入任意的数值,但通常没有人把它当作通用寄存器来用。DS是默认段寄存器或选择器。

EBP
32-bit

这也是一个作为指针的寄存器。通常,它被高级语言编译器用以建造‘堆栈帧'来保存函数或过程的局部变量,不过,还是那句话,你可以在其中保存你希望的任何数据。SS是它的默认段寄存器或选择器。

注意,这三个寄存器没有对应的8-bit分组。换言之,你可以通过SIDIBP作为别名访问他们的低16位,却没有办法直接访问他们的低8位。

段寄存器和选择器

实模式下的段寄存器到保护模式下摇身一变就成了选择器。不同的是,实模式下的“段寄存器”是16-bit的,而保护模式下的选择器是32-bit的。

CS

代码段,或代码选择器。同IP寄存器(稍后介绍)一同指向当前正在执行的那个地址。处理器执行时从这个寄存器指向的段(实模式)或内存(保护模式)中获取指令。除了跳转或其他分支指令之外,你无法修改这个寄存器的内容。

DS

数据段,或数据选择器。这个寄存器的低16 bit连同ESI一同指向的指令将要处理的内存。同时,所有的内存操作指令 默认情况下都用它指定操作段(实模式)或内存(作为选择器,在保护模式。这个寄存器可以被装入任意数值,然而在这么做的时候需要小心一些。方法是,首先把数据送给AX,然后再把它从AX传送给DS(当然,也可以通过堆栈来做).

ES

附加段,或附加选择器。这个寄存器的低16 bit连同EDI一同指向的指令将要处理的内存。同样的,这个寄存器可以被装入任意数值,方法和DS类似。

FS

F段或F选择器(推测F可能是Free?)。可以用这个寄存器作为默认段寄存器或选择器的一个替代品。它可以被装入任何数值,方法和DS类似。

GS

G段或G选择器(G的意义和F一样,没有在Intel的文档中解释)。它和FS几乎完全一样。

SS

堆栈段或堆栈选择器。这个寄存器的低16 bit连同ESP一同指向下一次堆栈操作(pushpop)所要使用的堆栈地址。这个寄存器也可以被装入任意数值,你可以通过入栈和出栈操作来给他赋值,不过由于堆栈对于很多操作有很重要的意义,因此,不正确的修改有可能造成对堆栈的破坏。

* 注意 一定不要在初学汇编的阶段把这些寄存器弄混。他们非常重要,而一旦你掌握了他们,你就可以对他们做任意的操作了。段寄存器,或选择器,在没有指定的情况下都是使用默认的那个。这句话在现在看来可能有点稀里糊涂,不过你很快就会在后面知道如何去做。

特殊寄存器(指向到特定段或内存的偏移量)

EIP

这个寄存器非常的重要。这是一个32位宽的寄存器 ,同CS一同指向即将执行的那条指令的地址。不能够直接修改这个寄存器的值,修改它的唯一方法是跳转或分支指令。(CS是默认的段或选择器)

ESP

这个32位寄存器指向堆栈中即将被操作的那个地址。尽管可以修改它的值,然而并不提倡这样做,因为如果你不是非常明白自己在做什么,那么你可能造成堆栈的破坏。对于绝大多数情况而言,这对程序是致命的。(SS是默认的段或选择器)

IP: Instruction Pointer, 指令指针
SP: Stack Pointer,
堆栈指针

好了,上面是最基本的寄存器。下面是一些其他的寄存器,你甚至可能没有听说过它们。(都是32位宽)

CR0, CR2, CR3(控制寄存器)。举一个例子,CR0的作用是切换实模式和保护模式。

还有其他一些寄存器,D0, D1, D2, D3, D6D7(调试寄存器)。他们可以作为调试器的硬件支持来设置条件断点。

TR3, TR4, TR5, TR6 TR? 寄存器(测试寄存器)用于某些条件测试。

最后我们要说的是一个在程序设计中起着非常关键的作用的寄存器:标志寄存器。

本节中部份表格来自David JurgensHelpPC 2.10快速参考手册。在此谨表谢意。

2.2 使用寄存器

在前一节中的x86基本寄存器的介绍,对于一个汇编语言编程人员来说是不可或缺的。现在你知道,寄存器是处理器内部的一些保存数据的存储单元。仅仅了解这些是不足以写出一个可用的汇编语言程序的,但你已经可以大致读懂一般汇编语言程序了(不必惊讶,因为汇编语言的祝记符和英文单词非常接近),因为你已经了解了关于基本寄存器的绝大多数知识。

在正式引入第一个汇编语言程序之前,我粗略地介绍一下汇编语言中不同进制整数的表示方法。如果你不了解十进制以外的其他进制,请把鼠标移动到 这里


  汇编语言中的整数常量表示

十进制整数
这是汇编器默认的数制。直接用我们熟悉的表示方式表示即可。例如,1234表示十进制的1234。不过,如果你指定了使用其他数制,或者有凡事都进行完整定义的小爱好,也可以写成[十进制数]d[十进制数]D的形式。

十六进制数
这是汇编程序中最常用的数制,我个人比较偏爱使用十六进制表示数据,至于为什么,以后我会作说明。十六进制数表示为0[十六进制数]h0[十六进制数]H,其中,如果十六进制数的第一位是数字,则开头的0可以省略。例如,7fffh, 0ffffh,等等。

二进制数
这也是一种常用的数制。二进制数表示为[二进制数]b[二进制数]B。一般程序中用二进制数表示掩码(mask code)等数据非常的直观,但需要些很长的数据(4位二进制数相当于一位十六进制数)。例如,1010110b

八进制数
八进制数现在已经不是很常用了(确实还在用,一个典型的例子是Unix的文件属性)。八进制数的形式是[八进制数]q[八进制数]Q[八进制数]o[八进制数]O。例如,777Q

需要说明的是,这些方法是针对宏汇编器(例如,MASMTASMNASM)说的,调试器默认使用十六进制表示整数,并且不需要特别的声明(例如,在调试器中直接用FFFF表示十进制的65535,用10表示十进制的16)。

现在我们来写一小段汇编程序,修改EAXEBXECXEDX的数值。

我们假定程序执行之前,寄存器中的数值是全0

?

X

H

L

EAX

0000

00

00

EBX

0000

00

00

ECX

0000

00

00

EDX

0000

00

00

正如前面提到的,EAX的高16bit是没有办法直接访问的,而AX对应它的低16bitAHAL分别对应AX的高、低8bit

mov eax, 012345678h
mov ebx, 0abcdeffeh
mov ecx, 1
mov edx, 2

; 012345678h送入eax
;
0abcdeffeh送入ebx
;
000000001h送入ecx
;
000000002h送入edx

则执行上述程序段之后,寄存器的内容变为:

?

X

H

text-ind

分享到:
评论

相关推荐

    组装电脑之处理器CPU参数的认识.docx

    【组装电脑之处理器CPU参数的认识】 在组装电脑时,了解处理器CPU的参数至关重要,因为这些参数决定了处理器的性能和电脑的整体运行效率。以下是对几个关键CPU参数的详细解释: 1. **主频**: 主频是衡量CPU运算...

    CPU+处理器篇.pdf

    本文通过对CPU的类型、结构和特点的详细介绍,帮助读者更好地理解和认识CPU,特别是Intel的Pentium 4系列处理器和AMD的Athlon处理器。 知识点: 1. CPU的类型:文中介绍了Pentium 4系列处理器的类型,包括Pentium ...

    现代处理器设计 超标量处理器基础 PDF

    在本书中使用了一些现实世界的超标量处理器作为例子,以便于读者加深对超标量处理器的理解和认识。 《超标量处理器设计》可用作高等院校电子及计算机专业研究生和高年级本科生教材,也可供自学者阅读。

    教你最基础的电脑知识 认识CPU之五 Cyrix系列处理器.pdf

    教你最基础的电脑知识 认识CPU之五 Cyrix系列处理器.pdf

    构建32位单周期CPU处理器【100011555】

    本次大作业的内容是利用Logisim平台和Mars仿真器构建32位单周期CPU处理器。从分析搭建总体架构,到分布设计各个模块,再到将各个模块进行连接,从而形成完整的数据通路,一步步自己搭建CPU的过程加深了我对每个指令...

    认识CPU的接口.pdf

    认识 CPU 的接口 CPU(Central Processing Unit,中央处理单元)是计算机系统的核心组件,负责执行指令、数学和逻辑运算、数据存储和传输,以及输入和输出控制。CPU 的接口是指 CPU 与主板之间的连接方式。 一、...

    Intel的融合术 GPU_CPU混合处理器前瞻.pdf

    Intel认识到CPU在灵活性上优于GPU,但在浮点运算能力和并行处理上存在不足,而这正是图形处理的关键。为解决这一问题,Intel提出了一种称为“顺序执行多内核处理器”的概念。 顺序执行是一种不同于当前桌面CPU普遍...

    AMD CPU OVERCLOCK MANUAL AMD 处理器完全超频手册.pdf

    本文档《AMD CPU OVERCLOCK MANUAL》(AMD处理器完全超频手册)对AMD处理器的超频技术进行了全面的介绍,旨在为超频爱好者提供详尽的参考和指导。 首先,我们从AMD处理器超频的基础知识开始。在超频的世界里,有多...

    高通:CPU不是衡量智能手机处理器好坏的唯一标准.pdf

    在当今智能手机市场中,处理器性能一直是消费者和制造商关注的焦点。高通,作为智能手机...通过这篇文章,我们更加明确地认识到,衡量智能手机处理器好坏的标准远不止于CPU的核心数量,而应该是综合性能的全面评估。

    微软AMD双核处理器专用补丁

    尽管补丁的存在能够解决特定问题,提升游戏性能,但我们必须认识到,并不是所有的游戏都需要这样的补丁。有些游戏已经在设计时充分考虑了多核处理器的优化,因此使用这些补丁可能并不会带来额外的性能提升。此外,...

    iPad苹果A4处理器揭秘:ARM CPU GPU.pdf

    此外,A4处理器搭载的CPU与GPU集成在单一芯片之中,这不仅减少了占用空间,也降低了生产成本,同时提供了出色的图形处理能力。 在技术规格之外,文章通过与其他处理器的对比,进一步揭示了A4处理器的性能优势。以...

    CPU真_假货辨别手册——处理器造假手段.pdf

    《CPU真伪辨别手册——处理器造假手段》 ...同时,对于CPU的来源和保修政策要有明确的认识,以免落入假冒产品的陷阱。只有这样,才能确保购买到真正品质可靠的处理器,保障计算机系统的稳定运行。

    cpu的发展史,认识cpu

    总的来说,CPU的发展历程是一部科技进步的缩影,从最初的简单计算器芯片到现在的高性能多核处理器,其背后的技术革新和市场竞争共同推动了个人电脑性能的飞速提升。了解CPU的工作原理和性能指标,对于选购和使用电脑...

    CPU超频已落伍 处理器进入“超核”时代.pdf

    从早期的CPU超频时代,用户通过提高处理器的工作频率来获得额外性能,到现在的“超核”时代,处理器性能的提升不再仅仅依赖于单一的频率提升。本文将探讨“超核”这一概念的由来、工作原理以及其对处理器性能的影响...

    把处理器看得通通透透全面了解CPU就这三招.pdf

    本文将通过三个简单易行的方法来帮助你深入认识CPU。 首先,识别型号是理解CPU基本信息的关键。不同型号的CPU在外观和性能上都有所差异。例如,Intel Pentium III系列处理器就有Katmai、Coppermine和Tualatin等不同...

    认识CPU之一 CPU的一些重要指标.pdf

    线程是操作系统调度的基本单位,超线程技术让单个物理核心模拟出两个逻辑核心,提高处理器利用率。 2. **频率** 频率通常以GHz(吉赫兹)为单位,表示CPU每秒能执行的指令周期数。主频越高,理论上CPU执行速度越快...

    从CPU的技术参数认识CPU.pdf

    很多人以为认为 CPU 的主频指的是 CPU 运行的速度,实际上这个认识是很片面的。CPU 的主频表示在 CPU 内数字脉冲信号震荡的速度,而 CPU 实际的运算能力是没有直接关系的。当然,主频和实际的运算速度是有关的,但是...

    5122622023002林晶晶 实验1 认识CPU.doc

    ### 实验一:认识CPU #### 一、目前市场上主流的CPU品牌及其型号 目前市场上主流的CPU品牌主要有三大类: 1. **英特尔(Intel)**: - **Core i3**系列:适合日常办公和轻度游戏。 - **Core i5**系列:适合大多数...

    计算机操作系统处理器调度实验

    通过实际操作,学生能够直观地理解处理器调度对系统性能的影响,如周转时间、响应时间和CPU利用率等。这有助于他们掌握操作系统的核心概念,为后续深入学习操作系统原理和技术打下坚实基础。 总结来说,这个实验...

Global site tag (gtag.js) - Google Analytics