第一章 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

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

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

  

   标志:            O  D  I  T  S  Z     A    P      C
   位号. 15 14 13 12 11 10  9  8  7  6  5  4  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)=串地址的结尾
 
   

posted on 2011-09-20 22:47  spring学习笔记  阅读(225)  评论(0编辑  收藏  举报