资源描述:
《《微机原理与汇编语言》第3章》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、西安邮电学院计算机系系统结构教研室2008.7微机原理与汇编语言教材及参考书《微机原理与汇编语言》王钰李育贤王晓婕编著《微机原理与汇编语言》实验指导王钰编著Friday,September17,20211第3章80x86系列微型计算机的体系结构主要内容:8086/8088微处理器8086/8088系统总线构成8086/8088存储器和I/O组织80x86系统的操作和总线周期Friday,September17,202128086是Intel系列的16位微处理器,它是采用HMOS工艺技术制造的,内部包
2、含约29000个晶体管。8086有16根数据线和20根地址线,因为可用20位地址,所以可寻址的地址空间达220即1M。8086工作时,只要单一的5V电源和单相时钟,时钟频率为5MHz。后来,Intel公司推出的8086-1型微处理器时钟频率高达10MHz,8086-2型微处理器时钟频率达8MHz。几乎在推出8086微处理器的同时,Intel公司还推出了一种准16位微处理器8088。推出8088的主要目的是为了与当时已有的一整套Intel外围接口芯片直接兼容使用。8088的内部寄存器、内部运算部件以及内
3、部操作都是按16位设计的,但对外的数据总线只有8条。3.18086/8088CPUFriday,September17,202133.1.18086/8088CPU的编程结构1、功能结构从功能上讲,8086CPU内部结构可分为两部分:(1)总线接口单元BIU(BusInterfaceUnit)——负责完成CPU与存储器或I/O设备之间的数据传送。(2)执行单元EU(ExecutionUnit)——不与系统外部直接相连,它的功能只是负责执行指令。Friday,September17,20214图3.18
4、086CPU基本结构框图Friday,September17,202152、8086/8088的内部寄存器Friday,September17,20216(1)通用寄存器通用寄存器(8个):包括四个数据寄存器AX(AH/AL),BX(BH/BL),CX(CH/CL),DX(DH/DL),两个地址指针寄存器(SP,BP)和两个变址寄存器(SI,DI)。①数据寄存器AX、BX、CX、DX数据寄存器一般用于存放参与运算的操作数或运算结果。每个数据寄存器都是16位的,但又可将高、低8位分别作为两个独立的8位寄
5、存器来用。高8位分别记作AH、BH、CH、DH,低8位分别记作AL,BL,CL,DL。Friday,September17,20217AX(Accumulator)称为累加器。用该寄存器存放运算结果可使指令简化,提高指令的执行速度。此外,所有的I/O指令都使用该寄存器与外设端口交换信息。BX(Base)称为基址寄存器。8086/8088CPU中有两个基址寄存器BX和BP。BX用来存放操作数在内存中数据段内的偏移地址,BP用来存放操作数在堆栈段内的偏移地址。CX(Counter)称为计数器。在设计循环程
6、序时使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度。DX(Data)称为数据寄存器。在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。寄存器AX,BX,CX,DX的特定用法Friday,September17,20218②地址指针寄存器SP、BPSP(StackPointer)称为堆栈指针寄存器。在使用堆栈操作指令(PUSH或POP)对堆栈进行操作时,每执行一次进栈或出栈操作,系统会自动将SP的内
7、容减2或加2,以使其始终指向栈顶。BP(BasePointer)称为基址寄存器。作为通用寄存器,它可以用来存放数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址。Friday,September17,20219③变址寄存器SI、DISI(SourceIndex)称为源变址寄存器。DI(DestinationIndex)称为目的变址寄存器。这两个寄存器通常用在字符串操作时存放操作数的偏移地址,其中SI存放源串在数据段内的偏移地址,DI存放目的串在附加数据段内的偏移地址。Friday,Septem
8、ber17,202110(2)段寄存器为了对1M个存储单元进行管理,8086/8088对存储器进行分段管理,即将程序代码或数据分别放在代码段、数据段、堆栈段或附加数据段中,每个段最多可达64K个存储单元。段地址分别放在对应的段寄存器中,代码或数据在段内的偏移地址由有关寄存器或立即数给出。Friday,September17,2021118086/8088的四个段寄存器CS(CodeSegment)——代码段寄存器。用来存储程序当前使用的代码段的段地址。C