您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 汇编语言程序设计教程PPT第1章
第一章Intel8086/8088的基本结构本章要点8086/8088的功能结构18086/8088的寄存器结构堆栈与存储器结构323第一章Intel8086/8088的基本结构8086是16位字长的微处理器,8088的内部结构为16位,外部数据总线8位,是准16位字长的微处理器,二者指令系统相同,均具有20位地址线,寻址能力达到1MB空间。1.18086/8088的功能结构总线接口单元BIU(BusInterfaceUnit)执行单元EU(ExecutionUnit)8086/8088微处理器由总线接口单元和执行单元组成。协同完成执行内存中存放的指令序列。存储器接口地址加法器ES,CS,SS,DS和IP寄存器组指令流队列EU控制系统AX,BX,CX,DX,SP,BP,SI和DI寄存器组ALU标志寄存器B-BUSC-BUSBIUEUA-BUS8086/8088功能结构图1.1第一章Intel8086/8088的基本结构T1……取指令取指令取指令等待执行执行……执行BIUEUT2T3BIU和EU相互独立,可并行操作,构成指令流水线结构。1.28086/8088的寄存器结构14个16位寄存器,分为4类。AXBXCXDX数据寄存器FRHAHBHCHDHALBLCLDLSPBPSIDIIPFRLCSDSSSES代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器堆栈指针寄存器基址指针寄存器源变址寄存器目的变址寄存器指令指针寄存器标志寄存器AXBXCXDX数据寄存器FRHAHBHCHDHALBLCLDLSPBPSIDIIPFRLCSDSSSES代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器堆栈指针寄存器基址指针寄存器源变址寄存器目的变址寄存器指令指针寄存器标志寄存器第一章Intel8086/8088的基本结构next(1)数据寄存器4个:AX、BX、CX、DX计算过程中的常用寄存器G13(3)指针与变址寄存器4个:SP、BP、SI、DI提供操作数的偏移地址G2(2)段寄存器4个:CS、DS、SS、ES存放段起始地址G(4)控制寄存器2个:IP、FR提供指令的偏移地址;保存条件码标志和控制标志G4第一章Intel8086/8088的基本结构主要的算术运算寄存器,专用于:乘、除法运算、十进制调整及I/O操作等操作。BX(基址寄存器Base):常用于存放存储区的起始地址。AX(累加器Accumulator):第一章Intel8086/8088的基本结构返回CX(计数寄存器Count):常用作循环操作和字串处理的计数控制。DX(数据寄存器Data):DXAX3116150常与AX联用,做双字乘、除法时,DX存放高位字,AX存放低位字。此外在I/O操作时提供外部设备接口的端口地址。第一章Intel8086/8088的基本结构存放代码段的起始地址。代码段存放当前正在运行的程序。DS(数据段地址寄存器DataSegment):存放数据段的起始地址。数据段存放当前正运行的程序所用的数据。CS(代码段地址寄存器CodeSegment):第一章Intel8086/8088的基本结构返回存放堆栈段的起始地址。堆栈段是定义堆栈的存储区。ES(附加段地址寄存器ExtraSegment):存放附加段的起始地址。附加段是附加的数据段,作为辅助数据区存放当前正运行程序所用的数据。SS(堆栈段地址寄存器StackSegment):第一章Intel8086/8088的基本结构提供堆栈栈顶单元的偏移地址。与SS段寄存器联用,控制数据进栈和出栈。BP(基址指针寄存器BasePointer):常用于提供堆栈内某个单元的偏移地址。与SS段寄存器联用,访问堆栈中的任一个存储单元。SP(栈顶指针寄存器StackPointer):堆栈段SS:SP访问栈顶堆栈段SS:BP访问栈内与ES段寄存器联用,可访问附加段中的任一个存储单元。第一章Intel8086/8088的基本结构SI、DI也常用于在字串操作中提供偏移地址,并具有地址自动增量或减量的功能。返回与DS段寄存器联用,可以访问数据段中的任一个存储单元。DI(目的变址寄存器DestinationIndex):SI(源变址寄存器SourceIndex):数据段DS:SI访问数据附加段ES:DI访问数据存放代码段中指令的偏移地址。在程序执行过程中,始终自动给出下一条要取的指令的偏移地址。IP与CS段寄存器联用,可以确定下一条要取的指令的物理地址,因此IP是很重要的控制寄存器,用于控制程序的执行流程。第一章Intel8086/8088的基本结构IP(指令指针寄存器InstructionPointer):代码段CS:IP访问指令第一章Intel8086/8088的基本结构用于存放反映处理器和运行程序执行结果状态的条件码标志和控制标志。FR中共有9个标志位:6个条件码标志位,3个控制标志位。FR(标志寄存器FlagsRegister):1514131211109876543210FR寄存器CFPFAFZFSFTFIFDFOF…CF—溢出标志:计算结果溢出时,OF=1,否则OF=0。OF—符号标志:计算结果小于0时,SF=1,否则SF=0。SF—零标志:计算结果等于0时,ZF=1,否则ZF=0。ZF—进位/借位标志:最高有效位有进位或借位时,CF=1,否则CF=0。CF—辅助进位/借位标志,半字节进位/借位标志。AF—奇偶标志PF第一章Intel8086/8088的基本结构6个条件码标志位:7654321000000011PF=100001011PF=03个控制标志位:第一章Intel8086/8088的基本结构方向标志,控制串操作中的地址增减。DF=0,地址增;DF=1,地址减。DF陷阱标志,TF=1,CPU单步方式下执行程序,TF=0,CPU正常工作。TF中断标志,IF=1,开中断;IF=0,关中断。IF返回第一章Intel8086/8088的基本结构正向传送SIDIDF=0DS:SIES:DI低地址高地址SIDIDISI数据段附加段............DBUFSBUF030708030708方向标志DF的控制作用第一章Intel8086/8088的基本结构SIDIDF=1DS:SIES:DI低地址高地址SIDIDISI数据段附加段............SBUFDBUF030708030708返回反向传送第一章Intel8086/8088的基本结构1.3堆栈与存储器结构(1)堆栈堆栈的固定端称为栈底,在存储器的高地址端,活动端称为栈顶,数据的存取以先进后出原则在栈顶进行。SP栈顶指针寄存器始终保存栈顶地址,指向栈顶。堆栈数据的存取必须以字为单位随着进栈数据的增多,堆栈从高地址向低地址方向扩展。SP低地址高地址堆栈扩展方向(SP)-2新栈顶PUSHBXBHBL...栈底堆栈段栈顶掌握堆栈的要点:SP栈顶指针寄存器始终跟踪栈顶的变化;数据进栈、出栈必须以字为单位数据进栈SP中的地址减小低地址单元存低字节,高地址单元存高字节。...存储器第一章Intel8086/8088的基本结构(2)存储器结构在存储器中,最小的存储单位是字节,每个字节单元用一个无符号二进制数编地址,从0开始编址。书写存储单元地址时用十六进制形式。64K存储器单元的编址方法如图所示。0000H0001H0002H0003H0004H0005H0006HFFFEHFFFFH低字节高字节字单元字节单元低地址字节单元高地址字节单元例:将3456H存入地址为0005H的字单元中。3456第一章Intel8086/8088的基本结构段地址偏移地址存储器单元物理地址+=问题:为什么要分段地址和偏移地址呢?问题:16位寄存器不能提供20位的物理地址。第一章Intel8086/8088的基本结构解决问题的办法:存储器分段管理将存储器分段,每段最大不超过64KB,段内单元地址可用16位表示,称为偏移地址。每段的起始地址称为段地址(也称为段基址)。存储器分段管理第一章Intel8086/8088的基本结构规定段地址必须取为小段首址,从0地址单元开始,每16个字节单元为一小段。按20位地址对1M存储器编址如下:段地址如何表示?00000H00001H00002H……0000EH0000FH00010H00011H00012H……0001EH0001FH00020H00021H00002H……0002EH0002FH…………………FFFF0HFFFF1HFFFF2H……FFFFEHFFFFFH64K第一章Intel8086/8088的基本结构20位物理地址+=16位段地址左移4位(段地址×16)16位偏移地址20位物理地址的形成方法:16位段地址01516位偏移地址015+020位物理地址190000第一章Intel8086/8088的基本结构例:已知一个存储单元的段地址为3200H,偏移地址为1210H,其物理地址是多少?0011001000000000|00000001001000010000+0011001100100001000032000H+1210H33210H偏移地址=段起始地址64K段内地址0000H0001H……0FFFH…….FFFFH30000H偏移地址=段起始地址40000H30000H+0FFFH=30FFFH物理地址......存储器0FFFH第一章Intel8086/8088的基本结构段内偏移量64K段内地址0000H0001H……FFFFH存储器分段管理的地址概念图示:段内偏移量访问存储单元:段寄存器、提供偏移地址的寄存器。第一章Intel8086/8088的基本结构代码段××…数据段(或附加段)××…堆栈段××…CS段地址IP偏移地址SS段地址SP偏移地址低地址高地址低地址高地址低地址高地址代码段中存放指令的单元物理地址CS:IP堆栈段中存储器单元的物理地址SS:SPDS或ES16位寄存器段地址偏移地址栈顶数据段或附加段中存储器单元的物理地址DS:16位地址寄存器或ES:16位地址寄存器形成各段内存储器单元物理地址所用的寄存器…存储器64KB代码段64KB堆栈段64KB附加段01500H1CD00H60000HCSSSDSES0150H1CD0H64KB数据段42000H4200H6000H段分配方式之一(各段等大小)可以对代码段、数据段、附加段和堆栈段各段按需要灵活地进行存储区分配。访问存储器单元时,寄存器的联用方式如下图:CSSSDSES0200H4800H4000H4000H8KB代码段2KB数据段256字节堆栈段……02000H04000H04800H段分配方式之二(各段等大小不等)第一章Intel8086/8088的基本结构使16位寄存器最终可以提供20位物理址便于将代码、数据存放在不同的内存区,程序重定位存储器分段法的优点小结了解CPU的功能结构,掌握寄存器的结构和寄存器的默认联用方式;熟悉存储器的结构,理解编址方法和存储数据的方法;熟悉堆栈的结构,理解堆栈先进后出的存取方法,堆栈指针SP的作用;重点掌握:(1)各寄存器的一般用途和专门用途;(2)段的划分和存储器单元物理地址的形成方法;认真复习,熟练应用思考题:1.阐述寄存器的功能类别和你对寄存器用处的体会;2.分析内存分段管理方法的要点是什么?CDUT
本文标题:汇编语言程序设计教程PPT第1章
链接地址:https://www.777doc.com/doc-4094468 .html