`
mmdev
  • 浏览: 12916509 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

第一章 80X86微型计算机组织 学习笔记

 
阅读更多

第一章 80X86微型计算机组织

计算机的主要内部硬件包括微处理器、内存和寄存器;外部硬件是指外部设备,如键盘、鼠标、显示器、磁盘、光盘等。

什么是汇编语言

汇编语言是一种对计算机硬件进行直接编程的语言,所以,要学好汇编语言,必须对微处理器、存储系统、输入/输出系统有叫深刻的理解。

IBM-PC系列计算机的存储器

要点:

1.二进制位和字节

二进制位(bit)是计算机存储数据的最小单元,只能存储二进制书0或1。8个连续的二进制位构成一个字节(Byte),字节的最低位成为第0位,最高位成为第7位。

两个字节组成一个字(Word),即一个字为16位:bit0~bit15,其中,bit0~bit7为低位字节,bit8~bit15为高位字节。

双字:4个字节,32位。

4字:8个字节,64位。

5字:10个字节,80位。

8字:16个字节,128位。

表示存储容量的一些单位:

KB:1KB=1024Bytes(即2^10字节)

MB: 1MB=1024Bytes(即2^20字节)

GB: 1GB=1024Bytes(即2^30字节)

2.存储单元的地址和内容

将内容的字节从0开始依次连续编号,字节对应的编号称为它的地址,计算机通过地址来访问内存单元。

内存是用来存放程序指令和数据的,一个存储单元存放的信息称为该存储单元中的内容。

一个字存入存储器要占相继的两个字节,存放时采取“高高低低”的原则(即低字节存入低地址,高位字节存入高地址)

3.IBM-PC系列计算机内存映像

要点:存储器系统划分为三部分:程序暂驻区(TPA)、系统内存区和扩展存储器系统(XMS)

TPA 程序暂驻区驻留操作系统和其他控制计算机的程序,也存放任何当前激活的或者非激活的应用程序,长度为640KB。

系统内存区 包括只读存储器或可擦写存储器中的程序以及RAM的数据区。

4.I/O空间

I/O系统是指I/O总线、I/O接口和I/O设备有关的软硬件的总称。

外设接口

外部设备与主机的通信是通过外设接口进行的。每个接口包括一组寄存器:

数据寄存器:用来存放外设和主机间传送的数据,这种寄存器实际上起缓冲器的作用。

状态寄存器:用来保存外部设备或接口的状态信息,以便CPU在必要时测试外设的状态,了解外设的工作情况。

命令寄存器:CPU给外设或接口的控制命令通过此寄存器送给外部设备。

端口地址:每个寄存器对应的编号称为它的端口地址。

IBM-PC计算机I/O地址空间可达64KB,所以I/O地址的地址范围是0000H~FFFFH。

IBM-PC系列计算机的总线

总线:地址总线、数据总线和控制总线,分别负责在微处理器与存储器和I/O设备之间传送地址、数据和控制信息。

地址总线:用于请求存储器的一个存储单元或者一个I/O端口.

数据总线:作用是在CPU与存储器之间或CPU与I/O地址空间之间传送数据。

控制总线:存储器读控制、存储器写控制、I/O读控制、I/O写控制。

5.微处理器的工作模式

CPU的任务是执行存放在存储器里的指令序列。它是由运算器、控制器、一组寄存器和高速缓存组成的。

CPU中的寄存器

累加器:AH AX AL

基址寄存器:BH BX BL

计数器:CH CX CL

数据寄存器:DH DX DL

堆栈指针:SP

基址指针:BP

目的变址:DI

原变址寄存器:SI

指令指针:IP

标志寄存器:FLAGS

段寄存器

代码段寄存器:CS

数据段寄存器:DS

附加段寄存器:ES

堆栈段寄存器:SS

还有一些通用寄存器就不一一介绍了

标志寄存器在实模式下,包含了一下的标志位

标志: OD I T S Z AP C
位号.15 14 13 12 11 10 9 8 7 6 54 3 2 1 0
以下列出每个标志位及功能的简要说明
C(进位) 计算结果的最高位有进位或借位,则C置为1,否则置为0。
P(奇偶性) 奇校验标志是逻辑0,偶校验标志是逻辑1.奇偶性就是在一个数中1的个数是偶数还是奇数。

A(辅助进位) 辅助进位标志保留加法的结果3位和4位间进位,或者减法后的结果3、4位间的借位,有进位或借位则A置为1,否则A置为0。

Z(零) 零标志表示一个算术或逻辑操作的结果是否为零。如果结果为0,Z置为1,结果不为0,Z置为0。

S(符号) 符号标志保持算术或逻辑指令后结果的算术符号。结果为负,S=1;结果为正,S=0。

T(陷阱) 陷阱允许通过芯片上调试特性来设置陷阱中断(调试一个程序,以便找到错误和故障)。如果T标志为1(允许),则微处理器中断程序。如果T标志是逻辑0,则设置陷阱特性被禁止。

I(中断) 中断标志是否响应外部可屏蔽中断请求。如果I=1,则中断允许。如果I=0,则中断被禁止。1标志的状态由STl(I标志置1)和CLI(I标志置0)指令来控制。

D(方向) 如果D=1则寄存器自动地递减;如果D=0则寄存器自动地递增。D标志通过STD(置方向)指令设置,通过CLD(清方向)指令清除。

O(溢出) 溢出标志在有符号数加或减,结果溢出,O置为1。溢出指示结果已超出数的范围。

段寄存器用来与微处理器中其他寄存器联合产生存储器地址。

每种段寄存器及它们的功能如下:

CS(代码段寄存器)代码段是一个存储器区段,保存微处理器使用的代码(程序和过程)代码段寄存器用于定义存放代码的存储器的起始地址。

DS(数据段寄存器)数据段是含有程序所用数据的存储区段,通过数据段的起始地址和偏移地址结合寻址数据。数据段寄存器就是用来定义数据段的起始地址的。

ES(附加段寄存器) 附加段是为某些串指令存放目标数据而外加的一个数据段。ES寄存器用来定义附加段的起始地址。

SS(堆栈段寄存器) 堆栈段寄存器定义堆栈用的存储区。堆栈段寄存器就是用来定义堆栈段的起始地址的。

6.实模式存储器寻址

第一个1MB存储器称做实存储器或常规存储器。

段和偏移

问题:16位的寄存器怎样来寻址20位的地址空间呢?

所有实模式存储器地址都由段地址组成。段寄存器内的段地址定义任意64KB存储段的开始地址。偏移地址是指在这个64KB存储段内任意一个单元的段内地址,即距段首的字节数,因此也称为相对地址。

回到该问题,要用16位的寄存器来寻址20位空间,就在段寄存器内容右边增补一个0H,形成20位存储器地址,允许它去访问第一个1MB存储器内以任何的以16B为边界的段起点。

存储单元的真实地址为物理地址,采用了段地址、偏移地址方案后,物理地址可以按如下公式计算:

物理地址=(段寄存器)X10H+偏移地址

例如段寄存器内容为1200H,它寻址在12000H单元的存储段。同样,如果段寄存器内容是1201H,它寻址开始于12010H单元的存储段。

隐含段和偏移寄存器

微处理器有一套段加偏移地址规则,用于各种实际的寻址方式。

段寄存器与固定搭配的偏移寄存器

CS寄存器

有效程序代码段得起始地址.加上在指令指针(IP)寄存器中的偏移值,就指明了为执行指令所要取得的指令地址。
(CS)+(IP)= 下一条指令的地址
DS寄存器
包含程序数据段得起始地址,该地址加上在指令中的偏移值,就可以访问位于数据段中的指定字节单元。
(DS)+(BX)=数据段中数据的地址
(DS)+(DI)=数据段中数据的地址
(DS)+(SI)=数据段中数据的地址
(DS)+(16位 立即数)=数据段中数据的地址
SS寄存器
允许在寄存器中实现堆栈。加上堆栈指针(SP)寄存器中的偏移值,就指明了正被寻址的堆栈中的当前字。
(SS)+(SP)=堆栈中的当前字的地址
(SS)+(BP)=堆栈中的数据的地址
ES寄存器
程序中其他段得起始地址。
用于某些串操作中和DI寄存器相关联
(ES)+(DI)=串地址的结尾
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics