IBM-PC汇编语言程序设计–80x86计算机组织(第二章)
(一)微处理器的发展
1.80x86微处理器的发展
- 第一代微处理器是4位(4004)
- 第二代微处理器是8位(8080,8086)
- 第三代微处理器是16位(80x86)
- 第四代微处理器是32位
- 第五代微处理器是32位
- 第六代微处理器:32位
(二)基于微处理器计算机系统构成
(三)中央处理器CPU的组成
1.算术逻辑部件ALU :用来进行算术、逻辑运算。
2.控制器CU:负责对机器的控制工作,如,从存储器发出指令,对指令进行译码分析;从存储器取得操作数,发出执行指令的所有命令,把结果存入存储器以及对总线及IO的传送控制等。
3.寄存器,每一个寄存器相当于运算器中的一个存储单元,但它的存取速度比存储器要快得多它用来存取计算过程中所需要的或所得到的各种信息,包括操作数地址,操作数及运算结果等。
80x86寄存器组
- 寄存器分为两大类:程序可见的寄存器和程序不可见的寄存器。
- 程序可见的寄存器是指在汇编语言程序设计中用到的寄存器,它们可以由指令来指定。
- 程序不可见的寄存器是指一般应用程序设计中不用而由系统所用的寄存器。
- 程序可见的寄存器又可以分为通用寄存器、专用寄存器和段寄存器三类。
1.通用寄存器共8个。
-
分为4个通用数据寄存器:AX、BX、CX、DX和4个地址指针寄存器:SP、BP、SI、Dl 。
-
4个通用数据寄存器(通用性又有专用性。用来暂时存放计算过程中所用到的操作数、结果或其他信息的,可分别访问其高位字节和低位字节)
-
AX:累加器,主要用在算术运算中,在乘、除等指令中指定用来存放操作数,所有的I/O指令都使用它与外设传送信息。
-
BX:在计算存储器地址时,常用作基址寄存器。
-
CX:常用来保存计数值,如移位指令、循环指令和串处理指令中用作隐含的计数器。
-
DX:一般在作双字长运算时把DX和AX组合在一起存放一个双字长数,DX存放高位字,AX存放低位字(DX:AX)。对某些I/O操作,DX可存放I/O的端口地址。
-
4个地址指针寄存器:( SP、BP、SI、DI可以像数据寄存器一样在运算过程中存放操作数,但只能以字(16位)的形式存放。地址指针寄存器常用在存储器寻址,提供偏移地址)
- SP:堆栈指针寄存器
- BP:基址指针寄存器
- SI:源变址寄存器
- DI:目的变址寄存器
2.段寄存器(段寄存器是专门存放段地址的寄存器,每个段寄存器可以用来直接或间接地存放段地址)
- CS:代码段寄存器,存放当前正在运行的程序。
- DS:数据段寄存器,存放当前正在运行程序所用的数据。
- SS:堆栈段寄存器,定义了堆栈所在的区域,是一块特殊的存储区域。
- ES:附加段寄存器,附加的数据段,是一个辅助的数据区。
3.标志寄存器Flag(Flag又称程序状态寄存器PSW(Program Status Word)是存放运算结果中的状态标志位和微处理器操作控制标志的。)
-
CF:CF置1,表示执行一次加/减法运算时低位字节向高位字节产生了进/借位。
-
PF奇/偶标志:若运算结果的低8位中含1的个数为偶数,
-
PF置1; 1的个数为奇数时PF置0。
-
AF:辅助进位标志或半进位标志。当加/减法运算时低4位向高4位有进/借位,AF置1。
-
ZF:表示一个算术或逻辑运算的结果是否为零。若当前的运算结果为零,则ZF为1; 当前运算结果不为零,则ZF为0。
4.指令指针寄存器
IP(Instruction Pointer)指令指针寄存器:用来存放代码段中的偏移地址。在程序的运行过程中,它始终指向下一条指令的偏移地址,和CS一起形成下一条指令的物理地址(CS:IP)。
(四)存储器
1.存储单元的地址和内容
(1)物理地址:在存储器里以字节为单位来存储信息,为了正确的存放或取得信息,每个字节单元给以一个唯一的存储器地址。
(2)在一个存储单元中存放的信息称为该存储单元的内容(数据或地址)
(3) 字节数据:对应存储器地址可以是偶地址或奇地址。
(4)字数据:存放在两个连续的字节单元中,高8位在高地址字节,低8位在低地址字节,并规定将低字节的地址作为该字的地址;若该字位于偶地址,称为规则字或对准字,否则 (奇地址) 称为非规则字或非对准字。
(5)双字数据:占用4个连续字节单元,高16位在高地址,低16位在低地址字。并规定最低字节地址为双字的地址。
若存放的是主存地址,则段基址在高地址,段内偏移量在低地址。
2.存储器寻址
(1)物理地址的形成
-
物理地址:在1MB的存储器里,每个存储单元都有一个唯一的20位地址,称为该存储单元的物理地址。
-
偏移地址: 把存储单元的物理地址与所在段的起始地址的差称为段内偏移地址,简称偏移地址,是指在段内相对于段的起始地址的偏移值。
它们之间的关系为:
存储单元的物理地址=段的起始地址(段基地址或首地址) x 16D或16H + 偏移地址
例:(DS) = 6832H, (BX) = 1280H
物理地址:(PA) = 68320H+1280H = 695A0H
- 逻辑地址:用段地址和偏移地址表达地址的形式又称为逻辑地址(段地址:偏移地址) ,是程序员编写程序是使用的地址,这样可得到我们所选的存储单元。(每个存储单元只有一个唯一物理地址,但它可由不同的段地址和不同的偏移地址组成,即一个物理地址可对应多个逻辑地址)
总结:
1.计算机语言的发展:
- 第一代机器语言
- 第二代汇编语言
- 第三代高级语言
2.计算机发展
- 第一代:电子管
- 第二代:晶体管
- 第三代:中小规模集成电路
- 第四代:超大规模大规模集成电路
3.80x86微处理器的发展
- 第一代:4位的微处理器4004
- 第二代:8位的8008
- 第三代:16位的8086、286
- 第四代:32位的80386、80486
- 第五代:Pentium奔腾
- 第六代:Pentium Pro高能奔腾,MMX
4.程序可见程序可见的寄存器又可分为通用寄存器、专用寄存器和段寄存器三类,共有14个。
5.存储器逻辑分段的两个条件
- 一段内地址是用16位表示
- 二段起始地址为小段的首地址
6.段寄存器的特点
- 可以重叠、间隔,也可以连续
7.三地址(物理、偏移、逻辑)
- 物理地址:每个存储单元都有一个唯一的20位地址。
- 偏移地址:存储单元的物理地址与所在段的起始地址的差。
- 逻辑地址:段地址:偏移地址
6位表示
- 二段起始地址为小段的首地址
6.段寄存器的特点
- 可以重叠、间隔,也可以连续
7.三地址(物理、偏移、逻辑)
- 物理地址:每个存储单元都有一个唯一的20位地址。
- 偏移地址:存储单元的物理地址与所在段的起始地址的差。
- 逻辑地址:段地址:偏移地址
就这样结束了吗???