版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第2章微机系统中的微处理器内容提要 微处理器的典型结构 8086微处理器的功能结构 8086微处理器的寄存器结构 8086的存储器组织 8086的I/O组织 8086的寻址方式 1常用术语(1)位(bit):计算机处理的最小数据单位,只能为“0”或“1”,缩写为b千位(Kilobit):代表210位,即1024位,缩写Kb兆位(Megabit):代表220位,即10241024位,缩写Mb千兆位(Gigabit):代表230位,即1024Mb位,缩写Gb兆兆位(Terabit):代表240位,即1024Gb位,缩写Tb常用术语(2)字节(Byte):计算机中存储器容量的基本单位,一个字节由8位
2、二进制数据组成,Byte通常缩写为B,同样有KB、MB、GB、TB字(Word):不同的场合有不同的含义,软件上通常指2个字节,硬件上一般指处理器外部数据总线的宽度字长:计算机运算部件直接能处理的二进制数据的位数。字长越长,计算机的处理能力越强,运算精度越高,指令功能越强,可寻址的存储空间也越大常用术语(3)CPU主频主振频率,CPU内部的时钟频率,是CPU进行运算时的工作频率。一般来说,主频越高,一个时钟周期里完成的指令数也越多,CPU的运算速度也就越快。但由于内部结构不同,并非所有时钟频率相同的CPU性能也一样。集成度表明微处理器的生产工艺水平常用芯片上集成的晶体管数量来表达超大规模集成电
3、路通常10万门/片以上前言微处理器是组成微型计算机系统的核心部件,Intel80X86微处理器的基本结构和原理体现了一般微处理器的特点,故作为代表来进行讲述。讨论微处理器的目的,一方面是为了理解微型计算机的工作原理,更重要的一方面是为了应用它。所以没有必要也不可能讨论它的每个逻辑细节。从上述目的出发,我们将从微处理器的内部和外部两个方面讨论微处理器的结构。2.1 微处理器的一般结构(内部结构)典型CPU内部结构图程序计数器(PC)指令寄存器(IR)指令译码器(ID)控制逻辑部件堆栈指示器(SP)处理机状态字(PSW)I/O控制逻辑地址寄存器数据寄存器工作寄存器ALU微处理器的一般结构(内部结构
4、)运算器是计算机用来进行算术逻辑运算的部件运算器的核心是ALU基本功能: 对二进制代码进行加、减、乘、除基本运算 对二进制代码进行与、或、非等逻辑运算 对二进制代码进行移位操作 完成数据信息的传送运算器的组成:算术逻辑运算单元ALU、内部总线、通用寄存器组、输入多路开关和数据锁存器、输出移位多路开关。微处理器的一般结构(内部结构)(2)控制器用于计算机硬件系统中,指挥、协调各部件的工作,是整个计算机的中枢基本功能:取指令、分析指令、执行指令、输入/输出控制、中断处理控制器构成:程序计数器(PC:Program Counter):用于保存下一条要执行的指令的地址,一般指令是顺序存储在存储器中的指
5、令寄存器(IR:Instruction Register):保存从存储器读入的当前要执行的指令微处理器的一般结构(内部结构)(2)指令译码器(ID:Instruction Decoder):对指令寄存器中保存的指令进行译码分析。控制逻辑部件:根据上一器件的分析,发出相应的一系列节拍脉冲和控制信号,完成指令的操作。处理器状态字(PSW:Processor State Word):暂存处理器当前的状态。PSW中的各位用来指示运算结果的特殊状态。条件转移指令将根据PSW中的某一位的状态来决定程序是否转移。堆栈指示器(SP:Stack Pointer):对堆栈的存储区进行操作时提供栈顶地址,方便堆栈操
6、作。程序计数器(PC)指令寄存器(IR)指令译码器(ID)控制逻辑部件堆栈指示器(SP)处理机状态字(PSW)I/O控制逻辑地址寄存器数据寄存器工作寄存器ALU用于保存下一条要执行的指令的地址典型CPU内部结构图典型CPU内部结构图程序计数器(PC)指令寄存器(IR)指令译码器(ID)控制逻辑部件堆栈指示器(SP)处理机状态字(PSW)I/O控制逻辑地址寄存器数据寄存器工作寄存器ALU保存从存储器中读入的当前要执行的指令典型CPU内部结构图程序计数器(PC)指令寄存器(IR)指令译码器(ID)控制逻辑部件堆栈指示器(SP)处理机状态字(PSW)I/O控制逻辑地址寄存器数据寄存器工作寄存器ALU
7、对IR中保存的指令进行译码分析典型CPU内部结构图程序计数器(PC)指令寄存器(IR)指令译码器(ID)控制逻辑部件堆栈指示器(SP)处理机状态字(PSW)I/O控制逻辑地址寄存器数据寄存器工作寄存器ALU用于存放栈顶指针典型CPU内部结构图程序计数器(PC)指令寄存器(IR)指令译码器(ID)控制逻辑部件堆栈指示器(SP)处理机状态字(PSW)I/O控制逻辑地址寄存器数据寄存器工作寄存器ALU用于暂存处理器当前的状态微处理器的一般结构(内部结构)(3)工作寄存器作用:用于暂存用于寻址和计算过程的信息,避免频繁访问内存,缩短指令长度和执行时间,给编程带来方便。分为两组:数据寄存器组和地址寄存器
8、。但有的寄存器兼有双重用途。数据寄存器用来暂存操作数和中间运算结果。地址寄存器用于操作数的寻址。寄存器组CPU内部的若干个存储单元分为专用寄存器和通用寄存器。专用寄存器的作用是固定的,如堆栈指针、标志寄存器等;通用寄存器可有多种用途。寄存器的数目因微处理器而定。CPU总线结构 CPU的内部采用单总线,即内部所有单元电路都挂在内部总线上,分时使用总线。该组总线作为信息在CPU内部流通的唯一途径。ALU工作寄存器组控制器I/O控制逻辑单总线结构微处理器的基本工作过程微处理器的一般结构(外部结构)(1)微处理器的外部就是数量有限的输入输出引脚,即微处理器级总线。微处理器通过微处理器级总线沟通与外部部
9、件和设备之间的联系。微处理器级总线的功能和存储器之间交换信息和I/O设备之间交换信息为了系统工作而接收和输出必要的信号从功能上分,将总线分为三种:数据总线(DB:Data Bus) 用来传送指令或数据地址总线(AB:Address Bus) 指示欲传信息的源或目的地址;控制总线(CB:Control Bus) 管理总线上的活动。 微处理器的一般结构(外部结构)(2)数据总线(DB:Data Bus)微处理器数据总线的条数决定CPU和存储器或I/O设备一次能交换数据的位数,是区分微处理器是多少位的依据。如8086CPU是16位微处理器,Z80CPU是8位微处理器。微处理器的一般结构(外部结构)(
10、3)微处理器的一般结构(外部结构)(4)地址总线(AB:Address Bus)存储器的基本存储单元为字节,每个字节都有唯一的二进制地址码相对应。地址总线的条数即为二进制地址码的位数,它可能表示的不同地址的集合称为地址空间。地址码的位数决定了地址空间的大小。比如8086CPU的地址码共有20位,则地址空间的大小为220,即1MB个字节,地址空间为0220-1微处理器的一般结构(外部结构)(5) I/O接口I/O接口是保证数据、控制与状态信息在CPU和I/O设备之间正常传送的电路I/O接口和CPU之间的通信是利用称为I/O端口的寄存器来完成的一个I/O接口可能包括若干个I/O端口每个I/O端口都
11、有唯一的I/O地址相对应8086的地址总线的低16位用来对I/O端口编址,所以I/O地址空间容量为 (65536)字节。即可对65536个I/O端口寻址。存储器和I/O端口的组织图CPU地址 存储器中的字节0110接口I/O端口I/O设备高位决定模块数据线控制线地址线高位决定接口,2或3个低位选择端口Intel 8086 CPU属于第三代微处理器,8086 CPU有20条地址线,直接寻址能力达1MB。8086 CPU具有16条数据总线,内部总线和ALU均有16位,可进行8位和16位操作,是16位微处理器。8086微处理器的功能结构8086微处理器的功能结构8086CPU从功能上来说分成两大部分
12、: 总线接口单元BIU( Bus Interface Unit ) 执行单元EU( Execution Unit )BIU的作用:负责与存储器的接口,即8086CPU与存储器之间的信息传送,都是由BIU进行的;与I/O设备之间的信息传输EU 的作用:负责指令的执行8086CPU功能框图 通 用 寄 存 器8086CPU功能框图 执行单元 AH ALBH BL CLCH DH DL SP BP DI SI CSDS SS ES I P 内部寄存器 总线 控制 逻辑 AX BX CX DX数据总线暂存器 A L U 标志寄存器 外部总线8086总线(16位) 指令对列 8086为 6 字节ALU数
13、据总线(16位)EU控制器总线接口单元(BIU) 地址加法器(20 位)数据总线(16 位) 段寄存器指令指针(EU)1 2 3 4 5 6队列总线(8位) 地址总线8086微处理器的功能结构总线接口单元(BIU)BIU包括个段寄存器、指令指针IP(PC)、指令队列寄存器(IR)、完成与EU通讯的内部寄存器、地址加法器和总线控制逻辑。它的任务是执行总线周期,完成CPU与存储器和I/O设备之间信息的传送。具体地讲,就是取指令时,从存储器指定地址取出指令送入指令队列排队;执行指令时,根据EU命令对指定存储单元或I/O端口存取数据。8086微处理器的功能结构执行单元(EU)EU由算术逻辑单元ALU、
14、暂存器、标志寄存器(PSW)、通用寄存器组和EU控制器构成。它的任务执行指令,进行全部的算术逻辑运算,完成偏移地址的计算,向BIU提供指令执行的结果和地址,并对通用寄存器和标志寄存器进行管理。16位的ALU总线和8位队列总线用于EU内部和EU与BIU之间的通信。8086的指令流水线(1)一条指令的执行过程:8086出现以前,以上指令串行执行指令的执行采用单流水线的形式。则指令花费时间=取指时间+执行时间取指1执行1存结果1取指2执行2取指3执行3取操作数3CPUBUS忙忙忙忙忙闲闲闲8086以前的处理器取指执行取指执行8086的指令流水线(2)8086内部有BIU、EU两个独立单元,可独立完成
15、总线操作和执行指令的任务,即两个单元可重叠操作流水线就是两次重叠或多次重叠操作8086处理器执行1执行2执行3执行3执行4取指1取指2存结果1取指3取操作数3取指4存结果3取指5忙忙忙忙忙忙忙忙EUBUSBIU2.28086的寄存器结构 8086CPU内部具有14个16位寄存器,用于提供运算的数据、控制指令执行和对指令及操作数寻址。基本分为通用寄存器组、控制寄存器组和段寄存器组。通用寄存器组 8个16位通用寄存器组分为两组:数据寄存器及地址指针和变址寄存器。AH累加器AXALBHBLCHCLDLDHSPBPSIDICSDSSSESIPFLAGS基址寄存器BX计数寄存器CX数据寄存器DX堆栈指针
16、基址指针源变址寄存器目的变址寄存器指令指针标志寄存器代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器数据寄存器地址指针和变址寄存器通用寄存器控制寄存器段寄存器组158708086的寄存器结构(1)8086的寄存器结构(1)BHBLAHALCHCLDHDL堆栈指针寄存器基址指针寄存器源变址寄存器目的变址寄存器通用寄存器控制寄存器指令指针寄存器状态标志寄存器代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器段寄存器AXBXCXDXSPBPDISICSDSSSESIPFLAGS8086的寄存器结构(2)数据寄存器4个:累加器AX,基址寄存器BX,计数寄存器CX,数据寄存器DX特点:可分为高8位(AH、
17、BH、CH、DH)和低8位(AL、BL、CL、DL)。这两组八位寄存器能分别寻址。这样,可以将数据寄存器当作一个16位寄存器,也可用作两个8位寄存器可用来存放8位或16位二进制操作数,这些操作数可以是参加操作数、中间结果或操作数地址大多数算数和逻辑运算指令可以使用这些寄存器8086的寄存器结构(3)指针和变址寄存器4个:堆栈指针SP,基址指针BP,源变址寄存器SI,目的变址寄存器DI特点:这4个16位寄存器只能按16位进行存取操作,主要用来形成操作数的地址,用于堆栈操作和变址运算中计算操作数和有效地址SP,BP用于堆栈操作,SP用来确定堆栈在内存中的地址,BP用来存放在现行堆栈段的一个数据区的
18、“基址”SI,DI用于变址操作,存放变址地址这4个寄存器也可用作数据寄存器通用寄存器的特定用法8086的寄存器结构(4) 控制寄存器-指令指针IP16位专用寄存器,保存下一条要执行的指令的偏移地址当BIU从内存中取出一个指令字节后,IP自动加1,指向下一个字节IP指向的是指令地址的段内地址偏移量,又称偏移地址或有效地址程序员不能对IP进行存取操作,程序中的转移指令、返回指令以及中断处理能对IP进行操作8086的寄存器结构(5)控制寄存器-标志寄存器FLAGS15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 CFPFAFZFSFTFIFDFOF 16位,其中有6个状态位
19、,3个控制位 6个状态位有:CF、PF、AF、ZF、SF、OF 3个控制位有:IF、DF、TF注:标志寄存器FLAGS反映的是ALU运算后结果的状态8086的寄存器结构(6)标志寄存器FLAGS(状态位)进位标志CF,反映算数运算后,最高位(字节操作为D7,字操作为D15)出现进位或借位的情况,有则为“1”奇偶标志PF,反映操作结果的低八位中“1”的个数的情况,若为偶数,则PF=1辅助进位标志AF,反映一个8位量的低4位向高4位有无进位或借位的情况,有则置“1” 。这个标志位用于实现BCD码算术运算结果的调整零标志ZF,反映运算结果是否为0的情况,结果为0,ZF置为“1”,否则为“0”8086
20、的寄存器结构(7)标志寄存器FLAGS(状态位)符号标志SF,反映运算结果的符号情况,若结果为负数,SF为“1”,否则为“0”。SF的取值与运算结果最高位(字节操作为D7,字操作为D15)一致。溢出标志OF,反映带符号数运算结果是否超过机器所能表示的数值范围的情况,对字节运算为-128 +127,对字运算为-32768 +32767。若超过上述范围则称为“溢出”,OF=1,否则为“0”。1514131211109876543210OFDFIFTFSFZFAFPFCF0101 0100 0011 1001+ 0100 0111 0110 10101001 1011 1010 0011110110
21、标志寄存器FLAGS(状态位)8086的寄存器结构(8)标志寄存器FLAGS(控制位)方向标志DF,在进行字符串操作时,每执行一条串操作指令,对地址要进行一次调整,由DF决定地址是增还是减。若DF=1,则为减量;DF=0,则为增量。中断允许标志IF,表示系统是否允许外部可屏蔽中断(INTR引脚)。若IF=1,表示允许中断, IF=0,表示不允许中断。IF对不可屏蔽中断(NMI引脚)及内部中断请求不起作用。跟踪标志TF,当TF=1时,CPU每执行完一条指令,便自动产生一个内部中断,对程序进行逐条检查,常用于程序的调试。8086的寄存器结构(9)段寄存器内存中通常存放三种信息: 代码(指令):计算
22、机执行何种操作 数据(字符、数值):程序处理的对象 堆栈信息:保存返回地址和中间结果用汇编语言设计的程序中的信息也就是这三类信息。而8086、8088汇编语言规定,不同的信息要存放在不同的存贮段,这些存贮段的存贮器段地址(段基址)要由各自的段寄存器提供8086的寄存器结构(10)8086系统中把可直接寻址的1M字节内存空间分为称作段的逻辑区域,每个段的物理长度为64K字节。每个段的起始地址的有关值存放在称为段寄存器的4个16位寄存器中代码段寄存器CS:指向当前的代码段,指令由此段取出数据段寄存器DS:指向当前数据段,通常用来存放程序变量堆栈段寄存器SS:指向当前的堆栈段,堆栈操作所需的就是 该
23、段存储单元的内容附加段寄存器ES:指向当前附加段,通常也用来存储数据8086/8088的存储器都是以字节(8位)为单位组织的。它们具有20条地址总线,所以可寻址的存储器地址空间容量为 220 (约)字节。每个字节对应一个唯一的地址,地址范围为02201 (用16进制表示为00000H FFFFFH),如下图所示。2.38086的存储器组织存储器地址空间8086的存储器组织(1)存储器地址空间存储空间按字节(8位)进行组织,每个存储单元存储一个字节的数据,若存放“字”数据(16位),则存放在相邻两个存储单元之中,高字节存放在高地址单元,低字节存放在低地址单元字的地址为低字节的地址。各位的编号从0
24、开始。8086的存储器组织(2)数据存储格式15141312111098765432107654321076543210地址=N+1地址=N(高字节)(低字节)字地址8086的存储器组织(2)数据存储格式8086允许字从任何地址开始字的地址为偶地址时,称字的存储是对准的;为奇地址时,则字的存储是未对准的访问对准的字,需要一个总线周期;访问未对准的字,则需要两个总线周期(CPU自动完成)8086的存储器组织(3)为什么存储器要分段8086/8088CPU有20条地址线(A19A0),能寻址外部存贮空间为 =1MB,而在8088/8086CPU内部能向存贮器提供地址码的地址寄存器有六个,均为16位
25、,所以用这六个16位地址寄存器任意一个给外部存贮器提供地址,只能提供 =64K个地址,所以,对1MB地址寻址不完。这六个16位地址寄存器分别为:BX 基址寄存器BP 基址指针寄存器SI 源变址寄存器SP 堆栈指针寄存器DI 目的变址寄存器IP 指令指针寄存器为了使8086CPU能寻址到外部存贮器1MB空间中任何一个单元,8086巧妙地采用了地址分段方法(将1MB空间分成若干个逻辑段),从而将寻址范围扩大到了1MB。8086的存储器组织(3)怎么分段1MB的存贮空间中,每个存贮单元的实际地址编码称为该单元的物理地址(用PA表示)把1MB的存贮空间划分成若干个逻辑段,每段最多64KB一个段是存储器
26、的一个逻辑单位,其长度可达64KB,每个段都有连续的存储单元构成,是存储器中独立的可分别寻址的单位每段第一个字节的位置称为“段起始地址”,可由软件指定各逻辑段的起始地址的最低4位必须为0,即必须能被16整除(即XXXX0H)几个段可以相互重叠,也可指向同一空间8086的存储器组织(3)一个段的起始地址的高16位自然数为该段的段地址。显然,在1MB的存贮空间中,可以有216个段地址。每个相邻的两个段地址之间相隔16个存贮单元。在一个段内的每个存贮单元,可以用相对于本段的起始地址的偏移量来表示,这个偏移量称为段内偏移地址,也称为有效地址(EA)。段内偏移地址也用16位二进制编码表示。所以,在一个段
27、内有216 =64K个偏移地址(即一个段最大为64KB)。8086的存储器组织(3)在一个64KB的段内,每个偏移地址单元的段地址是相同的,所以段地址也称为段基址。由于相邻两个段地址只相隔16个单元,所以段与段之间大部分空间互相覆盖(重叠)。8086的存储器组织(3)段基址与段内偏移量8086与存储器之间所有信息的交换都要使用20位的物理地址,而程序中所涉及到的地址都是16位的逻辑地址,对所给定的任一存储单元而言,有两部分逻辑地址: “段基址”:决定了该段第一个字节的位置 “段内偏移量”:该存储单元相对于该段起点字节的距离段基址存放在段寄存器CS、DS、SS、ES中段内偏移量由IP、SP、SI
28、、DI、BX、BP以及相应寄存器的组合而组成8086的存储器组织(4)逻辑地址与物理地址在具有地址变换机构的计算机中,有两种存储器地址: 逻辑地址:允许在程序中编排的地址 物理地址:信息在存储器中实际存放地址在8086系统中,每个存储单元也都认为有这两类地址逻辑地址的表示格式为: 8086的存储器组织(5)一个存储单元用逻辑地址表示后,CPU 对该单元的寻址就应提供两部分地址段地址由段寄存器提供段内有效地址-由地址寄存器提供物理地址的形成存储单元的20位物理地址是通过将16位的段基址左移4位,再加上16位的偏移地址而形成的,即 物理地址=段基址*10H+段内偏移量例如:6000:0280的物理
29、地址为60280H8086的存储器组织(5) 8086CPU中BIU单元的地址加法器可用来完成物理地址的计算8086的存储器组织(6)信息的分段存储与段寄存器的关系表 各种类型访问存储器时的地址成分内存访问类型默认段寄存器可指定段寄存器段内偏移地址来源123456取指令堆栈操作源串目的串BP用作基址寻址一般数据存取CSSSDSESSSDS无无CS、ES、SS无CS、ES、DSCS、ES、SSIPSPSIDI按寻址方式计算得到的有效地址按寻址方式计算得到的有效地址8086的存储器组织(7)段寄存器的使用约定任何类型访问存储器时,其段地址要么由默认段寄存器提供,要么由“指定”的段寄存器提供。808
30、6微处理器的BIU单元设有4个段寄存器(CS、DS、SS、ES),所以CPU可以通过这4个段寄存器来访问4个不同的段。用程序对段寄存器的内容进行修改,可实现访问所有的段。段寄存器DS、ES和SS的内容是用传送指令置入的,但任何传送型指令不能向段寄存器CS置入数,但一些指令可以设置和影响CS的内容,如:ASSUME伪指令、JMP、CALL、RET、INT和IRET。表中前四项指明了一个16位的指针寄存器或变址寄存器作为段内偏移地址的来源,其它都要按指令码规定的寻址方式求得。2.4 8086的I/O组织I/O接口是保证信息和数据在CPU和I/O设备之间正常传送的电路。I/O端口是I/O接口内的寄存
31、器,跟存储单元相同,也是以字节为单位编址,一个I/O端口有唯一的I/O地址相对应。8086地址总线的低16位用来对8位I/O端口寻址,所以8086的I/O地址空间为64K,可以访问64K个I/O端口与存储器类似,任何两个地址连续的8位I/O端口,都可以当作一个16位I/O端口,类似于存储器的字。对8086CPU来说,也象存储器的字那样,要实现奇地址的16位I/O端口输入输出,都必须访问两次。8086CPU与存储器、I/O设备的连接高位决定接口,2或3个低位选择端口CPU地址 存储器中的字节0110接口I/O端口I/O设备高位决定模块数据线控制线地址线由于存储器划分为模块,所以存储器地址的高几位
32、可用来选择模块,其余低位则用来标识该模块内的字节或字。同样,利用I/O地址中的高位来标识I/O接口,而用2或3个低位来选择该接口内的I/O端口。存储器和I/O端口的组织(1)地址总线的条数就是二进制地址码的位数,它能够表示的不同地址的集合称为地址空间。存储单元和I/O端口在同一地址空间,这种方法称为统一编址,它们的存取指令是一样的;而两者在两个独立的地址空间,它们的地址码的位数不同,采用的存取指令是不一样的,这种方法称为独立编址。地址码的位数决定了地址空间的大小。若地址码共n位,则可以有2n个地址。对于单地址空间的CPU的处理器,则存储器和I/O端口合在一起的空间容量为2n个字节。对于独立空间
33、的来说,地址总线的条数决定了存储器地址空间的容量;地址总线中用于I/O端口编址的条数决定I/O地址空间的容量。存储器和I/O端口的组织(2) 例如在8086CPU系统中,地址总线的条数为20条,则存储器的最大容量为220,即1MB字节;它的地址总线的低16位用来对I/O端口编址,则I/O地址空间的容量为216,即64K个I/O端口地址。存储器和I/O端口的组织(3)2.58086的寻址方式寻址方式分为数据寻址方式和转移地址寻址方式数据的寻址方式就是通过地址查找数据(操作数),告诉CPU存/取数据的地方。数据寻址方式通常有4类:立即数寻址:数据与指令操作码一起,用常量表达寄存器寻址:数据在寄存器
34、中,用寄存器名表示存储器寻址:数据在主存中,用存储器地址代表直接寻址寄存器间接寻址寄存器相对寻址基址变址寻址基址变址且相对寻址隐含寻址操作数紧跟操作码,是指令机器代码的一部分操作数从指令代码中立即得到,即立即数,用常量形式直接表达。立即数寻址方式只用于源操作数,常用来给寄存器和存储单元赋值。例如:MOV AX,0102H机器代码:B8 02 01操作码:B8立即数:0102立即寻址立即寻址存储器 9ABC 1234 F5B80102 代码段数据段MOV AX, 0102HAXAHAL010230000H31000H31001H32000H32001H 操作数为立即数,直接存放在代码段中 操作数
35、存放在处理器的内部寄存器中用寄存器名表示它的内容绝大多数指令采用通用寄存器寻址部分指令支持专用寄存器,例如段寄存器在程序设计中,一般存放数据时,寄存器选择通用寄存器,而存放结果时尽可能的使用AX累加器,因为使用AX累加器要比用其它寄存器存放结果,指令执行时间要短一些寄存器寻址方式简单快捷,既可以用于源操作数,也可以用于目的操作数,最常使用寄存器寻址8位通用寄存器:AH AL BH BL 16位通用寄存器:AX BX CX DX 32位通用寄存器:EAX EBX ECX EDX 段寄存器:CS DS SS ES AX12A6HBX12A6H 例如:MOV AX,BX存储器寻址操作数在主存中编程时
36、主存使用逻辑地址:段地址和偏移地址段地址可以使用默认逻辑段,不用显式说明一般是DS指向数据段采用BP或SP作为基地址时,默认SS指向堆栈段段地址必要时使用段地址前缀显式说明 段寄存器名后跟英文冒号 CS DS SS ES存储器寻址的种类:直接寻址、寄存器间接寻址、寄存器相对寻址、寄存器基址变址寻址、寄存器基址变址相对寻址直接寻址(1)存储器 9ABC 1234 F5 1000 代码段数据段30000H31000H31001H32000H32001HMOV AX, 1000HAXAHAL1234DS30000100031000物理地址 操作数在内存单元中 直接给出数据的偏移地址,默认在数据段中
37、在实际的汇编语言程序设计中,如果程序比较复杂,而用到的存放数据的单元又很多,那么在直接寻址方式当中,用户就要记住存放数据的每个单元的地址,同时还要记住该地址单元存放的数据的意义,这样对设计程序带来了很大的困难。所以在实际的汇编语言程序设计中,常常采用给存放数据的单元,定义一个符号地址名,即变量名/变量。 变量名一但定义了,就具有了五个属性: 该单元的段地址 该单元的偏移地址 类型 大小 长度 这样,在程序设计中就可以用这个变量名代替原来的存储器单元的实际地址。直接寻址(2)直接寻址(3)有效地址只有位移量,直接包含在指令代码中例如: MOV AX, DS:2000H指令代码:A1 00 20操
38、作码:A1操作数:有效地址 2000例如: MOV AX, DATA1指令代码:A1 34 12操作码:A1操作数:变量在主存的有效地址 1234主存操作数常通过变量形式引用一般不需要使用段地址前缀寄存器间接寻址(1)操作数在内存单元中(寄存器内容偏移地址)数据的偏移地址由指定的寄存器给出: BX,SI或DI其段地址默认在DS段MOV AL,BX ;字节量传送,16位有效地址MOV AX,SI;字量传送,16位有效地址MOV WORD PTR BP,1234H ;字量传送,16位有效地址用中括号括起寄存器寄存器间接寻址寄存器间接寻址没有说明存储单元类型EA =(BX)(SI)(DI)寄存器间接
39、寻址(2)存储器 9ABC 1234 F5 代码段数据段30000H31000H31001H32000H32001HMOV AX, BXAXAHAL1234DS30000100031000物理地址BX操作数寄存器相对寻址(1) 操作数在内存单元中 数据的偏移地址是位移量和一个基址寄存器(BX、BP)或变址寄存器(SI、DI)的内容之和在DISP为常数时,操作数所在单元的段地址以寄存器为准若寄存器为BX、SI、DI,操作数默认在DS段中。若寄存器为BP,操作数默认在SS段中在DISP为变量时,操作数所在单元的段地址以变量为准,变量在哪个段定义的,就取该段的段地址EA =(BX)(BP)(SI)(
40、DI)+8位DISP16位DISP有效地址是寄存器内容与位移量之和MOV AX,DI+06H;AXDS:DI+06H寄存器:DI位移量:06H有效地址:EADI06HMOV AX,BP-06h;AXSS:BP-06H使用BP寄存器,默认配合SS段寄存器寄存器相对寻址(2)寄存器相对寻址(3)存储器 9ABC 1234 F5 0500 代码段数据段30000H31000H31001H32000H32001HMOV AX, dispSIAXAHAL1234DS300000B0031000物理地址SI操作数0500disp举例: 若(DS)=1500H,TABLE为在DS段定义的一个字变量,且偏移地
41、址为0004H,(BP)=0003H。 MOV AX ,TABLE BPSRC的寻址方式为寄存器相对寻址。指令完成的操作为: (AX) (DS: OFFSET TABLE+(BP)寄存器相对寻址(4)基址变址寻址(1) 操作数在内存单元中 数据的偏移地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和该单元的段地址以基址寄存器为准,若基址寄存器为BX,则段地址默认在DS中,若基址寄存器为BP,则段地址默认在SS中便于支持一维数组等数据结构EA =(BX)(BP)+(SI)(DI)基址变址寻址(2)存储器 9ABC 1234 F5 代码段数据段30000H31000H310
42、01H32000H32001HMOV AX, BXSIMOV AX, BX+SIDS30000100032000物理地址BX操作数1000SIAXAHAL9ABC基址变址且相对寻址(1)操作数在内存单元中。数据的偏移地址是位移量,一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容三部分之和。有效地址基址寄存器变址寄存器位移量便于支持两维数组等数据结构MOV AX,BX+SI+06H ;AXDS:BX+SI+06H允许两个寄存器都用中括号,位移量在中括号前MOV AX,06HBX+SI ;AXDS:BX+SI+06HMOV AX,06HBXSI ;AXDS:BX+SI+06H+EA
43、 =(BX)(BP)+(SI)(DI)8位DISP16位DISP基址变址且相对寻址(2)存储器 9ABC 1234 F5 0500 代码段数据段30000H31000H31001H32000H32001HMOV AX, dispBXSIDS30000100032000物理地址BX操作数0B00SIAXAHAL9ABC0500disp隐含寻址有些指令码中不包含指明操作数地址的部分,而其操作码本身隐含地说明了操作数地址。 如:乘除法指令、字符串操作类指令等例如:MULCL;其操作为(AX)(AL)(CL)在这里,AL操作数并没有在指令中指明,是由操作码本身隐含地说明了数据的寻址方式小结基址寄存器
44、变址寄存器 位移量指令变址值基址值数据内存+寄存器寻址寄存器数 据指令 寄存器数据指令立即寻址例题若(BX)0158H,(DI)10A5H,位移量1B57H,(DS)2100H,(SS)1100H,(BP)0100H,段寄存器按默认段寄存器,则相对于各种寻址方式的有效地址和物理地址是:直接寻址:EA1B57H物理地址(DS)10HEA21000H1B57H22B57H寄存器间接寻址(假设寄存器为BX):EA0158H物理地址(DS)10HEA21000H0158H21158H寄存器相对寻址(假设寄存器为BP) EA0100H1B57H1C57H物理地址(SS)10HEA11000H1C57H1
45、2C57H基址变址寻址(假设寄存器为BX和DI) EA0158H10A5H11FDH物理地址(DS)10HEA21000H11FDH221FDH基址变址且相对寻址(假设寄存器为BP和DI) EA0100H10A5H1B57H2CFCH物理地址(SS)10HEA11000H2CFCH13CFCH例题转移地址的寻址方式指令是按顺序存放在存储器中的,其执行顺序是由代码段寄存器CS和指令指针IP的内容决定的。在正常的情况下,BIU自动修改IP的内容,使它指向下一条指令。程序转移指令通过改变IP和CS的内容,就可以改变程序的正常执行顺序。转移地址的寻址方式指寻找的操作数作地址用,给IP或给CS:IP,从
46、而实现程序的转移。如果程序转移后只有IP发生了改变,则称为段内转移或者称为近程转移(也称为NEAR型转移)。如果程序转移后CS、IP均发生了改变,则 称为段间转移或者称为远程转移(也称为FAR型转移)。转移地址的寻址方式程序转移时的目的地址表示法 转移地址的寻址方式有4种:段内直接寻址段内间接寻址段间直接寻址段间间接寻址 8086指令系统中的转移指令有两大类: 无条件转移指令:有JMP、CALL、RET、IRET 条件转移指令:如JZ、JC、JCXZ、LOOP等转移地址的寻址方式段内直接寻址:转移的目的地址与当前指令在同一个段,通常用目的地址标号表示。JMP MAIN段内间接寻址:转移的目的地
47、址与当前指令在同一个段,通常用一个16位的地址表示目的地址。JMP BX段间直接寻址:目的地址与当前指令不在同一个段,通常用目的地址标号表示。JMP FAR PTR MAIN1段间间接寻址:目的地址与当前指令不在同一个段,通常用一个32位的地址表示目的地址。JMP DWORD PTR DATA1转移地址的寻址方式段内直接寻址JMP指令的操作数部分直接给出目标单元指令所在存储单元的地址的形成: CS*10H+(IP) (IP)=(IP)disp(8位或者16位)例如:.JMP ABC1. ABC1: . 注:8086指令系统当中的所有条件转移指令只能在段内转移,且转移范围以当前IP为基准,不能超
48、出-128+127之间,其寻址方式为段内相对寻址。段内间接寻址JMP指令转移的目标地址在某一个通用寄存器中或者在某一个字存储单元中指令所在存储单元的地址的形成: CS*10H+(IP) (IP) EA(存在寄存器或存储器单元中)例如: JMP CX或者JMP WORD PTR BX段间直接寻址指令码中直接给出16位的段地址和16位的有效地址。指令所在存储单元的地址的形成: (IP) EA(指令) (CS) 段地址(指令)例如:COSEG1 SEGMENT. JMP FAR PTR TRAGET.COSEG1 ENDSCOSEG2 SEGMENT. TRAGET: -.COSEG2 ENDS 段
49、间转移地址的寻址方式,只适合于无条件转移指令段间间接寻址段间间接寻址和段内间接寻址相似,要得到的转移地址包括16位段地址和16位有效地址,使用地址连续的4个存储单元存储指令所在存储单元的地址的形成: (IP)EA(存储单元的前两个字节)(CS)段地址(存储单元的后两个字节)例如: JMP DWORD PTR ADDRBX或者 JMP DWORD PTR BXSI2.680X86系列高档微处理器简介与8086相比,80286以上至奔腾系列高档微处理器的内部结构要复杂得多,这些内容不可能在一门课程中详细叙述。下面,以已经获得的8086内部结构的知识为基础,用相比较的方法,简单介绍高档微处理器内部的
50、寄存器结构和存储器组织。高档微处理器简介高档微处理器内部的寄存器结构和存储器组织,除了使高档微处理器具有更强的数据处理能力之外,重要一点是高档微处理器支持像Windows这样的多任务操作系统。高档微处理器所具有的大软件(字节多)运行、多任务运行、组织大容量的虚拟存储器等高级功能,要求其CPU内部有相应的逻辑电路支持。2.6.1高档微处理器的寄存器结构图2.11是奔腾等高档微处理器中程序可见的寄存器结构存取16位寄存器,高16位不受影响存取8位寄存器,16/32位寄存器其他位不受影响2.6.2高档微处理器的访问存储器机制奔腾微处理器可以访问存储器空间位4 GB。采用虚拟存储技术,还可以大大扩展存
51、储空间。下面介绍微处理器是以怎样的硬件逻辑支持这一功能的。CPU性能每18个月增加一倍晶体管数目每两年增加一倍摩尔定律后面是什么?Itanium733/800MHzIA-64架构McKinleyIA-64架构MadisonIA-64架构DeerfieldIA-64架构Pentium Pentium MMXPentium Pro80486DX280386DX802868086奔腾不息 升级不止8028616位数据线,24根地址线逻辑上有4个独立的处理元件:执行部件EU,地址部件AU,总线部件BU,指令部件IU三组寄存器:通用寄存器、段寄存器、状态和控制寄存器具有实地址和虚地址保护方式实地址方式与
52、8086工作方式基本相同,为了和8086兼容,80286的24根地址线中只有低20位A19 A0有用,因此,在实地址方式可寻址空间为1MB虚地址保护方式支持对虚拟存储器的管理,使用24根地址线A23 A0,可直接寻址16MB空间8086只能工作于实模式。在实模式下,CPU只能访问地址低端的1MB存储器。各种微处理器在每次加电或复位后都默认以实模式开始Windows可以工作于保护模式。保护模式允许访问低端的1MB存储区和高于1MB以上的存储区。在保护模式下,段寄存器存储的不再是段地址,而是与段地址相关的选择符。实模式与保护模式8038632位数据线,32根地址线。逻辑上有6个独立的处理元件:总线接口部件、代码预取部件、指令译码部件、存储器管理部
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论