
微机原理与接口技术项目教程 教学课件 ppt 作者 姜荣 项目二 微处理器指令系统.ppt
119页微处理器指令系统,项目二,项目二 微处理器指令系统,本项目主要讲解微处理器指令系统的基本知识,包括8086/80486内部结构、寄存器组;微机系统中常用寻址方式;数据传送类指令、算术运算指令、逻辑运算与位操作指令、串操作类指令、控制转移类指令、处理器控制类指令等指令格式和功能项目导读,第2章 微处理器指令系统,□了解8086的内部结构,了解它的寄存器组 □通过对比8086,了解80486的内部结构 □掌握微处理器的寻址方式 □掌握微处理器的指令系统及指令功能教学内容,第2章 微处理器指令系统,在了解8086及80486的内部结构基础上,把重点放在理解微处理器的寻址方式及指令系统的命令格式及功能上学习建议,本项目教学安排20学时,其中理论14学时,动手实践6学时学习进度,2.1项目开篇,一个简单的汇编语言程序的编写,例2-1 要求编写一段汇编语言程序,完成求和SUM=X+Y功能一个汇编语言源程序是由许多语句组成 2.1项目开篇,要求编写一段汇编语言程序,完成求和SUM=X+Y功能 注:本程序在MASM5.1中调试, 若在6.11中需调整变量题目要求,一个简单的汇编语言程序的编写,例2-1,TITLE EXAMPLE FOR “典型格式” DAT SEGMENT ‘DATA’ X DB 12H Y DB 30H SUM DB 0H DAT ENDS STA SEGMENT STACK ‘STACK’ DB 100H DUP(?) STA ENDS CODE SEGMENT ‘CODE’ ASSUME CS:CODE, DS:DAT, SS:STA,完整段定义格式,例2-1,START: MOV AX,DAT MOV DS,AX MOV AL,X ADD AL,Y MOV SUM,AL,代码段,例2-1,MOV AH,4CH INT 21H CODE ENDS END START,程序结束,2.2 项目备战,任务2.2.1 了解8086/8088的内部结构 任务2.2.2 了解80486的内部结构 任务2.2.3 了解汇编语言的寻址方式 任务2.2.4 掌握汇编指令系统 任务2.2.5 了解汇编语言程序编写格式,任务2.2.1 了解8086/8088的内部结构,微型计算机系统的硬件核心是微处理器。
微处理器通过执行指令序列完成指定的操作,处理器能够执行的全部指令的集合就是该处理器的指令系统任务2.2.1 了解8086/8088的内部结构,1.算术逻辑单元(运算器) 2.寄存器组 3.指令处理单元(控制器),,1.8088内部功能,8088的内部结构从功能分成两个单元 总线接口单元BIU——管理8088与系统总线的接口,负责CPU对存储器和外设进行访问 执行单元EU——负责指令的译码、执行和数据的运算 两个单元相互独立,分别完成各自操作 两个单元可以并行执行,实现指令取指和执行的流水线操作,任务2.2.1 了解8086/8088的内部结构,任务2.2.1 了解8086/8088的内部结构,存储容量 8086有20根地址总线,因此,它可以直接寻址的存储器单元数为220 物理地址 8086可直接寻址1MB的存储空间,其地址区域为00000H~FFFFFH,与存储单元一一对应的20位地址,我们称之为存储单元的物理地址2. 8086存储器组织,2. 8086存储器组织,存储器的分段及段地址 CPU内部的寄存器都是16位 系统采用存储器分段的方法 系统的整个存储空间可分为16个互不重叠的逻辑段,图2-3 存储空间逻辑段结构 图2-4 分段逻辑结构,2. 8086存储器组织,偏移地址 偏移地址是某存储单元相对其所在段起始位置的偏移字节数,或简称偏移量 它是一个16位的地址,根据指令的不同,它可以来自于CPU中不同的16位寄存器(IP、SP、BP、SI、DI、BX等) 物理地址的形成 物理地址是由段地址与偏移地址共同决定的 物理地址=段地址×16+偏移地址 例如,系统启动后,指令的物理地址由CS的内容与IP的内容共同决定,由于系统启动的CS=0FFFFH,IP=0000H,所以初始指令的物理地址为0FFFF0H,2. 8086存储器组织,存储器分段管理 特殊的内存区域 中断矢量区:00000H~003FFH共1KB,用以存放256种中断类型的中断矢量,每个中断矢量占用4个字节,共256B×4=1024B=1KB。
显示缓冲区:B0000H~B0F9FH约4000(25×80×2)B,是单色显示器的显示缓冲区,存放文本方式下,所显示字符的ASCII码及属性码;B8000H~BBF3FH约16KB,是彩色显示器的显示缓冲区,存放图形方式下,屏幕显示像素的代码 启动区:FFFF0H~FFFFFH共16个单元,用以存放一条无条件转移指令的代码,转移到系统的初始化部分1.运算部分 进行算术和逻辑运算,任务2.2.2 了解80486的内部结构,,2.存储管理部分 实现虚拟存储器而设置的,它由分段部件和分页部件两部分组成,3.控制部分 根据指令译码器送来的信息产生微指令,并通过微指令对运算部分、存储管理部分及指令译码器发出控制信号,4.译码部分 指令译码器对指令的操作码进行翻译,并把翻译后的信息通过指令总线送给控制部件,5.指令预取部件 指令预取部件中包含了两个16字节的队列寄存器 ;预取指令6. 总线接口部分 总线接口部分的功能是产生访问微处理器以外的存储器和输入/输出接口所需要的地址、数据和命令,1.80486的基本结构,2. 寄存器组,,1)通用寄存器,(1)基本结构存储器,2. 寄存器组(续1),2)段寄存器,,直接或间接地指出指令代码和数据所用的地址空间,2. 寄存器组(续2),3)指令指针 用于保存下一条相对于代码段寄存器的基址的偏移量 物理地址形成,,2. 寄存器组(续3),4)标志寄存器 标志位指明程序运行时的微处理器的实时状态;控制位由用户设置,以控制80486进行某种操作,,s-状态标志 c-控制标志 x-系统标志,2. 寄存器组(续4),(2)系统级寄存器 段寄存器与系统地址寄存器一起为操作系统完成存储管理,多任务环境、任务保护提供硬件支持。
系统地址寄存器 在保护方式下用来管理4个系统表由于只能在保护方式下使用,因此又称为保护方式寄存器 控制寄存器 控制寄存器共4个,各32位,用来存放全局性与任务无关的机器状态① 全局描述符表寄存器GDTR ② 中断描述符表寄存器IDTR ③ 局部描述符表寄存器LDTR ④ 任务状态寄存器TR,①CR0存放系统控制标识或表示处理器的状态; ②CR2为页故障线性地址寄存器,用来保存最后出现页故障的32位线性地址 ③CR3为页目录基址寄存器,其中高20位存放页目录表的物理基地址,在低12位中有2位作为标志位,其余10位未用 ④CR1为将来Intel处理器保留2. 寄存器组(续5),(3)调试与测试寄存器 可编程调试寄存器 8个,32位,用来支持调试功能 测试寄存器 5个,32位,用来存放全局性与任务无关的机器状态任务2.2.3 寻址方式,对于一条汇编语言指令来说,指令由操作码和操作数两部分组成操作数采取哪一种寻址方式,会影响机器运行的速度和效率CPU的寻址方式越多,功能就越强,程序设计的灵活性就越大80486有三种寻址方式:立即数寻址、寄存器寻址、存储器寻址 下面以8088指令执行过程解释寻址方式,1. 立即数寻址,操作数在指令中直接给出 立即数只能是操作数 例如:在MOV AX,1020H指令中,1020H为立即数,该指令的功能是将立即数传送到AX中,,2. 寄存器寻址,操作数存放在CPU的内部寄存器中,操作数可为8位、16位或32位通用寄存器以及16位段寄存器。
例如,在MOV AL,BL指令中,该功能是将BL中的数据送至AL寄存器,,3. 存储器寻址,80486在实模式方式下可访问1M字节的物理存储空间,在保护模式下可访问4G(232)字节的物理存储空间 操作数的地址可以直接在指令中给出;也可以放在寄存器中,以间接的方式给出 80486采用分段的方式来管理存储器,指令中只能出现存储器的逻辑地址,不允许出现物理地址在不同的存储器寻址方式中或用不同的寄存器作间接寻址,操作数都存放在默认的存储器段,否则,必须在存储器操作数前加段超越前缀3. 存储器寻址,存储器寻址方式根据操作数的存储情况分为直接寻址、寄存器间接寻址、基址寻址、变址寻址、基址变址寻址、相对基址加变址寻址6种寻址方式3. 存储器寻址(续1) ——直接寻址1,16位寻址:存储器操作数的16位偏移地址直接包含在指令代码中,默认段为数据段如果不使用默认段,则必须加段超越前缀 例如,将数据段中偏移地址2000H处的存储数据送至AX寄存器,MOV AX,[2000H];DS:[2000H]→AX,,3. 存储器寻址(续2) ——直接寻址2,32位寻址:用EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP等8个32位寄存器作为间接寻址寄存器,用它们存放操作数的段内偏移量。
若用EAX、EBX、ECX、EDX、ESI、EDI来间接寻址,则规定操作数在DS段;若用EBP和ESP来间接寻址,则规定操作数在SS段,否则使用段超越前缀 例如,MOV [0500H],EAX ;将EAX中的数据送至DS段中偏移量 ;为0500H的连续四个存储单元中,3. 存储器寻址(续3) ——寄存器间接寻址1,操作数在存储器中,而操作数所在地址的偏移量在指令给定的寄存器中3. 存储器寻址(续4) ——寄存器间接寻址2,16位寻址:SI、DI、BX及BP等4个16位寄存器作为间接寻址寄存器,用来存储操作数的段内偏移量若用SI、DI、BX来间接寻址,则默认操作数在DS段;若用BP来间接寻址,则默认操作数在SS段;否则需要使用段超越前缀进行变换 例如,将数据段中由BX指定偏移地址处的存储数据送至AX寄存器 MOV AX,[BX] ;DS:[BX]→AX 该指令中的有效地址存放在BX寄存器中,而数据则存放在数据段主存单元中,假设BX内容为3000H,则该指令等同于 MOV AX,[3000H]3. 存储器寻址(续5) ——寄存器间接寻址3,32位寻址:用EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP等8个32位寄存器作为间接寻址寄存器,用它们存放操作数的段内偏移量。
若用EAX、EBX、ECX、EDX、ESI、EDI来间接寻址,则默认操作数在DS段;若用EBP和ESP来间接寻址,则默认操作数在SS段,否则使用段超越前缀 例如,MOV EDI ,80H MOV EAX,[EDI] 该程序段,将DS段有效地址为80H的连续四个单元(80H~83H)的内容送至EAX寄存器3. 存储器寻址(续6) ——基址寻址1,在这种寻址方式中,操作数在存储器中,其有效地址为基址寄存器的内容加上指令中给出的偏移量之和3. 存储器寻址(续7) ——基址寻址2,16位寻址:在这种寻址方式中,操作数在存储器中,而操作数所在存储器地址的有效值为基址寄存器的内容加上指令中给出的偏移量之和 用BX及BP等2个16位寄存器作为基址寄存器若用BX进行基址寻址,则操作数所在的约定段是DS段;若用BP进行基址寻址,则操作数所在的约定段是SS段;若不使用约定段,则加段超越前缀3. 存储器寻址(续8) ——基址寻址3,32位寻址:用EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP等8个32位寄存器作为基址寻址寄存器。
若用EAX、EBX、ECX、EDX、ESI、EDI来进行基址寻址,则操作数所在的约定段是DS段;若用EBP和ES。
