>>:
右移,
注意:
对于有符号数,在右移时,符号位将随同移动。
当为正数时,最高位补0;而为负数时,符号位为1,最高位是补0或是补1取决于编译系统的规定。
TurboC和很多系统规定为补1。
“+”号的优先级比移位运算符的优先级高
三、存储器系统
●存储器的分类:
三个性能指标:
存储容量、单位成本、存储速度
按作用分类:
主存、辅存
按介质分类:
磁表面存储器(磁盘、磁带)、半导体存储器、光盘存储器
按存取方式:
随机存储、只读存储
按信息的可保护性:
RAM、ROM
●随机存取存储器
RAM-randomaccessmemory随机存取器。
存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。
这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。
按照存储信息的不同,随机存储器又分为静态随机存储器(StaticRAM,SRAM)和动态随机存储器(DynamicRAM,DRAM)。
高速缓冲存储器cache使用的是SRAM,而大容量主存使用的DRAM。
●只读存储器
ROM-readonlymemory只读存储器。
存储器的内容只能随机读出而不能写入。
信息一旦写入存储器就固定不变了,即使断电,内容也不会丢失。
●存储器的层次结构:
寄存器->缓存cache->主存->辅存->虚存
●存储器与CPU的连接
通过数据总线、地址总线、控制总线与CPU相连
总线的位数即为机器字长
●内存:
是存储程序和数据的部件,由地址译码器、内存单元等构成。
●内存单元
是存储信息的基本单位,每片内存芯片有若干个内存单元,每个内存单元可存储1位或多位二进制数。
●内存单元的地址
为区分个单元内存,每个内存单元对应有一个地址。
地址线上的数据经译码后只有唯一的内存单元被选中。
每个内存单元存储一个二进制数。
●与存储单元地址相关的几个概念
物理地址:
一个存储单元的实际地址。
物理地址与存储单元是一一对应关系。
逻辑地址:
是指段地址和偏移地址,是指令中引用的形式地址。
一个逻辑地址只能对应一个物理地址,而一个物理地址可以对应多个逻辑地址。
段地址:
是指一个段的起始地址,一般将其有效数字位存放在段寄存器中。
偏移地址:
段内存储单元相对段地址的距离。
同一个段内,各个存储单元的段地址是相同的,偏移地址是不同的。
●物理地址的计算方法:
物理地址=段地址+偏移地址=段寄存器内容×10H+偏移地址
取指令物理地址=(CS)×10H+(IP)
堆栈操作物理地址=(SS)×10H+(SP)/(BP的表达式)
存储器操作数物理地址=(DS)/(ES)×10H+偏移地址
●存储器分段的特点
在程序代码量、数据量不是太大的情况下,可使它们处于同一段内。
内存分段为程序的浮动分配创造了条件
物理地址与逻辑地址并不是一一对应的;2000:
0202H=2010:
0102H=20202H
四、X86微处理器
●结构:
总线接口部件(BIU)、执行部件(EU)
BIU:
寄存器、地址加法器、指令队列缓冲器、总线控制逻辑。
负责从内存中取指令,送入指令队列,实现CPU与存储器和I/O接口间的数据传送。
EU:
ALU(算数逻辑单元)、寄存器、EU控制系统。
负责分析指令、执行指令。
●寄存器:
是有限存储容量的高速存储部件,它们可用来暂存指令、数据和地址。
下面的介绍以32位的8086为例。
Ø数据寄存器:
4个。
即EAX、EBX、ECX、EDX
对低16位的存取不影响高16位,以16位算,即AX、BX、CX、DEX(可分开高低位:
AL、AH、BL、BH、CL、CH、DL、DH)。
AX称为累加器(乘除、算数),BX称为基址寄存器(转移)
CX称为计数寄存器(计数寄存器)、DX称为数据寄存器
Ø指针和变址寄存器:
ESP(StackPointer)、EBP(BasePointer)、ESI(SourceIndex)、EDI(DestinationIndex)
ESP是堆栈指针寄存器:
和堆栈段寄存器SS一起确定堆栈在内存中的位置。
EBP是基数指针寄存器:
存放基地址
ESI是源变址寄存器:
用于指令的变址寻址方式
EDI是目的变址寄存器:
用于指令的变址寻址方式
上面的是8个通用寄存器,以下6个是专用寄存器
Ø段寄存器:
ECS、EDS、ESS、EES
ECS是代码段寄存器,EDS是数据段寄存器,ESS是堆栈段寄存器、EES是附加段寄存器。
段寄存器的内容与有效地址偏移一起,可确定内存的具体位置。
Ø指令指针寄存器:
EIP
用来控制CPU的指令执行顺序,它和代码段寄存器CS一起可以确定当前所要取的指令的内存地址。
顺序执行程序时,CPU每取一个指令字节,IP自动加1,指向下一个要读取的字节;当IP单独改变时,会发生段内的程序转移;当CS和IP同时改变时,会产生段间的程序转移。
Ø标志寄存器:
EFR
FR中的内容被称为处理器状态字(PSW),用来存放CPU的工作状态。
共9个标志位,可分成两类:
一类为状态标志,一类为控制标志。
其中状态标志表示前一步操作(如加、减等)执行以后,ALU所处的状态,后续操作可以根据这些状态标志进行判断,实现转移。
控制标志则可以通过指令人为设置,用以对某一种特定的功能起控制作用(如中断屏蔽等),反映了人们对微机系统工作方式的可控制性。
CF(CarryFlag):
进位标志位,做加法时最高位出现进位或做减法时最高位出现借位,该位置1,反之为0。
PF(ParityFlag):
奇偶标志位,当运算结果的低8位中l的个数为偶数时,则该位置1,反之为0。
AF(AuxiliarycarryFlag):
半进位标志位,做字节加法时,当低四位有向高四位的进位,或在做减法时,低四位有向高四位的借位时,该标志位就置1。
通常用于对BCD算术运算结果的调整。
(例:
11011000+10101110=110000110其中AF=1,CF=1)
ZF(ZeroFlag):
零标志位,运算结果为0时,该标志位置1,否则清0。
SF(SignFlag):
符号标志位,当运算结果的最高位为1,该标志位置1,否则清0。
即与运算结果的最高位相同。
OF(OverflowFlag):
溢出标志位,反映运算结果是否超出了8位或16位带符号数所能表达的范围。
TF(TrapFlag):
陷阱标志位(单步标志位、跟踪标志)。
当该位置1时,将使8086/8088进入单步工作方式,通常用于程序的调试。
IF(InterruptFlag):
中断允许标志位,若该位置1,则处理器可以响应可屏蔽中断,否则就不能响应可屏蔽中断。
DF(DirectionFlag):
方向标志位,若该位置1,则串操作指令的地址修改为自动减量方向,反之,为自动增量方向。
EFR的低16位与FR的相同,新增的标志有:
IOPL:
I/O特权标志,如果当前I/O级别大于IOPL的值将发生一个保护异常。
NT:
嵌套任务标志,用来控制中断返回指令IRET的执行。
RF:
重启动标志,控制是否接受调试故障
VM:
虚拟方式,位1时,表示处于虚拟工作状态下
五、指令系统
●指令与指令系统
指令:
指示计算机执行某种操作的命令,是计算机运行的最小功能单位。
指令系统:
计算机上所有指令的集合。
位于硬件和软件的交界面上。
●
指令的格式:
操作码:
指计算机所要执行的操作,即指出操作类型,是一种助记符。
操作数:
指在指令执行操作的过程中所需要的操作数。
该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。
●指令的寻址方式:
数据寻址:
隐含寻址、立即数寻址、直接寻址、间接寻址、寄存器寻址、相对寻址、基址寻址、变址寻址、堆栈寻址
指令寻址:
顺序寻址(寄存器PC+1)、跳跃寻址
●CISC和RISC
CISC:
复杂指令系统计算机。
Intel系列CPU
RISC:
精简指令系统计算机。
嵌入式系统使用的就是RISC,比如ARM
六、总线
●概述:
为什么要用总线?
机内部件互连方式
是一组能为多个部件分时共享的公共信息传送线路。
两个特点:
分时、共享
某一时刻,只允许一个部件向总线发送信息,但多个部件可同时从总线上接受相同的信息。
按传输数据类型分为:
数据总线、地址总线、控制总线
按层次分为:
片内总线、芯片总线等
●几个基本概念
波特率:
没秒钟通过信道传输的二进制位数
比特率:
每秒钟通过心道传输的有效数据位
总线的传输周期:
申请阶段、寻址阶段、传输阶段、结束阶段
●总线标准:
ISA总线:
最早的,对应的插槽颜色一般为黑色,比PCI接口插槽要长些,位于主板的最下端。
可插接显卡,声卡,网卡以及所谓的多功能接口卡等扩展插卡。
其缺点是CPU资源占用太高,数据传输带宽太小,是已经被淘汰的插槽接口。
EISA总线:
支持32位CPU,也被淘汰。
VESA局部总线:
针对多媒体PC,但面临淘汰的趋势。
PCI局部总线:
32/64位,高性能,即插即用,用于显卡、声卡、网卡、内置Modem、内置ADSLModem、USB2.0卡、IEEE1394卡、IDE接口卡、RAID卡、电视卡、视频采集卡以及其它种类繁多的扩展卡。
PCI插槽是主板的主要扩展插槽,通过插接不同的扩展卡可以获得目前电脑能实现的几乎所有功能,是名副其实的“万用”扩展插槽。
AGP总线:
在PCI上发展起来的,主要针对与图形、视频。
其插槽一般为棕色,但由于显卡速度的提升,已逐步被PCI-Epress取代。
PCI-Express总线:
是最新的,已取代AGP和PCI。
RS-232C总线:
二级制串行通信。
USB总线:
通用串行总线,外设总线标准,即插即用。
PCMCIA接口:
笔记本扩展功能插槽,即插即用,插笔记本内存卡的
IDE接口:
集成设备电路、硬盘、光驱与主板连接。
SCIC接口:
小型计算机系统接口,硬盘、软驱、光驱、打印机、扫描
SATA接口:
串行硬件驱动接口,一般连接硬盘。
●地址总线AB(AdressBus):
单向
用来传送CPU输出的地址信号,确定被访问的存储单元、I/O端口
地址总线决定CPU的寻址能力,比如10根,可寻址210,即1024字节,1K。
●数据总线DB(DataBus):
双向
用来在CPU与存储器、I/O接口之间进行数据传送。
数据总线决定一次可最多传送数据的宽度,比如10根,一次可传送10位。
●控制总线CB(ControlBus):
双向
用于传送各种控制信号
CPU发出的,如读写控制信号
向CPU发出的,如外设向CPU发出的中断申请信号
●南桥芯片组(SouthBridge)
是主板芯片组的重要组成部分,主要负责I/O总线间的通信,如PCI总线、USB、LAN、ATA、SATA、音频控制器、键盘控制器、实时时钟可控制器、高级电源管理、网卡、WI-FI无线网络等。
主要负责I/O接口等一些外设接口的控制
有些南桥集成到了北桥上。
一般位于主板上离CPU插槽较远的下方,PCI插槽附近。
●北桥芯片组(NorthBridg)
是主板芯片组中起主导作用的最重要的组成部分,也称为主桥。
一般而言主板芯片的型号都是以北桥芯片来命名的。
负责与CPU的联系并控制内存,提供对CPU的类型和主频、系统的前端总线频率、内存类型和容量、纠错等支持,整合型芯片组的北桥芯片还集成了显示核心。
处理数据量非常大、发热量最大,所以一般的北桥上都有散热片或者风扇。
位于离CPU最近的地方。
●总线控制
总线资源管理、总线仲裁、总线定时(通信控制)、总线连接(不同总线协议之间的转换)
七、输入输出系统
●我们所说的设备驱动,就是输入输出设备的驱动
●输入输出系统:
输入输出设备、输入输出接口、输入输出控制器、输入输出控制管理软件
●I/O接口:
外设的电信号、运行速度、信号格式、时序与CPU不匹配,不能与CPU直接相连,必须通过I/O接口和CPU相连。
I/O接口:
在各个外设与主机之间连接、传输和协调数据信息的设备。
协调包括传输过程中的速度、电平和格式。
●I/O接口的功能:
实现主机和外设的通信联络控制(时序、工作速度)
进行地址译码和设备选择
实现数据缓冲(消除速度差异)
信号格式的转换(电平、数模、串并)
传送控制命令和状态信息(命令寄存器接受CPU发出的命令、状态寄存器)
●
I/O接口示意图
CPU与外设之间交换的信息:
数据信息、控制信息、状态信息。
●I/O端口
通常有一个或多个寄存器,用以存放各种信息,可被CPU直接访问。
每个端口都对应一个端口地址。
若干个端口加上相应的控制逻辑电路组成接口。
根据存放内容的不同可分为:
状态端口、数据端口、控制端口
●I/O端口编址方式
统一编址(与存储器一起)、单独编址(专用的指令)
●对I/O端口的读/写操作
寻址阶段:
CPU发出地址信号,选中相应的I/O端口。
其地址一般与内存一起编址或者独立编址。
读操作:
CPU发出I/O端口读控制信号,被选中的I/O端口将其内容经数据总线送入CPU。
写操作:
CPU发出I/O端口写控制信号,CPU将欲写的内容经数据总线,写入被选中的I/O端口中。
I/O方式:
Ø程序查询方式:
Ø完全由主机执行程序实现(单任务体系的计算机)
出现的问题:
CPU一旦启动I/O,必须停止程序的执行,出现“踏步”等待现象;CPU与I/O串行工作。
Ø程序中断方式:
当主机启动外设后,无需等待查询,而是继续执行原来的程序,外设在做好输入输出准备时,向主机发出中断请求,主机接到请求后就暂时中止原来执行的程序,转去执行中断服务程序对外部请求进行处理,在中断处理完毕后返回原来的程序继续执行。
主机和外设同时并行工作(允许一个主机连接多台外设)
主要适用于中、低速的设备。
ØDMA方式:
直接存储器存取方式,一种完全由硬件进行成组信息传送的控制方式。
一个I/O接口试图通过总线直接向存储器发送或接受数据(一般是大批量的数据),它会向CPU发送DMA请求信号。
外设通过DMA的一个专门的电路(DMAC)向CPU提出接管总线控制权的总线请求,CPU会根据情况让出总线控制权,于是I/O接口与另一个设备之间就通过总线直接传输数据而不再需要CPU干预。
数据传输结束后,释放总线控制权。
降低了CPU在传送数据时的开销,因为信息的传送不再经过CPU,而是在内存和外设之间直接进行。
适用于一些高速的I/O设备。
Ø通道方式:
减轻了CPU对I/O操作的控制。
以增加硬件为代价的。
通道可以理解为一个特殊的处理器。
八、中断系统
●什么是中断?
在CPU执行程序的过程中,由于某种突发事件的发生,强迫CPU暂时停止正在执行的程序,转向对该突发事件进行处理,对这个事件处理结束后又能回到原中止的程序,接着中止前的状态继续执行原来的程序,这一个过程就称为中断。
把引起中断的原因或触发中断请求的来源称为中断源。
中断方式提高了CPU的工作效率,但是它同时也提高了系统的硬件开销。
因为系统需增加含有中断功能接口电路,用来产生中断请求信号。
●中断优先级
如果有多个不同优先级的中断源同时提出中断请求时,CPU应当先响应最高优先级的中断源。
如果CPU正在对某一中断源服务时,比它优先级更高的中断源提出中断请求时,CPU能够暂停正在执行的中断服务程序转向对优先级高的中断源进行服务,当服务结束后再返回原优先级较低的中断服务程序继续执行。
(屏蔽比它优先级低得中断源)
中断可以嵌套(被拥有更高优先级的中断源中断)。
●中断过程
中断请求中断响应中断处理中断返回
前两步由硬件处理,后两步由软件处理
中断请求:
当外设准备就绪或本身工作已经完成时,才向CPU提出中断请求;当外设要求和CPU进行数据交换时,将中断请求信号送往中断请求触发器或中断控制器,经它们处理后,向CPU发出中断请求。
中断响应:
如果CPU处于开中断状态,经判优后响应其中最高优先级的中断请求,关中断,将断点压入堆栈中(有的微机还将程序状态字和相关寄存器的内容压入堆栈)保存,以备返回原程序,紧接着将相应的中断处理程序入口地址或中断向量送CPU,转入中断服务程序。
中断处理:
保护现场、中断服务(该中断所要执行的具体指令内容)、恢复现场(现场恢复后开中断)。
中断返回:
将压入的断点地址弹出,保证被中断的程序按原来状态执行下去。
●与调用子程序(函数)的区别
未知性、相关性、硬件性、优先级(嵌套)
●中断分类
硬件中断(外部中断):
可屏蔽中断(如打印机、键盘等)、不可屏蔽中断(紧急情况,系统必须立即处理)
软件中断(内部中断):
某条指令或者对标志寄存器中某个标志的设置而产生,与硬件电路无关。
(如除数为0、溢出等)
●中断向量
中断服务子程序的入口称为一个中断向量
●中断向量表
将这些中断向量按一定的规律排列成一个表,就是所谓的中断向量表,当中断源发出中断请求时,即可查找该表,找出其中断向量,就可转入相应的中断服务子程序。
●向量表地址:
中断向量在中断向量表中的位置
8086中断系统中的中断向量表是位于0段的0~3FFFH的存贮区内,每个中断向量占四个单元,其中前两个单元存放中断处理子程序的入口地址的偏移量(IP),低位在前,高位在后;后两个单元存放中断处理子程序入口地址的段地址(CS),也是低位在前,高位在后,整个中断向量的排列是按中断类型号进行的。
00H~04H----系统专用、10H~1FH----BIOS用、40H~FFH----用户用、08H~0FH----硬件中断、20H~3FH----DOS用
●控制中断的工作
中断优先的权管理方式、中断源屏蔽管理、结束中断处理工作、系统总线连接管理、引入中断请求的方式
8259A