当前位置:
文档之家› 汇编语言程序设计(清华大学沈美明)第2章课件及答案
汇编语言程序设计(清华大学沈美明)第2章课件及答案
以双字的形式被访问 或对其低16位以字的形式被访问,其
中 EAX 、 EBX 、 ECX 和 EDX 的低 16 位还可以字节的形式 被访问,像上面EAX所说明的。当这些寄存器以字或字节 形式被访问时,不被访问的其它部分不受影响,如访问 AX时,EAX的高16位是不受影响。
21
此外,这8个通用寄存器还可用于其它目的。在
23
8086 标志寄存器 ( FLAGS / PSW )
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OF DF IF TF SF ZF
AF
Байду номын сангаас
PF
CF
9个bit
条件码标志:
OF SF ZF CF 溢出标志 符号标志 零标志 进位标志 奇偶标志 1/0 有/无 1/0 负/正 1/0 是/否 1/0 是/否 1/0 偶/奇
11
12
13
2.2.1 控制器的功能及组成
CPU的控制器控制计算机中各部件协调工作,是计算机的神 经中枢和指挥中心,计算机在它的控制下可以有条不紊的工作, 自动执行程序。
•控制器的具体功能:
依次从存储器中取出指令,翻译指令、分析指令、并向执行 该操作的相关部件发出控制信号,指挥计算机各部件协同工作。
运算器
实际上是一些专用寄 存器组,控制整个计 算机所有部件的工作 执行算术运算 和逻辑运算
计算机中最主要的工作是运算,大量的数据运算 就是一些通用寄存器, 任务是在运算器中进行的。在运算器中所执行的: 用来暂存CPU执行指令 算术运算是指加、减、乘、除等基本运算; 前后的相关数据。 逻辑运算是指逻辑判断、关系比较及其他的基本逻辑 运算,如与、或、非等。
16 15
AH BH CH DH
8 7
AX BX CX DX SP BP DI SI IP FLAGS CS DS ES SS FS GS AL BL CL DL
0
累加器 基址变址 计数 数据 堆栈指针 基址指针 目的变址 源变址 指令指针 标志
专 用 寄 存 器
8086 / 8088 / 80286
一样在运算过程中暂存操作数,但它们只能以字(16位)
为单位使用。而它们更经常的用途是在存储器寻址时,提 供偏移地址。因此,它们被称为指针或变址寄存器。
18
AX ( accumulator ) 作为累加器用,它是算术运算的主要寄存
器。在乘、除等指令中被指定用来存放操作数。另外,所有的I/O 指令都使用这一寄存器与外部设备传送信息。
22
3)专用寄存器
8086/8088和80286的专用寄存器包括IP、SP和 FLAGS 3个16位寄存器。
A、IP(instruction pointer)为指令指针寄存器,它用来存放代 码段中的偏移地址。在程序运行的过程中,它始终指向下一条要 执行指令首地址的偏移值, IP 与段寄存器 CS 联用确定下一条指 令的物理地址。当这一物理地址送到存储器后,控制器可以取得 下一条要执行的指令,而控制器一旦取得这条指令就马上修改IP 的内容,使它指向下一条指令首地址的偏移值。可见,计算机就 是用IP寄存器来控制指令序列的执行流程。 B、SP为堆栈指针寄存器,它与堆栈段寄存器SS联用来确定堆栈 段中栈顶的地址,也就是说SP用来存放栈顶的偏移地址。 C 、 FLAGS 为标志寄存器,又称为程序状态寄存器( PSW )。 这是一个存放条件码标志、控制标志和系统标志的寄存器。
BX( base ) 可以作为通用寄存器使用。但在涉及计算存储器地
址时,它经常用作基址寄存器。因此,它被称为基址寄存器。
CX(count)可以作为通用寄存器使用。但在涉及计数时,常用
来保存计数值,如在移位指令、循环( loop)和串处理指令中用 作隐含的计数器。因此,它被称为计数寄存器。
DX( data ) 可以作为通用寄存器使用。但一般在作双字长运算
市场上常见的 CPU 由两个生 产厂商提供:Intel公司和AMD公 司, AMD 的市场份额较小,同类 型 CPU 的功耗也较大。从通用、 易用角度考虑可选 Intel CPU ; 从多媒体、三维游戏功能及性价 比考虑就选AMD CPU。
10
2.2 处理器(CPU)的结构
处 理 器 寄存器组 控制器
用程序设计中不能使用,而是由操作系统所用的寄存
器。在这里我们主要介绍程序可见得寄存器。 程序可见寄存器还可以分为通用寄存器、专用寄 存器和段寄存器3类。下面我们来分别加以介绍。
15
80x86的可见寄存器结构(16个)
通 用 寄 存 器
31
EAX EBX ECX EDX ESP EBP EDI ESI EIP EFLAGS
第2章 80x86计算机组织
计算机系统 中央处理机
存储器
外部设备
1
1. 计算机系统(硬件+软件)
硬件组织结构:
中央处理机 CPU 总线控制 逻辑 系 统 总 线 存储器 大容量 接 口 存储器
硬件系统是软件运 行的物理平台。
. . .
接 口
. . .
I/O设备
软件:系统软件
用户(应用)软件
令中,它可以与堆栈段寄存器 SS联用来确定堆栈段中的某一存
储单元地址,实现对堆栈进行访问。 一般SP用来指示堆栈段顶的偏移地址,而BP可作为堆栈区 内的一个基地址(相对栈底偏移量)来访问堆栈中的数据。
DI(destination index)称为目的变址寄存器。一般与附加数
据段寄存器 ES联用,来确定附加数据段中某一存储单元的地址。
系 统 程 序 库
用 户 软 件
用户程序
用户程序库
4
计算机软件层次图
2. CPU(微处理器)
晶 体 管 数 目 42,000,000 3,500,000
晶 体 管 数 100M 2000年的 微处理器
500
2,300
32 年
奔腾 P4
4004
自 2007 年 开 始 到 现 在 , CPU 的 集 成 度 已 经 发 展 到 由在一片单晶硅上集成一 个核发展到在其上集成多 个核的水平,不用说运算 1975 1980 1985 1990 1995 2000 速度就会呈几何倍率增长。
堆栈段( SS )和附加数据段( ES ) 4 个寄存器。
从 80386起,增加了 FS和 GS两个段寄存器,它们 也属于附加数据段的段寄存器。
17
2)通用寄存器
从 80X86 寄存器组结构图中可以看出,在阴影区以外 的寄存器是 8086/8088/80286 所具有的寄存器,它们都是 16位寄存器。其中AX、BX、CX、DX为数据寄存器,用来暂 时存放计算过程中所用到的操作数、结果或其它信息。它 们都可以字形式( 16 位)访问,也可以字节( 8 位)的形 式访问。这 4 个寄存器都是通用寄存器,但它们又可用于 各自的专用目的。 SP、BP、SI、DI四个16位寄存器也可以像数据寄存器
ES联用,分别达到在数据段和附加数据段中寻址的目的。
20
对于 80386 及其后继机型,上面所介绍的通用寄存器
它们都是 32 位的,而且名字分别为 EAX 、 EBX 、 ECX 、 EDX、ESP、EBP、EDI和ESI。它们也可以用来保存不同 宽度的数据,如可以用 EAX 保存 32 位数据,用 AX 保存 16 位数据,用AH或AL保存8位数据。上述8个通用寄存器可
SI(source index)称为源变址寄存器。一般与数据段寄存器
DS联用,来确定数据段中某一存储单元的地址。 SI 和 DI 这两个变址寄存器都具有自动增量和自动减量的功 能,所以用于变址寻址是很方便的。在串处理指令中, SI 和 DI
作为隐含的源变址和目的变址寄存器,此时SI和DS联用,DI和
I/O子系统
为了运行管理和维护计算机而编制的各种程序的总和。
2
计算机系统的组成(通俗)
(与通常概念 的主机不同)
CPU
运算器 寄存器 控制器
总线及控 制和接口
硬件 计 算 机 系 统 软件
随机存取存储器(RAM) 内存 只读存储器(ROM) 高速缓冲存储器(Cache) 输入设备:键盘、鼠标、扫描仪 输出设备:显示器、打印机 外部设备 外 存:软、硬盘、光盘、闪存 网络设备:网卡、调制解调器等 系统软件 操作系统:DOS、Windows、Linux 语言处理程序:各语言的编译系统 实用程序:诊断程序、排错程序等 办公软件包、数据库管理系统 、 用户自编软件等。
•控制器包含的组件:
程序计数器(PC):对指令计数,保证按程序要求的顺序 读取指令 指令寄存器(IR):在指令执行期间,暂存指令 指令译码器(ID):识别指令的功能,分析操作要求 时序控制电路:生成时序信号,协调各部件的工作 微操作控制电路:产生各种控制操作命令
14
2.2.2 80x86寄存器组
80X86CPU 寄存器可以分为程序可见的寄存器和程 序不可见的寄存器两大类。所谓程序可见的寄存器是 指在汇编语言程序设计中可用的寄存器,它们可由指 令来指定使用。而程序不可见的寄存器则是指一般应
寄
存 器
80386及其后继机型 含黑地部分
段 寄 存 器
代 码段 数 据段 附 加段 堆 栈段
80x86的程序可见寄存器组
16
1)段寄存器
段寄存器实际也是一种专用寄存器,它们专 用于存储器寻址时,用来直接或间接地存放段地
址。段寄存器的长度都为 16 位,在 80286 以前的
处理器中,只有代码段( CS )、数据段( DS )、
时,把DX和AX组合在一起存放一个双字长数,而且DX用来存放 高位字,AX用来存放低位字。此外,在对某些I/O操作时,DX也 可用来存放I/O的端口地址。
SP(stack pointer)称为堆栈指针寄存器,用来指示堆栈段顶的