




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、主讲:何碧霞、万智萍主讲:何碧霞、万智萍v8086 初始芯片时钟频率为4.77MHz 内部数据总线和外部数据总线都是16位 地址总线为20位,可最大寻址1MB的存储空间v80386 80 x86家族的第一个32位处理器 内部和外部数据总线都是32位 地址总线也是32位,可寻址高达4GB内存 具有实模式和保护模式外,还增加了一种叫虚拟86的工作方式,可以通过同时模拟多个8086处理器来提供多任务能力 8086/8088微处理器的结构相似微处理器的结构相似,都由都由算术逻算术逻辑运算单元辑运算单元ALUALU、专用和通用寄存器、指令寄存器、专用和通用寄存器、指令寄存器、指令译码器、定时器控制电路指
2、令译码器、定时器控制电路等等组成。按功能可把组成。按功能可把CPU分成两大部分成两大部:执行单元(执行单元(Execution UnitExecution Unit)和总总线接口单元(线接口单元(BusBus Interface UnitInterface Unit)如图如图2-1所示所示,图中左半部分为执行单元图中左半部分为执行单元,简称简称EU。右半部分为总右半部分为总线接口单元线接口单元,简称简称BIU。BIU与外部总线相连与外部总线相连,完成完成与外设与外设(或存储器或存储器)的数据传送的数据传送,包括取指令操作包括取指令操作、存储器读存储器读/写数据操作写数据操作、I/O接口的读接口
3、的读/写操作写操作。EU通通过过BIU得到信息得到信息,其功能就是负责指令的执行其功能就是负责指令的执行。BIU和和EU两个单元可以并行工作两个单元可以并行工作。这样提高这样提高CPU的工作速的工作速度度。图图2-1 80862-1 8086微处理器内部结构示意图微处理器内部结构示意图一、执行单元与总线接口单元 执行单元执行单元EUEU由由8 8个通用寄存器、个通用寄存器、1 1个标志寄存器、算术个标志寄存器、算术逻辑运算单元逻辑运算单元ALUALU及及EUEU控制电路组成控制电路组成;EU从从BIU指令队列寄指令队列寄存器中获得指令和待处理数据进行操作存器中获得指令和待处理数据进行操作。将指
4、令代码译码将指令代码译码后后,发出相应的控制信息发出相应的控制信息,将数据在将数据在ALU中进行运算中进行运算,运运算结果的特征保留在标志寄存的算结果的特征保留在标志寄存的FLAGSFLAGS中中。 总线接口单元总线接口单元BIUBIU包括包括4 4个段寄存器、个段寄存器、1 1个指令指针寄个指令指针寄存器、存器、1 1个与个与EUEU通读寄存器通读寄存器。一个先入先出的一个先入先出的6个字节个字节(8088是是4个字个字节)指令队列指令队列。总线控制逻辑电路及总线控制逻辑电路及20位位实际物理地址计算的加法器实际物理地址计算的加法器。1 1执行单元执行单元EUEU2.2.总线接口单元总线接口
5、单元BIUBIU(一)、总线接口单元BIU(Bus Interface Unit)v功能:负责与 Memory、I/O 端口传送数据。 取指令时,从存储器指定地址取出指令送入指令队列排队。 执行指令时,根据EU命令对指定存储器单元或I/O端口存取数据。 v组成 4 个段地址寄存器(CS、DS、ES、SS) 16位指令指针寄存器IP 20位的地址加法器(16d段地址+偏移地址物理地址) 6字节(8086)或4字节(8088)的指令队列 总线控制电路: 处理器与外界总线联系的转接电路。包括三组总线:20 位地址总线, 16 位双向数据总线,一组控制总线。v指令队列8086 的指令队列为6个字节,8
6、088 的指令队列为4个字节。v不论是8086还是8088都会在执行指令的同时从内存中取下一条或几条指令,取来的指令放在指令队列中,使 BIU 具有预取指令的功能,是一种先进先出(FIFO)的数据结构。v指令执行顺序 顺序指令执行:指令队列存放紧接在执行指令后面的那一条指令。 执行转移指令:BIU 清除指令队列中的内容,从新的地址取入指令,立即送往执行单元,然后再从新单元开始重新填满队列。(二)、执行单元EU ( Execution Unit ) v 功能 执行指令,进行全部算术逻辑运算、完全偏移地址的计算 向总线接口单元BIU提供指令执行结果的数据和偏移地址,并对通用寄存器和标志寄存器进行管
7、理。v 组成: 4个通用寄存器:AX、BX、CX、DX 4个专用寄存器:BP、SP、SI、DI 标志寄存器(PSW): 9个标志位,其中6个条件标志位用于存放结果状态, 算术逻辑单元: 16 位加法器,用于对寄存器和指令操作数进行算术或逻辑运算, EU 控制系统: 接受从总线接口单元的指令队列中取来的指令代码,对其译码和向 EU 内各有关部分发出时序命令信号,协调执行指令规定的操作。取指令取指令 指令译码指令译码 执行指令执行指令指令的一般执行过程:指令的一般执行过程:(三)、流水线工作方式v 8086/8088取指部分与执行部分是分开的。 在一条指令的执行过程中可以取出下一条(或多条)指令,
8、指令 在指令队列中排队; 在一条指令执行完成后,就可以立即执行下一条指令,减少CPU为取指令而等待的时间,提高CPU的利用率和整个运行速度。v 8086/8088微处理器: BIU和EU分开,取指和执行可以重迭, 大大减少了等待取指所需的时间,提高CPU的利用率。取指取指取指取指取指取指取指取指得到数据得到数据等待等待执行执行执行执行执行执行执行执行(三)、流水线工作方式(cont.)v对于8080与8085及较早的8位微处理器: 程序执行由取指令和执行指令的循环来完成的。 每条指令执行完后CPU必须等待到下条指令取出来后才能执行。取指取指执行执行取指取指执行执行.取指取指执行执行时间坐标时间
9、坐标二、8086/8088的寄存器结构 8086内部寄存器按其功能可分为内部寄存器按其功能可分为:通用寄存器通用寄存器(8个),段寄存器段寄存器(4个),控制寄存器控制寄存器(2个)。8086CPU中有14个16位的寄存器。8个16位通用寄存器;2个16位指针寄存器;2个16位的变址寄存器;4个16位的段寄存器;1个16位指令指针;1个16位标志寄存器。8086/8088 CPU的内部寄存器如图2-2所示。 图图2-2 8086/8088 CPU2-2 8086/8088 CPU内部寄存器内部寄存器 15 8 7 0SPBPSIDI堆栈指针寄存器堆栈指针寄存器基址指针基址指针寄存器寄存器源变址
10、寄存器源变址寄存器目的变址寄存器目的变址寄存器指针和变址指针和变址寄存器寄存器代码段寄存器代码段寄存器数据段寄存器数据段寄存器堆栈段寄存器堆栈段寄存器附加段寄存器附加段寄存器段寄存器组段寄存器组CSDSSSES指令指针寄存器指令指针寄存器标志寄存器标志寄存器控制寄存器控制寄存器组组IPFLAGS累加器累加器基址寄存器基址寄存器计数寄存器计数寄存器数据寄存器数据寄存器数据数据寄存器寄存器AX AH ALBX BH BLCX CH CLDX DH DL通通用用寄寄存存器器组组 通用寄存器的包括数据寄存器通用寄存器的包括数据寄存器、地址指针寄存器和地址指针寄存器和变址寄存器变址寄存器。 数据寄存器数
11、据寄存器有数据寄存器数据寄存器有AXAX、BXBX、CXCX、DXDX都是都是16位寄存器位寄存器,这四个这四个16位寄存器可分为高位寄存器可分为高8位和低位和低8位两部位两部分使用分使用,也就是说也可作也就是说也可作8位寄存器使用位寄存器使用。高高8位表示成位表示成:AHAH、BHBH、CHCH、DHDH,低低8位表示成位表示成:ALAL、BLBL、CLCL、DLDL。参与参与运算的数是运算的数是16位数时位数时,可用可用AX、BX、CX、DX中的任意一中的任意一个描述个描述,如果参与运算的数据是如果参与运算的数据是8位数时可用位数时可用AH、AL、BH、BL、CH、CL、DH、DL中的任意
12、一个描述中的任意一个描述。一般情况下一般情况下,这四个数据寄存器就是用于存放参与运算的数据或运算这四个数据寄存器就是用于存放参与运算的数据或运算结果的结果的。但这四个寄存器又有自己特殊的用法但这四个寄存器又有自己特殊的用法。1.1.通用寄存器通用寄存器 AX(Accumulator)累加器累加器,是指令系统中应用最是指令系统中应用最多的寄存器多的寄存器,输入输入/输出只能用输出只能用AXAX寄存器传递数据寄存器传递数据,它它经常存放运算的中间结果经常存放运算的中间结果,并参与下次运算并参与下次运算,所以叫累所以叫累加器加器。 BX(base Register)基址寄存器基址寄存器,它通常用来存
13、它通常用来存放内存的基地址放内存的基地址,用于寄存器寻扯用于寄存器寻扯。 CX(count Register)计数寄存器计数寄存器,在循环和串操循环和串操作指令中作指令中,用于计数重复次数用于计数重复次数。 DX(Data Register)数据寄存器数据寄存器,通常用来存放通常用来存放运算结果运算结果。如乘法运算后如乘法运算后DX与与AX合起来存放合起来存放32位数的运位数的运算结果算结果,其中其中DX存放高存放高16位位。在输入在输入/输出操作中输出操作中,可可用用DX作为端口地址的寄存器间接寻址作为端口地址的寄存器间接寻址。 地址指针寄存器地址指针寄存器 地址指针寄存器有地址指针寄存器有
14、SP和和BP两个两个。 SP(stack pointer)叫堆栈指示器叫堆栈指示器,用于指示当,用于指示当前堆段中栈顶所在的存储单元地址前堆段中栈顶所在的存储单元地址。(堆栈在后面介堆栈在后面介绍绍)。 BP(base pointer)叫基址指示器叫基址指示器,用于指示当前用于指示当前堆栈段中一个数据区基址的偏移地址堆栈段中一个数据区基址的偏移地址,通过它间接寻址通过它间接寻址可对堆栈段中的某个数据进行存取可对堆栈段中的某个数据进行存取。 SP和和BP只能用于堆栈段只能用于堆栈段,不能指示其它段不能指示其它段。(存储存储器是按段管理的器是按段管理的,后续介绍后续介绍)。但但SP和和BP应用上是
15、有区应用上是有区别的别的,SP可用于可用于PUSH、POP、CALL、RET等指令等指令,而而BP不不能用于这些令能用于这些令(后续介绍后续介绍)。 变址寄存器变址寄存器SISI、DIDI SI SI(source Indexsource Index)叫源变址寄存器)叫源变址寄存器,一般用于,一般用于源操作数当前数据段中某个地址的偏移地址。源操作数当前数据段中某个地址的偏移地址。 DIDI(Destination indexDestination index)叫目标变址寄存器)叫目标变址寄存器,一,一般用于目标操作数当前附加段(本数据段)中某个地般用于目标操作数当前附加段(本数据段)中某个地址
16、的偏移地址。址的偏移地址。 在字符串操作中,在字符串操作中,SISI用于存放源串操作数的偏移用于存放源串操作数的偏移地址,这个串一定是在数据段地址,这个串一定是在数据段DSDS。DIDI用于存放目标串用于存放目标串操作数的偏移地址,这个串一定是在附加段操作数的偏移地址,这个串一定是在附加段ESES。 在寄存器间寻址时,经常用在寄存器间寻址时,经常用DIDI、SISI加上一个位移加上一个位移量来改变存储器的地址,因此叫变址寄存器量来改变存储器的地址,因此叫变址寄存器。 指针寄存器和变址寄存器与数据寄存器样,可以指针寄存器和变址寄存器与数据寄存器样,可以参与算术和逻辑运算,但指针寄存器和变址寄存器
17、只参与算术和逻辑运算,但指针寄存器和变址寄存器只能用于能用于1616位计算,不能分成位计算,不能分成8 8位。位。 段寄存器包括段寄存器包括CS、SS、DS、ES,用于指示当前段的用于指示当前段的段基址。段基址。 CS(Code Segment)叫代码段寄存器叫代码段寄存器,用于指示当用于指示当前的代码段前的代码段(程序段)的起始地址段基址程序段)的起始地址段基址。 DS (Date Segment)叫数据段寄存器叫数据段寄存器,用于指示当用于指示当前的数据段的段基址前的数据段的段基址。 SS(Stack Segment)叫堆栈段寄存器叫堆栈段寄存器,用于指示用于指示当前的堆栈段的段基址当前的
18、堆栈段的段基址。 ES (Extra Segment)叫附加段寄存器叫附加段寄存器,用于指示当用于指示当前的附加段的段基址前的附加段的段基址。 CS段一般用于存放段一般用于存放CPU执行的程序代码执行的程序代码。DS一般用一般用于存放程序中的变量和数据于存放程序中的变量和数据。SS段一般用于存放压栈的一般用于存放压栈的信息信息。ES段一般用于存放参与运算结果段一般用于存放参与运算结果。 2.2.段寄存器段寄存器(segment) 控制寄存器有控制寄存器有IPIP和和FLAGSFLAGS。 IP(Instruction Pointer)叫指令指针寄存器叫指令指针寄存器(程序指示器)。用于存放预取
19、指令的偏移地址。(程序指示器)。用于存放预取指令的偏移地址。CPU从代码段中偏移地址为从代码段中偏移地址为IP的内存单元中取出指令代码的的内存单元中取出指令代码的一个字节后一个字节后,IP自动加自动加I,指向指令代码的下一个字节指向指令代码的下一个字节。用户程序不能直接访问。用户程序不能直接访问IPIP。 FLAGS(Flags)叫标志寄存器,用于存放运算叫标志寄存器,用于存放运算结果的标志。结果的标志。FLAGS是是16位寄存器位寄存器,用其中的用其中的9位来描述位来描述9个标志个标志。通常叫标志通常叫标志9个标志可分为状态标志位和控制个标志可分为状态标志位和控制标志位标志位。如图如图2-3
20、所示所示。 OFOF DFDF IFIF TFTF SFSF ZFZF AFAF PFPF CFCF3.3.控制寄存器控制寄存器图2-3 8086标志寄存器FLAGS状态标志位有:状态标志位有: CFCF(Corry FlagCorry Flag)进位标志位(借位标志位):)进位标志位(借位标志位):当进行加法当进行加法(或减法)运算时,若最高位发生进位来借位,则(或减法)运算时,若最高位发生进位来借位,则CF=1CF=1,否则,否则CF=0CF=0。 PFPF( Parity FlagParity Flag)寄标志位:寄标志位:当逻辑运算结果中当逻辑运算结果中“1”1”的个的个数为偶数时,数
21、为偶数时,PF=1PF=1,为奇数时,为奇数时,PF=0PF=0。 AFAF(Auxiliary CarryAuxiliary Carry)半进位标志位:)半进位标志位:在在8 8(1616)位加减法运)位加减法运算中,低算中,低4 4(8 8)位向高位有进位或借位,则)位向高位有进位或借位,则AF=1AF=1,否则,否则AF=0AF=0。 ZFZF(Zero FlagZero Flag)零标志位:零标志位:当运算结查为当运算结查为0 0时,时,ZF=1ZF=1,否则,否则ZF=0ZF=0。 SFSF(Sign FlagSign Flag)符号标志位:符号标志位:当运算结果最高位是当运算结果最
22、高位是1 1(即函数)(即函数)时,时,SF=1SF=1,否则,否则SF=0SF=0。 OFOF(Over FlagOver Flag)溢出标志位:溢出标志位:当运算结果超出了带符号数的当运算结果超出了带符号数的范围,即溢出时,范围,即溢出时,OF=1OF=1,否则,否则OF=0OF=0。8 8位带符号数范围是位带符号数范围是-128+127-128+127。1616位带符号数的范围是位带符号数的范围是-32768+32767-32768+32767。这。这6 6个状态标志位状态是计个状态标志位状态是计算机运算后,自动生成的不是人为赋予的,当然也可通过算机运算后,自动生成的不是人为赋予的,当然
23、也可通过POPFPOPF改变改变各状态值。(后续介绍各状态值。(后续介绍) 控制标志位控制标志位 控制标志位被设置后,可完成某些控制操作。控制标志位被设置后,可完成某些控制操作。 TFTF(Trap FlagTrap Flag)跟踪标志位:)跟踪标志位:是为调试程序而设置的。若是为调试程序而设置的。若TF=1TF=1,则使,则使8086CPU8086CPU处于单步工作方式,在这种工作方式下,处于单步工作方式,在这种工作方式下,CPUCPU每每执行完一条指令,就自动产生一个内部中断,处理机转去执行一个执行完一条指令,就自动产生一个内部中断,处理机转去执行一个中断服务程序。检查程序中的每条指令执行
24、情况,当中断服务程序。检查程序中的每条指令执行情况,当TF=0TF=0时,时,CPUCPU正正常执行程序。常执行程序。 IFIF(Interrupt FlagInterrupt Flag)中断允许标志位(开中断标志位):)中断允许标志位(开中断标志位):若若将将IFIF设置为设置为1 1时(时(IF=1IF=1),),8086CPU8086CPU开中断,开中断,CPUCPU允许外部的可屏蔽中允许外部的可屏蔽中断源的中断请示,若将断源的中断请示,若将IFIF清零(清零(IF=0IF=0),),8086CPU8086CPU关中断,关中断,CPUCPU禁止禁止外部可屏蔽中断的请求。外部可屏蔽中断的请
25、求。 IFIF只对可屏蔽中断起作用,对非屏蔽中断和内部中断都不起作只对可屏蔽中断起作用,对非屏蔽中断和内部中断都不起作用。用。 DFDF(Direction FlagDirection Flag)方向标志位:)方向标志位:方向标志位用于控制串操方向标志位用于控制串操作指令中作指令中SISI(或(或DIDI)的修改方向。当)的修改方向。当DFDF设置为设置为1 1(DF=1DF=1)时时,SISI(或(或DIDI)减量,当)减量,当DFDF清零(清零(DF=0DF=0)时,)时,SISI(或(或DIDI)增量,因为)增量,因为SISI(或(或DIDI)描述串操作的偏移地址,当描述串操作的偏移地址
26、,当SISI(DIDI)减量时,串是由高地址向低地)减量时,串是由高地址向低地址方向遵序执行。后续指令中将详细介绍。址方向遵序执行。后续指令中将详细介绍。 在调试程序时,在调试程序时,DEBUG提供了测试标志位的手段,提供了测试标志位的手段,用符号表示标志位的值,用符号表示标志位的值,每种标志位的符号如下表:每种标志位的符号如下表:标志名标志名标志为1标志为1 标志为0标志为0OF溢出(是/否)OF溢出(是/否)OVOVNVNVDF方向(减量/加量)DF方向(减量/加量)DNDNUPUPIF中断(允许/关闭)IF中断(允许/关闭)EIEIDIDISF符号(负/正)SF符号(负/正)NGNGPL
27、PLZF零(是/否)ZF零(是/否)ZRZRNZNZAF辅助进位(是/否)AF辅助进位(是/否)ACACNANAPF奇偶标志( 偶/奇)PF奇偶标志( 偶/奇)PEPEPOPOCF进位标志(是/否)CF进位标志(是/否)CYCYNCNCDEBUG不提供不提供TF的符号用于单步方式操作。的符号用于单步方式操作。例例1:执行两个数的加法,分析对标志位的影响。:执行两个数的加法,分析对标志位的影响。v 标志标志: 运算结果最高位为运算结果最高位为0SF=0; 运算结果本身运算结果本身0 ZF=0低低8位中位中1的个数为奇数个的个数为奇数个 PF=0; 最高位没有进位最高位没有进位 CF=0第三位向第
28、四位无进位第三位向第四位无进位 AF=0;次高位向最高位没有进位次高位向最高位没有进位 ,最高位向前没有进位,最高位向前没有进位 , OF=0。1 10 00 00 01 11 10 01 10 00 00 01 10 01 10 00 00 00 01 11 10 00 01 10 00 00 00 01 11 10 00 01 1+ +0 01 11 11 11 10 01 10 01 10 01 10 01 10 01 10 0例2 若AL = 3BH,AH = 7DH,试指出AL中的内容和AH中的内容相加、相减后,标志CF、AF、PF、SF、OF和ZF的状态。 解:(1)AL + AH
29、 0 0 1 1 1 0 1 1 AL+ 0 1 1 1 1 1 0 1 AH 1 0 1 1 1 0 0 0由运算结果可知:CF = 0 (无进位);AF = 1(有辅助进位);PF = 1(有偶数个1);SF = D7 = 1(运算结果符号位为1);OF = 1 (同号相加,结果的符号与两操作数符号相反,有溢出);ZF = 0 (运算结果不为0)。 (2)AL AH 0 0 1 1 1 0 1 1 AL- 0 1 1 1 1 1 0 1 AH 1 0 1 1 1 1 1 0由运算结果可知:CF = 1(有借位);AF = 1(有辅助借位);PF = 1(有偶数个1);SF = 1(符号位为
30、1);OF = 0(同号相减,无溢出);ZF = 0(运算结果不为0)。 三、8086/8088的存储器组织(一)、存储器结构8086/8088系统中存储器的每一个存储单元(字节)都有一个独立的地址编码,地址编码采用20位二进制表示,地址译码器是根据地址编码才找到目标存储单元的。20位二进制地址编码的范围的十六进制表示为00000HFFFFFH,最多可表示 (1MB)地址编码唯一的存储单元,把20位二进制表示的地址称为物理地址。 101101101011011038F04H存储单元内容存储单元内容存储单元地址存储单元地址202 内存单元的地址和内容内存单元的地址和内容存储单元地址:按照字节编址
31、存储单元地址:按照字节编址.1100 1111B1100 1111B.物理地址物理地址内容内容00000H00000H00001H00001H00002H00002H00006H00006HFFFFFHFFFFFH存储单元的内容:一个存储单元有效的信息。机器字长是16位, 大部分数据以字节为单位表示, 一个字存入存储器占有相继的二个单元: 低位字节存入低地址,高位字节存入高地址。 字单元的地址采用它的低地址来表示。例:字单元 :0004H=1234H, 字节单元 :0004H=34H 同一个地址既可以看作字节单元地址, 又可看作字单元地址,需要根据使用情况确定。字单元地址:可以是偶数也可以是奇
32、数,34H34H12H12H1EH1EH2FH2FH0000H0000H0001H0001H0002H0002H0003H0003H0004H0004H0005H0005H0006H0006H.1234H1234H1235H1235H1236H1236H.数据总线地址总线D7D01 M X 8位存储体A19A000000HFFFFFHA19A08086系统的存储体结构系统的存储体结构 8088系统的存储体结构系统的存储体结构 (二)、存储器的分段结构和物理地址的形成 8086有有20条条地址线,可以寻址地址线,可以寻址1M内存空间。地址从内存空间。地址从00000HFFFFFH。但。但8086
33、CPU内部的地址寄存器都是内部的地址寄存器都是1616位位的,的,最多能寻址最多能寻址64K字节字节,为了能寻址,为了能寻址1M字节字节,8086采用分段技采用分段技术。分段技术是把存储器可分成术。分段技术是把存储器可分成代码段代码段CS、堆栈段、堆栈段SS、数、数据段据段DS和附加段和附加段ES四种。每段为四种。每段为64KB,段与段可以重叠,段与段可以重叠,可以交叉,也可以没有联系。可以交叉,也可以没有联系。如图如图2-4所示。所示。存储器分段管存储器分段管理后,每个单元的地址都可以用两个形式的地址来表示,理后,每个单元的地址都可以用两个形式的地址来表示,实际地址(物理地址)和逻辑地址。实
34、际地址(物理地址)和逻辑地址。2-4 存储器的逻辑分段结构 例:已知当前有效的代码段例:已知当前有效的代码段、堆栈段堆栈段、数据段和附数据段和附加段的段基址分别为加段的段基址分别为1055H、EFF0H、250AH和和8FFBH,它它们在存储器中的分布情况如图们在存储器中的分布情况如图2-52-5所示所示。 物物理地址理地址: :是由是由20位地址或状态来表示的地址。位地址或状态来表示的地址。即即20位位二进数来表示。二进数来表示。CPU与存储器交换信息时,使用的是物理地与存储器交换信息时,使用的是物理地址。址。 逻辑地址:是把逻辑地址:是把2020位地址分成段基址和偏移地址两部位地址分成段基
35、址和偏移地址两部分表示,即段:偏移。分表示,即段:偏移。这两部分都是无符号的这两部分都是无符号的16位二进制位二进制数。例如:数。例如:0001H:2000H。程序是以逻辑地址来编址的。程序是以逻辑地址来编址的。 物理地址的形成是通过物理地址的形成是通过CPU内部的内部的BIU部件中的地址加部件中的地址加法器运算出来的,如图法器运算出来的,如图2-6。从图中可看出物理地址可由下式计算:从图中可看出物理地址可由下式计算: 物理地址物理地址= =段基址段基址16+ +偏移地址偏移地址。 例如:例如:CS=2000H IP=2200H,则物理地址为:,则物理地址为:20000H+2200H=2220
36、0H。2-6 8086物理地址的形成已知CS=1055H,DS=250AH,ES=2EF0H,SS=8FF0H, DS段有一操作数,其偏移地址=0204H, 1)画出各段在内存中的分布 2)指出各段首地址 3)该操作数的物理地址=?10550H250A0H2EF00H8FF00HCSSS CSDSES解:解: 各段分布及段首址见右图所示。各段分布及段首址见右图所示。 操作数的物理地址为:操作数的物理地址为: 250AH10H+0204H = 252A4H例: 四个段寄存器可以分别描述当前使用的段的起始四个段寄存器可以分别描述当前使用的段的起始字节单元字节单元。偏移地址可由偏移地址可由16位位寄
37、存器来描述寄存器来描述。一般情一般情况下况下CS段段的偏移地址用的偏移地址用IP描述描述,SS段段的偏移地址由的偏移地址由SP和和BP描述描述。DS段段的偏移地址由的偏移地址由BX或或SI加上位移量加上位移量来描来描述述,ES段段的偏移地址可由的偏移地址可由BX和和DI加上位移量加上位移量来描述来描述。如图如图2-7所示所示。2-7 段寄存器和其它寄存器组合指向存储单元段超越前缀指令v没有指明时,一般的数据访问在DS段;使用BP访问主存,则在SS段v默认的情况允许改变,需要使用段超越前缀指令;8086指令系统中有4个: CS:;代码段超越,使用代码段的数据 SS: ;堆栈段超越,使用堆栈段的数
38、据 DS: ;数据段超越,使用数据段的数据 ES: ;附加段超越,使用附加段的数据段超越的示例v没有段超越的指令实例:vMOV AX,2000H ;AXDS:2000H ;从默认的DS数据段取出数据v采用段超越前缀的指令实例:vMOV AX,ES:2000H;AXES:2000H ;从指定的ES附加段取出数据(三)、信息分段存储与段寄存器操作类型正常使用(隐含)段基址可替换段地址偏移地址物理地址计算取指令CS无IP(CS)16d+(IP)堆栈操作SS无SP(SS) 16d+(SP)BP间址SSCS,DS,ES有效地址EA(SS) 16d+EA存取变量DSCS,ES,SS有效地址EA(DS )1
39、6d+EA源字符串DSCS,ES,SSSI(DS) 16d+(SI)目标字符串ES无DI(ES) 16d+(DI)逻辑地址来源四、80868088系统中的堆栈堆栈是在计算机中的RAM存储区开辟的一个特定区域,按照“后进先出”的原则组织。主要用于暂存数据和断点地址。1堆栈的结构 存储区的存储方式采用一端固定(称为栈底),另一端浮动(称为栈顶)的方式,即只允许在活动端进行数据的输入或删除。 2堆栈的操作 堆栈段在存储区中的位置由堆栈段寄存器SS和堆栈指针SP来确定。SSSS中存放堆栈段的段基址,SPSP中存放栈顶的地址,此地址表示栈顶离段首址的偏移量,因此用SP指示栈元素进栈和出栈的偏移地址的变化
40、。 堆堆栈栈段段首首地地址址SS 10000H11FFBH11FFDH11FFEH11FFFH11FFAH11FFCHSP 12000H栈栈底底64KB图2-8 8086堆栈在存储器中的分布情况(1)建栈。 建立堆栈就是设定堆栈的段基址和栈底,用户可以通过数据传送指令把堆段的段基址送入段寄存器SS,把栈底的偏移地址送入堆栈指针寄存器SP。此时栈中无数据,是一个空栈。 若SS = 1000H,SP = 2000H,则堆栈的情况如图2-8所示,建立堆栈指令为:MOV AX,1000H MOV SS, AX MOV SP,2000H (2)入栈。入栈就是把数据压入堆栈,又称进栈。8086微处理器的入
41、栈操作以字为单位。入栈操作分为两步:将堆栈指针寄存器SP的内容减2,即是栈顶向低地址方向移动一个字单元,指向新栈顶。即:SP SP 2;将一个字数据推入到SP所指向的栈顶字单元,即:SP 字数据。 注意:入栈字的低字节存入低地址单元,高字节存入高地址单元。注意:入栈字的低字节存入低地址单元,高字节存入高地址单元。 例2 若SS = 2000H,当前SP = 1234H,将寄存器AX中的数据7C9FH压入堆栈。操作如下:修改SP,使其指向新栈顶,即:SP = 1232H。AX的内容压入栈顶字单元。即:AL送21232H单元,AH送21233H单元。其操作如图所示。5CH 20HSP1232H21232H21233H21234H9FH7CHXXAX入入栈栈操操作作设设SS = 2000Ha)SP1234H21232H21233H21234H20H5CHXXAX
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西医临床考核内容深度分析试题及答案
- 护士资格证考试护理评价指标考题及答案
- 卫生管理证书考试未来趋势试题及答案
- 补考一建机电试题及答案
- 网络设计师实战模拟考试的试题及答案
- 案例分析西医临床试题及答案
- 育婴师心理健康知识考察试题及答案
- 育婴师的职业规范与考试标准试题及答案
- 组织胚胎考试题及答案
- 2024年高考化学二轮复习专题02物质的组成性质和分类教案
- 2025年河南地矿职业学院单招职业适应性考试题库及答案1套
- 2025年河南建筑职业技术学院高职单招语文2019-2024历年真题考点试卷含答案解析
- 《航空工程技术英语》课件-Chapter 12 Flight Control教学课件:Flight Control + Auto Flight Control
- 2024年郑州铁路职业技术学院单招职业技能考试题库附答案
- 防雷知识培训课件
- 【9历一模】2025年安徽省合肥市蜀山区九年级中考一模历史试卷(含答案)
- 民宿创业计划书与方案
- 四川省南充市顺庆区南充高级中学2024-2025学年高一下学期4月月考语文试题
- 2025年合肥兴泰金融控股(集团)有限公司招聘23人笔试参考题库附带答案详解
- 二级水电工试卷及答案
- 2025届湖北省武汉市高考数学一模试卷含解析
评论
0/150
提交评论