《第3章微机系统中的微处理器PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第3章微机系统中的微处理器PPT讲稿.ppt(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第3章微机系统中的微处理器第1页,共51页,编辑于2022年,星期一 微处理器的是组成计算机系统的核心部件,其基本功能为:微处理器的是组成计算机系统的核心部件,其基本功能为:(1)支持功能完善的指令系统,进行各种算术、逻辑运算,通过)支持功能完善的指令系统,进行各种算术、逻辑运算,通过程序完成复杂的科学计算。程序完成复杂的科学计算。(2)支持各种结构的程序的执行,如程序的分支、循环、嵌套、)支持各种结构的程序的执行,如程序的分支、循环、嵌套、子程序的调用和返回、中端服务程序。子程序的调用和返回、中端服务程序。(3)控制与存储器、外设等相连接,组成完整的微机系统。)控制与存储器、外设等相连接,组
2、成完整的微机系统。3.1 微处理器的一般结构微处理器的一般结构3.1.1 微处理器的内部结构微处理器的内部结构一、微处理器的功能一、微处理器的功能第2页,共51页,编辑于2022年,星期一程序计数器(PC)指令寄存器(IR)指令译码器(ID)控制逻辑部件堆栈指示器(SP)处理机状态字(PSW)控制器I/O控制逻辑工作寄存器地址寄存器数据寄存器.ALU3.1.1 微处理器的内部结构微处理器的内部结构第3页,共51页,编辑于2022年,星期一指令的执行过程指令的执行过程3.1.1 微处理器的内部结构微处理器的内部结构第4页,共51页,编辑于2022年,星期一 外部结构外部结构输入输入/输出引脚输出
3、引脚微处理器级总线微处理器级总线 微处理器通过微处理器级总线与外部部件和设备相联系。微处理器通过微处理器级总线与外部部件和设备相联系。1总线的功能总线的功能和存储器之间交换信息和存储器之间交换信息和和I/O设备之间交换信息设备之间交换信息为了系统工作而接收和输出为了系统工作而接收和输出必要的信号,如输入时钟脉冲、必要的信号,如输入时钟脉冲、复位信号、电源和接地等复位信号、电源和接地等2总线的分类总线的分类数据总线(数据总线(Data Bus)地址总线(地址总线(Address Bus)控制总线(控制总线(Control Bus)一总线功能与分类一总线功能与分类3.1.2 微处理器的外部结构微处
4、理器的外部结构第5页,共51页,编辑于2022年,星期一 存储器通常由几个模块组成,每个模块有几千个单元,每个存储单存储器通常由几个模块组成,每个模块有几千个单元,每个存储单元有唯一的存储器地址与其对应。元有唯一的存储器地址与其对应。二存储器和二存储器和I/O地址空间地址空间 I/O接口接口保证数据、控制与状态信息在保证数据、控制与状态信息在CPU和和I/O设备之间正常传设备之间正常传送的电路。送的电路。I/O和和CPU之间的通信利用称为之间的通信利用称为I/O端口端口的寄存器来完成。的寄存器来完成。对应一个对应一个I/O设备的设备的I/O接口,可能包括几个接口,可能包括几个I/O端口,每个端
5、口,每个I/O端口都端口都有一个唯一的有一个唯一的I/O地址与其对应。地址与其对应。3.1.2 微处理器的外部结构微处理器的外部结构第6页,共51页,编辑于2022年,星期一 存储单元和存储单元和I/O端口以字节为单位存放数据,每个字节对应一端口以字节为单位存放数据,每个字节对应一个个标识地址标识地址。地址总线的条数即为二进制地址码的位数,它可能表示的不同地址总线的条数即为二进制地址码的位数,它可能表示的不同地址的集合称为地址的集合称为地址空间地址空间。地址码的位数决定了地址空间的大小:地址码的位数决定了地址空间的大小:2n二存储器和二存储器和I/O地址空间地址空间单地址空间:对存储器和单地址
6、空间:对存储器和I/O端口统一进行编址。端口统一进行编址。双地址空间:对存储器和双地址空间:对存储器和I/O端口独立进行编址。端口独立进行编址。存储器:存储器:高位高位选择模块,低位选择模块,低位选择模块内的存储单元。选择模块内的存储单元。I/O设备:高位设备:高位选择选择I/O接口,低位接口,低位选择选择I/O端口。端口。3.1.2 微处理器的外部结构微处理器的外部结构第7页,共51页,编辑于2022年,星期一 8086由两个独立的逻辑单元组成,即总线接口单元(由两个独立的逻辑单元组成,即总线接口单元(BIU)和)和执行单元(执行单元(EU)。)。BIU的任务:的任务:执行总线操作。执行总线
7、操作。(1)访问存储器,包括取指令、取操作数、存结果等。)访问存储器,包括取指令、取操作数、存结果等。(2)与)与I/O之间的信息传输。之间的信息传输。EU的任务:的任务:执行指令,进行全部算术和逻辑运算、完成偏移地执行指令,进行全部算术和逻辑运算、完成偏移地址的计算,向址的计算,向BIU提供指令执行结果的数据和访问存储器需要的偏移提供指令执行结果的数据和访问存储器需要的偏移地址,并对通用寄存器和标志寄存器进行管理。地址,并对通用寄存器和标志寄存器进行管理。3.2 8086的功能结构的功能结构第8页,共51页,编辑于2022年,星期一1 2 3 4 5 6内部寄存器内部寄存器 IP ES SS
8、 DS CS总线控制总线控制电路电路EU控制器控制器ALU标志寄存器标志寄存器 AH AL BH BLCH CL DH DL SP BP SI DI通用通用寄存器寄存器地址地址加法器加法器指令队列指令队列执行单元执行单元(EU)总线接口单元总线接口单元(BIU)16位位20位位16位位8位位ALU数据总线数据总线数据数据总线总线8086总线总线3.2 8086的内部结构的内部结构第9页,共51页,编辑于2022年,星期一(3)EU取得指令,译码并执行指令。若指令需要取操作数或存操作结果,需要取得指令,译码并执行指令。若指令需要取操作数或存操作结果,需要访问存储器或访问存储器或I/O,EU向向B
9、IU发出访问总线请求。当发出访问总线请求。当BIU接到接到EU的总线请求,若正的总线请求,若正忙,则须等忙,则须等BIU执行完当前的总线周期,才能响应执行完当前的总线周期,才能响应EU的请求;若的请求;若BIU空闲,则立即空闲,则立即执行执行EU申请总线的请求。申请总线的请求。(1)BIU的指令队列有两个或两个以上字节为空时,的指令队列有两个或两个以上字节为空时,BIU自动启动总线周期,自动启动总线周期,取指填充指令队列。直至队列满,进入空闲状态。取指填充指令队列。直至队列满,进入空闲状态。(2)EU每执行完一条指令,从指令队列的队首取指。每执行完一条指令,从指令队列的队首取指。特殊情况特殊情
10、况:系统初始化:系统初始化后,指令队列为空,后,指令队列为空,EU等待等待BIU从内存取指,填充指令队列。从内存取指,填充指令队列。(4)EU执行转移、调用和返回指令时,若下一条指令不在指令队列中,则队执行转移、调用和返回指令时,若下一条指令不在指令队列中,则队列被自动清除,列被自动清除,BIU根据本条指令执行情况重新取指填充指令队列。根据本条指令执行情况重新取指填充指令队列。流水线技术原则流水线技术原则第10页,共51页,编辑于2022年,星期一CPU取指1执行1存结果1取指2执行2取指3取操作数3执行3BUS忙闲忙忙闲忙忙闲EU执行1执行2执行3执行4BIU取指1取指2存结果1取指3取操作
11、数3取指4存结果3取指5BUS忙忙忙忙忙忙忙忙取指令取指令取操作数取操作数(如果需要如果需要)执行指令执行指令写入存储器。写入存储器。8086首次引入了流水线技术,执行指令和总线访问可以同时进首次引入了流水线技术,执行指令和总线访问可以同时进行,提高了总线利用率。行,提高了总线利用率。8086/8088以前的以前的CPU指令流水线指令流水线第11页,共51页,编辑于2022年,星期一3.3 8086的寄存器结构的寄存器结构 AX AH AL BX BH BL 数据寄存器数据寄存器 CX CH CL (8/16位)位)DX DH DL 通用寄存器通用寄存器 SP 堆栈指针堆栈指针 BP 基址指针
12、基址指针 指针指针/变址寄存器变址寄存器 SI 源变址源变址(16位)位)DI 目的变址目的变址 CS 代码段代码段 DS 数据段数据段 段寄存器段寄存器 SS 堆栈段堆栈段(16位)位)ES 附加段附加段 专用寄存器专用寄存器 IP 指令指针指令指针 控制寄存器控制寄存器 FLAG 标志寄存器标志寄存器(16位)位)第12页,共51页,编辑于2022年,星期一3.3.1 通用寄存器组通用寄存器组一、数据寄存器一、数据寄存器(1)16位数据寄存器位数据寄存器 AX累加器,使用频度最高,用于算术、逻辑运算累加器,使用频度最高,用于算术、逻辑运算 以及与外设传送信息等;以及与外设传送信息等;BX基
13、址寄存器,常用做存放存储器基地址;基址寄存器,常用做存放存储器基地址;CX计数器,循环和串操作等指令中的隐含计数器;计数器,循环和串操作等指令中的隐含计数器;DX数据寄存器,常用来存放双字长数据的高数据寄存器,常用来存放双字长数据的高16位,位,或存放外设端口地址。或存放外设端口地址。(2)8位数据寄存器:位数据寄存器:AH BH CH DH AL BL CL DL第13页,共51页,编辑于2022年,星期一3.3.1 通用寄存器组通用寄存器组二、地址指针和变址寄存器二、地址指针和变址寄存器变址寄存器常用于存储器寻址时提供地址:变址寄存器常用于存储器寻址时提供地址:SI源变址寄存器源变址寄存器
14、 DI目的变址寄存器目的变址寄存器指针寄存器用于寻址内存堆栈内的数据:指针寄存器用于寻址内存堆栈内的数据:SP堆栈指针,指示栈顶的偏移地址。堆栈指针,指示栈顶的偏移地址。SP不能再用于其他目的,具有专用目的。不能再用于其他目的,具有专用目的。BP基址指针,表示数据在堆栈段中的基地址基址指针,表示数据在堆栈段中的基地址。SP和和BP寄存器与寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址。段寄存器联合使用以确定堆栈段中的存储单元地址。第14页,共51页,编辑于2022年,星期一8086有有4个个16位段寄存器:位段寄存器:CS Code Segment,执行程序所在段的段地址,执行程序所
15、在段的段地址 SS Stack Segment,堆栈段的段地址,堆栈段的段地址 DS Data Segment,数据段的段地址,数据段的段地址 ES Extra Segment,附加段的段地址,附加段的段地址3.3.2 段寄存器组段寄存器组第15页,共51页,编辑于2022年,星期一3.3.3 控制寄存器组控制寄存器组指令指针寄存器指令指针寄存器IP(Instruction Pointer):):指示下一条要执行指令的偏移地址,计算机通过指示下一条要执行指令的偏移地址,计算机通过CS 和和 IP来控制来控制指令序列的执行流程。指令序列的执行流程。IP寄存器是一个专用寄存器。寄存器是一个专用寄存
16、器。标志寄存器(标志寄存器(FLAG):):状态标志状态标志记录程序运行结果的状态信息,许多指令的记录程序运行结果的状态信息,许多指令的执行都将相应地设置它。执行都将相应地设置它。CF ZF SF PF OF AF 控制标志控制标志可由程序根据需要用指令设置,用于控制处理器可由程序根据需要用指令设置,用于控制处理器执行指令的方式。执行指令的方式。DF IF TF第16页,共51页,编辑于2022年,星期一3.3.3 控制寄存器组控制寄存器组标志寄存器(标志寄存器(FLAG)D15D0 OF DF IF TF SF ZF AF PF CF进进位位标标志志奇奇偶偶标标志志辅辅助助进进位位标标志志符
17、符号号标标志志单单步步中中断断中中断断允允许许方方向向标标志志溢溢出出标标志志1-有进、借位有进、借位0-无进、借位无进、借位1-低低8位有偶数个位有偶数个10-低低8位有奇数个位有奇数个11-低低4位向高位向高4位有进、借位位有进、借位0-低低4位向高位向高4位无进、借位位无进、借位1-结果为结果为00-结果不为结果不为0零零标标志志第17页,共51页,编辑于2022年,星期一进位标志进位标志CF:当运算结果的最高有效位有进位(加法)或借位(减法)时,当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置进位标志置1,即,即CF=1;否则;否则CF=0。例如:例如:3AH+7CHB
18、6H,没有进位:没有进位:CF=0 AAH+7CH(1)26H,有进位:有进位:CF=1溢出标志溢出标志OF:若算术运算的结果有溢出,则若算术运算的结果有溢出,则OF=1;否则;否则 OF0例如:例如:3AH+7CHB6H,产生溢出:产生溢出:OF=1 AAH+7CH(1)26H,没有溢出:没有溢出:OF=0标志寄存器(标志寄存器(FLAG)第18页,共51页,编辑于2022年,星期一标志寄存器(标志寄存器(FLAG)问题:问题:1.什么是溢出?什么是溢出?2.溢出和进位有什么区别?溢出和进位有什么区别?3.处理器怎么处理,程序员如何运用?处理器怎么处理,程序员如何运用?4.如何判断是否溢出?
19、如何判断是否溢出?第19页,共51页,编辑于2022年,星期一处理器内部以补码表示有符号数。处理器内部以补码表示有符号数。8个二进制位能够表达的整数范围是:个二进制位能够表达的整数范围是:+127 -128如果运算结果超出了这个范围,就是产生了溢出。如果运算结果超出了这个范围,就是产生了溢出。有溢出,说明有符号数的运算结果不正确。有溢出,说明有符号数的运算结果不正确。1.什么是溢出?什么是溢出?标志寄存器(标志寄存器(FLAG)例如:例如:3AH+7CHB6H,即,即58+124182,已经超出,已经超出-128 127范围,产生溢范围,产生溢出,所以出,所以OF=1;另一方面,补码;另一方面
20、,补码B6H表达真值是表达真值是-74,显然运算结果也,显然运算结果也不正确。不正确。第20页,共51页,编辑于2022年,星期一溢出标志溢出标志OF和进位标志和进位标志CF是两个意义不同的标志。是两个意义不同的标志。进位标志表示进位标志表示无符号数无符号数运算结果是否超出范围,运算结果仍运算结果是否超出范围,运算结果仍然然正确正确;溢出标志表示溢出标志表示有符号数有符号数运算结果是否超出范围,运算结果运算结果是否超出范围,运算结果已经已经不正确不正确。2.溢出和进位溢出和进位标志寄存器(标志寄存器(FLAG)第21页,共51页,编辑于2022年,星期一例例1:3AH+7CHB6H无符号数运算
21、:无符号数运算:58124182,范围内,无进位,范围内,无进位有符号数运算:有符号数运算:58124182,范围外,有溢出,范围外,有溢出2.溢出和进位溢出和进位标志寄存器(标志寄存器(FLAG)例例2:AAH+7CH(1)26H无符号数运算:无符号数运算:170124294,范围外,有进位,范围外,有进位有符号数运算:有符号数运算:8612438,范围内,无溢出,范围内,无溢出第22页,共51页,编辑于2022年,星期一 处理器对两个操作数进行运算时,按照无符号数求得结果,并处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志相应设置进位标志CF;同时,根据是否超出有符号
22、数的范围设置;同时,根据是否超出有符号数的范围设置溢出标志溢出标志OF。3.如何应用溢出和进位标志如何应用溢出和进位标志标志寄存器(标志寄存器(FLAG)应该利用哪个标志,则由程序员来决定。也就是说,如应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有符号数,则要注意是否溢出。认为是有符号数,则要注意是否溢出。第23页,共51页,编辑于2022年,星期一 判断运算结果是否溢出有一个简单的规则:判断运算结果是否溢出有一个简单的规则:只有当两个相同符号数相加(异号数相减可转化为同号只有当两
23、个相同符号数相加(异号数相减可转化为同号数相加),而运算结果的符号与原数据符号相反时,产生溢数相加),而运算结果的符号与原数据符号相反时,产生溢出;因为,此时的运算结果显然不正确。出;因为,此时的运算结果显然不正确。其他情况下,则不会产生溢出。其他情况下,则不会产生溢出。4.溢出的判断溢出的判断标志寄存器(标志寄存器(FLAG)第24页,共51页,编辑于2022年,星期一3.4 8086的存储器组织的存储器组织3.4.1 存储器地址空间和数据存储格式存储器地址空间和数据存储格式8086的存储器是以字节(的存储器是以字节(Byte,8位)为单位组织的。位)为单位组织的。20条地址总线,可寻址的存
24、储器地址空间为条地址总线,可寻址的存储器地址空间为220B(1MB)。)。每个存储单元都有一个编号每个存储单元都有一个编号 存储器地址存储器地址每个存储单元存放一个字节的内容每个存储单元存放一个字节的内容二进制位二进制位1位二进制数:位二进制数:0或或1。字节字节8个二进制位,个二进制位,D7D0。字字16位,位,2个字节,个字节,D15D0。双字双字32位,位,4个字节,个字节,D31D0。信息的表达单位:信息的表达单位:第25页,共51页,编辑于2022年,星期一3.4 8086的存储器组织的存储器组织3.4.1 存储器地址空间和数据存储格式存储器地址空间和数据存储格式两个连续的字节,为一
25、个字:低对低,高对高(小端方式)。两个连续的字节,为一个字:低对低,高对高(小端方式)。字的地址指低字节的地址。字的地址指低字节的地址。字的地址为偶地址,称字的存储是对准的,访问时只需一个总线周期。字的地址为偶地址,称字的存储是对准的,访问时只需一个总线周期。字的地址为奇地址,称字的存储是未对准的,访问时要两个总线周字的地址为奇地址,称字的存储是未对准的,访问时要两个总线周期。期。字:字:0002H=1234H 0003H=5612H12H 34H78H 56H0000H0002H0004HD7 D0字节:字节:0002H=34H 0003H=12H第26页,共51页,编辑于2022年,星期一
26、3.4 8086的存储器组织的存储器组织3.4.2 存储器分段管理和物理地址的形成存储器分段管理和物理地址的形成 对应每个存储单元都有一个唯一的对应每个存储单元都有一个唯一的20位编号,即位编号,即物理地址物理地址。00000HFFFFFH 8086CPU采用地址分段方法管理存储器,即用逻辑地址表示一个存采用地址分段方法管理存储器,即用逻辑地址表示一个存储器单元地址:储器单元地址:段基地址段基地址:段内偏移地址段内偏移地址 段地址左移段地址左移4位偏移地址位偏移地址20位物理地址位物理地址 例如例如:逻辑地址逻辑地址“1460H:100H”=物理地址物理地址14700H 显然,一个物理地址可以
27、有多个逻辑地址。显然,一个物理地址可以有多个逻辑地址。第27页,共51页,编辑于2022年,星期一3.4 8086的存储器组织的存储器组织3.4.2 存储器分段管理和物理地址的形成存储器分段管理和物理地址的形成偏移地址:偏移地址:说明主存单元距离段起始位置的偏移量。说明主存单元距离段起始位置的偏移量。每段不超过每段不超过64KB,偏移地址也可用,偏移地址也可用16位数据表示。位数据表示。段地址:段地址:说明逻辑段在主存中的起始位置。说明逻辑段在主存中的起始位置。8086规定段地址必须是模规定段地址必须是模16地址:地址:xxxx0H 省略低省略低4位位0000B,段地址就可以用,段地址就可以用
28、16位数据表示,就能用位数据表示,就能用16位段寄存位段寄存器表达段地址。器表达段地址。第28页,共51页,编辑于2022年,星期一3.4 8086的存储器组织的存储器组织3.4.2 存储器分段管理和物理地址的形成存储器分段管理和物理地址的形成8086对逻辑段的要求是:对逻辑段的要求是:段地址低段地址低4位均为位均为0,每段最大不超过,每段最大不超过64KB。每个段不要求必须是每个段不要求必须是64KB,段与段可以重叠。,段与段可以重叠。1MB空间最多能分成多少个段?空间最多能分成多少个段?每隔每隔64K个存储单元开始一个段,所以个存储单元开始一个段,所以1MB最少有:最少有:22021616
29、 个段个段 每隔每隔16个存储单元就可以开始一个段,所以个存储单元就可以开始一个段,所以1MB最多有:最多有:2201621664K 个段个段1MB空间最少能分成多少个段?空间最少能分成多少个段?第29页,共51页,编辑于2022年,星期一3.4 8086的存储器组织的存储器组织3.4.3 信息的分段存储与段寄存器的关系信息的分段存储与段寄存器的关系程序区:程序区:存储程序的指令代码,由存储程序的指令代码,由CS划定并控制。划定并控制。数据区:数据区:存储原始数据、中间结果和最后结果,由存储原始数据、中间结果和最后结果,由DS和和ES控制。控制。堆栈区:堆栈区:存储需要压入堆栈的数据和状态信息
30、,由存储需要压入堆栈的数据和状态信息,由SS控制。控制。注意:注意:(1)访问存储器时,段地址由)访问存储器时,段地址由默认段寄存器默认段寄存器提供,或由提供,或由“指定指定”的段的段寄存器提供;寄存器提供;(2)DS、ES和和SS的内容用传送指令置入,但不能向的内容用传送指令置入,但不能向CS中置入数;中置入数;(3)偏移地址的获得有约定。)偏移地址的获得有约定。第30页,共51页,编辑于2022年,星期一程序员如何分配各个逻辑段?程序员如何分配各个逻辑段?3.3 8086的存储器组织的存储器组织3.4.3 信息的分段存储与段寄存器的关系信息的分段存储与段寄存器的关系程序的指令序列必须安排在
31、程序的指令序列必须安排在代码段代码段;程序使用的堆栈一定在程序使用的堆栈一定在堆栈段堆栈段;程序中的数据程序中的数据默认默认是安排在数据段,也经常安排在附加段,尤其是串是安排在数据段,也经常安排在附加段,尤其是串操作的目的区必须是附加段。操作的目的区必须是附加段。数据的存放比较灵活,实际上可以存放在任何一种逻辑段中。数据的存放比较灵活,实际上可以存放在任何一种逻辑段中。第31页,共51页,编辑于2022年,星期一各个逻辑段独立示意图各个逻辑段独立示意图第32页,共51页,编辑于2022年,星期一各个逻辑段重叠示意图各个逻辑段重叠示意图第33页,共51页,编辑于2022年,星期一3.5 8086
32、的的I/O组织组织 I/O接口与接口与CPU之间的通信是利用称为之间的通信是利用称为I/O端口端口的寄存器来完成的寄存器来完成的。微型机系统要为的。微型机系统要为I/O芯片的每个端口分配一个地址,各个芯片的每个端口分配一个地址,各个端口有唯一的端口有唯一的I/O地址与之对应,是单独编址的。地址与之对应,是单独编址的。8086CPU地址总线的地址总线的低低16位位用来对用来对8位位I/O端口寻址,端口寻址,I/O地址空地址空间为间为65536,即可访问,即可访问65536个个8位的位的I/O端口,寻址范围是端口,寻址范围是64KB。任何两个编号相邻的任何两个编号相邻的8位端口可以组成一个位端口可
33、以组成一个16位端口。位端口。第34页,共51页,编辑于2022年,星期一3.5 8086的数据寻址方式的数据寻址方式指令由操作码和操作数两部分组成:指令由操作码和操作数两部分组成:操作码:操作码:说明计算机要执行哪种操作,如传送、运算、移位、跳说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部分。转等操作,它是指令中不可缺少的组成部分。操作码操作数操作数操作数:指令执行的参与者,即各种操作的对象。指令执行的参与者,即各种操作的对象。有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指
34、令有令有3个甚至个甚至4个操作数。个操作数。第35页,共51页,编辑于2022年,星期一3.6 8086的数据寻址方式的数据寻址方式 指令中的指令中的操作数操作数,可以是一个具体的数值,可以是存放数据的寄存器,可以是一个具体的数值,可以是存放数据的寄存器,或指明数据在主存位置的存储器地址。或指明数据在主存位置的存储器地址。指令系统设计了多种操作数的来源,寻找操作数的过程就是指令系统设计了多种操作数的来源,寻找操作数的过程就是操作数的操作数的寻址方式寻址方式。8086的数据寻址方式有:的数据寻址方式有:立即数寻址方式立即数寻址方式 寄存器寻址方式寄存器寻址方式 存储器寻址方式存储器寻址方式 隐含
35、寻址隐含寻址-以后学习以后学习第36页,共51页,编辑于2022年,星期一3.6 8086的数据寻址方式的数据寻址方式MOV dest,src;destsrc ;MOV指令的功能是将源操作数指令的功能是将源操作数src ;传送至目的操作数;传送至目的操作数destMOV AL,05H ;AL05HMOV BX,AX ;BXAXMOV AX,SI ;AXDS:SIMOV AX,BP+06H ;AXSS:BP+06HMOV AX,BX+SI ;AXDS:BX+SI指令的助记符格式:指令的助记符格式:操作码操作码 操作数操作数1,操作数操作数2;注释;注释第37页,共51页,编辑于2022年,星期一
36、立即数寻址立即数寻址 指令中的操作数直接存放在机器代码中,紧跟在操作码之后指令中的操作数直接存放在机器代码中,紧跟在操作码之后(操作数作为指令的一部分存放在操作码之后的主存单元中)。(操作数作为指令的一部分存放在操作码之后的主存单元中)。可以是可以是8位数位数i8(00HFFH),),可以是可以是16位数位数i16(0000HFFFFH)。)。立即数寻址方式常用来给寄存器赋值。立即数寻址方式常用来给寄存器赋值。MOV AL,05H;AL05HMOV AX,0102H;AX0102HA1H00H05HA1H00H02H01H小地址端小地址端大地址端大地址端第38页,共51页,编辑于2022年,星
37、期一寄存器寻址寄存器寻址MOV AX,1234H ;AX1234HMOV BX,AX ;BXAX操作数存放在操作数存放在CPU的内部寄存器的内部寄存器REG中中8位寄存器位寄存器R8:AH/AL/BH/BL/CH/CL/DH/DL 16位寄存器位寄存器R16:AX/BX/CX/DX/SI/DI/BP/SP4个段寄存器个段寄存器SEG:CS/DS/SS/ES 第39页,共51页,编辑于2022年,星期一存储器寻址存储器寻址 指令中给出操作数的主存地址信息(偏移地址,称之为有效地址指令中给出操作数的主存地址信息(偏移地址,称之为有效地址EA),而段地址在默认的或用段超越前缀指定的段寄存器中。),而
38、段地址在默认的或用段超越前缀指定的段寄存器中。8086设计了多种存储器寻址方式:设计了多种存储器寻址方式:直接寻址方式直接寻址方式 寄存器间接寻址方式寄存器间接寻址方式 寄存器相对寻址方式寄存器相对寻址方式 基址变址寻址方式基址变址寻址方式 相对基址变址寻址方式相对基址变址寻址方式第40页,共51页,编辑于2022年,星期一存储器寻址存储器寻址1.直接寻址方式直接寻址方式 有效地址在指令中直接给出,默认的段地址在有效地址在指令中直接给出,默认的段地址在DS段寄存器,可段寄存器,可使用段超越前缀改变。使用段超越前缀改变。MOV AX,2000H ;AXDS:2000H ;指令代码:;指令代码:A
39、10020MOV AX,ES:2000H ;AXES:2000H ;指令代码:;指令代码:26A10020第41页,共51页,编辑于2022年,星期一存储器寻址存储器寻址2.寄存器间接寻址方式寄存器间接寻址方式 有效地址存放在基址寄存器有效地址存放在基址寄存器BX,或变址寄存器或变址寄存器SI、DI,或基址指针或基址指针BP中。中。MOV AX,BX ;AXDS:BXMOV AX,ES:DI ;AXES:SI 段地址对应段地址对应BX/SI/DI寄存器默认是寄存器默认是DS,对应,对应BP寄存器默寄存器默认是认是SS;可用段超越前缀改变。;可用段超越前缀改变。第42页,共51页,编辑于2022
40、年,星期一存储器寻址存储器寻址3.寄存器相对寻址方式寄存器相对寻址方式 有效地址是寄存器内容与有符号有效地址是寄存器内容与有符号8位或位或16位位移量之和,寄存位位移量之和,寄存器可以是器可以是BX、BP或或SI、DI。有效地址有效地址BX/BP/SI/DI8/16位位移量位位移量MOV AX,DI+06H;AXDS:DI+06HMOV AX,BP+06H;AXSS:BP+06H 段地址对应段地址对应BX/SI/DI寄存器默认是寄存器默认是DS,对应,对应BP寄存器默寄存器默认是认是SS;可用段超越前缀改变。;可用段超越前缀改变。第43页,共51页,编辑于2022年,星期一存储器寻址存储器寻址
41、4.基址变址寻址方式基址变址寻址方式 有效地址由基址寄存器(有效地址由基址寄存器(BX或或BP)的内容加上变址寄存器)的内容加上变址寄存器(SI或或DI)的内容构成:)的内容构成:有效地址有效地址BX/BPSI/DIMOV AX,BX+SI ;AXDS:BX+SIMOV AX,BP+DI ;AXSS:BP+DIMOV AX,DS:BP+DI;AXDS:BP+DI 段地址对应段地址对应BX基址寄存器默认是基址寄存器默认是DS,对应,对应BP基址寄存器默认基址寄存器默认是是SS;可用段超越前缀改变。;可用段超越前缀改变。第44页,共51页,编辑于2022年,星期一存储器寻址存储器寻址5.基址变址且
42、相对寻址方式基址变址且相对寻址方式 有效地址是基址寄存器(有效地址是基址寄存器(BX/BP)、变址寄存器()、变址寄存器(SI/DI)与一个)与一个8位或位或16位位移量之和:位位移量之和:有效地址有效地址BX/BPSI/DI8/16位位移量位位移量MOV AX,BX+SI+06H;AXDS:BX+SI+06HMOV AX,BP+SI+06H;AXSS:BP+SI+06H 段地址对应段地址对应BX基址寄存器默认是基址寄存器默认是DS,对应,对应BP基址寄存器默基址寄存器默认是认是SS;可用段超越前缀改变。;可用段超越前缀改变。第45页,共51页,编辑于2022年,星期一存储器寻址存储器寻址注意
43、:注意:(1)位移量可用符号表示)位移量可用符号表示 (2)同一寻址方式有多种表达方式)同一寻址方式有多种表达方式 在寄存器相对寻址或相对基址变址寻址方式中,位移量可用符号表示:在寄存器相对寻址或相对基址变址寻址方式中,位移量可用符号表示:MOV AX,SI+COUNT;COUNT是已定义的变量或常量是已定义的变量或常量 MOV AX,BX+SI+WNUM;WNUM也是变量或常量也是变量或常量 同一寻址方式有时可以写成不同的形式:同一寻址方式有时可以写成不同的形式:MOV AX,BXSI ;MOV AX,BX+SI MOV AX,COUNTSI ;MOV AX,SI+COUNT MOV AX,
44、WNUMBXSI ;MOV AX,WNUMBX+SI ;MOV AX,BX+SI+WNUM第46页,共51页,编辑于2022年,星期一3.7 高档高档CPU的寄存器和存储器的寄存器和存储器3.7.1 高档高档CPU的寄存器结构的寄存器结构与与8086的区别:的区别:(1)8个通用寄存器的长度扩展为个通用寄存器的长度扩展为32位:位:EAX、EBX、ECX、EDX、ESI、EDI、EBP和和ESP。(2)EIP存放下一条要执行指令的偏移地址。其低存放下一条要执行指令的偏移地址。其低16位称为位称为IP,用于,用于偏移地址为偏移地址为16位的位的实模式实模式情况。情况。(3)标志寄存器扩展为)标志
45、寄存器扩展为32位位EFLAGS,增加了高档,增加了高档CPU特有的状态标志特有的状态标志和控制标志。和控制标志。(4)增加了)增加了16位的段寄存器位的段寄存器FS和和GS。第47页,共51页,编辑于2022年,星期一3.7 高档高档CPU的寄存器和存储器的寄存器和存储器3.7.2 高档高档CPU的存储器访问机制的存储器访问机制 奔腾奔腾CPU可访问存储器空间为可访问存储器空间为4GB。采用虚拟存储技术,可大大扩展存。采用虚拟存储技术,可大大扩展存储空间。储空间。实模式实模式即即8086模式,模式,CPU只能访问地址低端的只能访问地址低端的1MB存储器空间,存储器空间,这部分存储区成为实模式
46、存储器、常规内存或这部分存储区成为实模式存储器、常规内存或DOS存储器系统。存储器系统。DOS工作于实模式,工作于实模式,WINDOWS工作于保护模式。工作于保护模式。一、实模式与保护模式一、实模式与保护模式 保护模式保护模式,CPU可访问低端可访问低端1MB存储区和高于存储区和高于1MB以上的存储区。以上的存储区。第48页,共51页,编辑于2022年,星期一3.7 高档高档CPU的寄存器和存储器的寄存器和存储器3.7.2 高档高档CPU的存储器访问机制的存储器访问机制1.基本概念基本概念二、保护模式下的存储器寻址机制二、保护模式下的存储器寻址机制 (2)描述符表:)描述符表:存储描述符的特殊
47、用途的段。有三种:存储描述符的特殊用途的段。有三种:1个个GDT、多、多个个LDT和和1个个IDT。每个表最多存放。每个表最多存放213个描述符,每个描述符个描述符,每个描述符8字节,字节,每个表占用每个表占用64KB。每个描述符分配一个每个描述符分配一个13位的位的描述符索引号描述符索引号,索引号乘以,索引号乘以8得到这个描得到这个描述符在描述符表中的起始地址。述符在描述符表中的起始地址。(1)段描述符:)段描述符:对段进行说明的、固定格式的、连续对段进行说明的、固定格式的、连续8个字节个字节信息。包信息。包括括32位的位的段地址段地址(段基地址),(段基地址),20位的位的段界限段界限和和
48、12位的位的属性位属性位(标志位(标志位和控制位)。和控制位)。第49页,共51页,编辑于2022年,星期一3.7 高档高档CPU的寄存器和存储器的寄存器和存储器3.7.2 高档高档CPU的存储器访问机制的存储器访问机制1.基本概念基本概念二、保护模式下的存储器寻址机制二、保护模式下的存储器寻址机制 (3)段寄存器、选择符和描述符寄存器)段寄存器、选择符和描述符寄存器 每个每个16位段寄存器(共位段寄存器(共6个)对应一个个)对应一个64位的描述符寄存器。位的描述符寄存器。段寄存器由程序置入段选择符,段寄存器由程序置入段选择符,16位的段选择符中的位的段选择符中的13位是描述符索位是描述符索引
49、号。引号。一旦程序向某个段寄存器置入段选择符,将自动地把描述符表中一旦程序向某个段寄存器置入段选择符,将自动地把描述符表中的的64位描述符传入对应的描述符寄存器。位描述符传入对应的描述符寄存器。存有描述附表的特殊用途的段,它的描述符存于描述符表寄存器存有描述附表的特殊用途的段,它的描述符存于描述符表寄存器(GDTR、LDTR和和IDTR)。)。第50页,共51页,编辑于2022年,星期一3.7 高档高档CPU的寄存器和存储器的寄存器和存储器3.7.2 高档高档CPU的存储器访问机制的存储器访问机制 (1)保护模式下访问存储器的地址仍有)保护模式下访问存储器的地址仍有段基地址段基地址(32位)和位)和偏移地偏移地址址(20位)两部分组成。位)两部分组成。二、保护模式下的存储器寻址机制二、保护模式下的存储器寻址机制 (2)段基地址的获取:)段基地址的获取:首先,首先,经段寄存器中的选择符中的索引号,经段寄存器中的选择符中的索引号,指明存储于段描述符表中的描述符,指明存储于段描述符表中的描述符,然后,然后,将由这个描述符提供段地址。将由这个描述符提供段地址。(3)保护模式下可寻址的存储器空间可无限大,通过虚拟存)保护模式下可寻址的存储器空间可无限大,通过虚拟存储器实现。储器实现。2.寻址机制寻址机制第51页,共51页,编辑于2022年,星期一