




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章 IA-32结构微处理器 2.1 IA-32结构微处理器的概要历史(略) 2.2 IA-32微处理器的功能结构 2.3 IA-32结构微处理器的执行环境 注:IA-32,即 Intel架构32位及以下微处理器; 只讲16位微处理器部分。 本章主要教学内容 nIntel 8086/8088的功能结构 nIntel 8086/8088的寄存器组 n存储器组织与段寄存器 本章教学目的及要求 n掌握 Intel 8086的功能结构及特点 n掌握 Intel 8086的寄存器组(包括分类 、名称、作用等) n掌握标志寄存器各个标志位的含义和用途 n掌握存储器的组织方式和段寄存器的作用 2.2 IA-32微处理器的功能结构 n微处理器是微机的硬件核心 n主要包含指令执行的运算和控制部件,还有 多种寄存器 n对程序员来说,微处理器抽象为以名称存取 的寄存器 我们只讲16位微处理器 Intel 8086/8088 2.2.1 Intel 8086的功能结构 n8086的内部结构从功能分成两个单元 n总线接口单元BIU(Bus Interface Unit) 管理8086与系统总线的接口,负责CPU对存储 器和外设进行访问 n执行单元EU(Execution Unit)负责指令的 译码、执行和数据的运算 n两个单元相互独立,分别完成各自操作 n两个单元可以并行执行,实现指令取指和执 行的流水线操作 2.3 IA-32微处理器的执行环境 n对汇编语言程序员来说,IA-32微处理器的 执行环境包括内存(主存储器)和可编程的 寄存器组。 n内存(主存储器)是通过地址空间(即存储 器的地址)来访问的。 n可编程的寄存器组是通过各自的名字来访问 的。(回忆:寄存器是CPU内部用来存放 数据和指令的一种基本逻辑部件) 2.3.1 Intel8086的寄存器组 Intel8086内部包含下列寄存器(组): n执行单元EU 8个通用寄存器 AX BX CX DX SP BP SI DI n1个指令指针寄存器 IP n1个标志寄存器 FLAGS n4个段寄存器 CS DS SS ES 1. 8086的通用寄存器 n8086的16位通用寄存器是: AXBX CX DX SIDI BP SP 其中前4个数据寄存器都还可以分成高8位和 低8位两个独立的寄存器 n8086的8位通用寄存器是: AHBHCHDH ALBLCLDL 对其中某8位的操作,并不影响另外对应8位 的数据 数据寄存器 n数据寄存器用来存放计算的结果和操作数,也可 以存放地址 n每个寄存器又有它们各自的专用目的 nAX(Accumulator)累加器,使用频度最高 ,用于算术、逻辑运算以及与外设传送信息等; nBX(Base)基址寄存器,常用来存放存储器 地址; nCX(Count)计数器,作为循环和串操作等 指令中的隐含计数器; nDX(Data)数据寄存器,常用来存放双字长 数据的高16位,或存放外设端口地址。 变址寄存器 n变址寄存器常用于存储器寻址时提供地址 nSI(Source Index)是源变址寄存器 nDI(Destnation Index)是目的变址寄存器 n串操作类指令中,SI和DI具有特别的功能 指针寄存器 指针寄存器用于寻址内存堆栈内的数据: nSP(Stack Pointer)为堆栈指针寄存器,指示 栈顶的偏移地址 SP不能再用于其他目的,具有专用目的 nBP(Base Pointer)为基址指针寄存器,表示 数据在堆栈段中的基地址 nSP和BP寄存器与SS段寄存器联合使用以确定堆 栈段中的存储单元地址 堆栈(Stack) 堆栈是内存中一个特殊的区域: n它采用先进后出FILO(First In Last Out)或后进先出LIFO(Last In First Out)的原则进行存取操作,而不是随机存 取操作方式。 n堆栈通常由处理器自动维持。在8086中, 由堆栈段寄存器SS和堆栈指针寄存器SP共 同指示 指令指针IP n指令指针寄存器IP(Instruction Pointer),指 示代码段中指令的偏移地址 n它与代码段寄存器CS联用,确定下一条指令的物 理地址 n计算机通过CS : IP寄存器来控制指令序列的执行 流程 nIP寄存器是一个专用寄存器 2. 标志寄存器 n标志(Flag)用于反映指令执行结果或控制 指令执行形式 n8086处理器的各种标志形成了一个16位的 标志寄存器FLAGS(程序状态字PSW寄存器 ) OF 1115 12 DF 10 IF 9 TF 8 SF 7 ZF 65 AF 43 PF 21 CF 0 程序设计需要利用标志的状态 标志的分类 n状态标志用来记录程序运行结果的状态 信息,许多指令的执行都将相应地设置它 CF ZF SF PF OF AF n控制标志可由程序根据需要用指令设置 ,用于控制处理器执行指令的方式 DF IF TF 进位标志CF(Carry Flag) n当运算结果的最高有效位有进位(加法)或 借位(减法)时,进位标志置1,即CF = 1; 否则CF = 0。 3AH + 7CHB6H,没有进位:CF = 0 AAH + 7CH(1)26H,有进位:CF = 1 零标志ZF(Zero Flag) n若运算结果为0,则ZF = 1; 否则ZF = 0 3AH + 7CHB6H,结果不是零:ZF = 0 84H + 7CH(1)00H,结果是零:ZF = 1 注意:ZF为1表示的结果是0 符号标志SF(Sign Flag) n运算结果最高位为1,则SF = 1;否则SF = 0 3AH + 7CHB6H,最高位D71:SF = 1 84H + 7CH(1)00H,最高位D70:SF = 0 有符号数据用最高有效位表示数据的符号 所以,最高有效位就是符号标志的状态 奇偶标志PF(Parity Flag) n当运算结果最低字节中“1”的个数为零或偶 数时,PF = 1;否则PF = 0 3AH + 7CHB6H10110110B 结果中有5个1,是奇数:PF = 0 PF标志仅反映最低8位中“1”的个数是 偶或奇,即使是进行16位字操作 溢出标志OF(Overflow Flag) n若算术运算的结果有溢出, 则OF1;否则 OF0 3AH + 7CHB6H,产生溢出:OF = 1 (正数加正数结果为负数!故已溢出。) AAH + 7CH(1)26H,没有溢出:OF = 0 (有进位,但未溢出!) 溢出标志OF(Overflow Flag) 问题 n什么是溢出? n溢出和进位有什么区别? n处理器怎么处理,程序员如何运用? n如何判断是否溢出? 什么是溢出 n处理器内部以补码表示有符号数 n8位表达的整数范围是:127128 n16位表达的范围是:3276732768 n如果运算结果超出这个范围,就产生了溢出 n有溢出,说明有符号数的运算结果不正确 3AH7CHB6H,就是58124182, 已经超出128127范围,产生溢出,故OF1; 另一方面,补码B6H表达的真值是-74,显然运算结果 也不正确。 溢出和进位 n溢出标志OF和进位标志CF是两个意义不同的标志 n进位标志表示无符号数运算结果是否超出范围,运 算结果仍然正确; n溢出标志表示有符号数运算结果是否超出范围,运 算结果已经不正确。 请看例子请看例子 溢出和进位的对比 例1:3AH + 7CHB6H 无符号数运算: 58124182 范围内,无进位 有符号数运算: 58124182 范围外,有溢出 例2:AAH + 7CH(1)26H 无符号数运算: 170124294 范围外,有进位 有符号数运算: 8612438 范围内,无溢出 如何运用溢出和进位 n处理器对两个操作数进行运算时,按照无符 号数求得结果,并相应设置进位标志CF;同 时,根据是否超出有符号数的范围设置溢出 标志OF。 n应该利用哪个标志,则由程序员来决定。也 就是说,如果将参加运算的操作数认为是无 符号数,就应该关心进位;认为是有符号数 ,则要注意是否溢出。 溢出的判断 判断运算结果是否溢出有一个简单的规则: n只有当两个相同符号数相加(包括不同符号 数相减),而运算结果的符号与原数据符号 相反时,产生溢出;因为,此时的运算结果 显然不正确 n其他情况下,则不会产生溢出 辅助进位标志AF(Auxiliary Carry Flag) 3AH + 7CHB6H,D3有进位:AF = 1 运算时D3位(低半字节)有进位或借 位时,AF = 1;否则AF = 0。 这个标志主要由处理器内部使用, 用于十进制算术运算调整指令中,用 户一般不必关心 练习题 执行下面的运算,确定FLAGS中的各个状态标志值 (1)5439H + 456AH 0101010000111001 0100010101101010 1001100110100011 练习题 执行下面的运算,确定FLAGS中的各个状态标志值 (1)5439H + 456AH 0101010000111001 0100010101101010 1001100110100011 运算结果最高位为1SF=1; 运算结果本身0 ZF=0; 低8位中1的个数为偶数个 PF=1; 最高位没有进位 CF=0; D3位向D4位有进位 AF=1; 两个正数相加等于负数OF=1。 练习题 执行下面的运算,确定FLAGS中的各个状态标志值 (2) A195H - 69CAH (减法用“直接法”) 1010000110010101 0110100111001010 0011011111001011 练习题 执行下面的运算,确定FLAGS中的各个状态标志值 (2) A195H - 69CAH (减法用“直接法”) 1010000110010101 0110100111001010 0011011111001011 运算结果最高位为0SF=0; 运算结果本身0 ZF=0; 低8位中1的个数为奇数个 PF=0; 最高位没有借位 CF=0; D3位向D4位有借位 AF=1; 负数减正数等于正数OF=1。 方向标志DF(Direction Flag) n用于串操作指令中,控制地址的变化方向: 设置DF0,存储器地址自动增加; 设置DF1,存储器地址自动减少。 CLD 指令复位方向标志:DF0 STD 指令置位方向标志:DF1 中断允许标志IF(Interrupt-enable Flag) n用于控制外部可屏蔽中断是否可以被处理器 响应: 设置IF1,则允许中断; 设置IF0,则禁止中断。 CLI 指令复位中断标志:IF0 STI 指令置位中断标志:IF1 陷阱标志TF(Trap Flag) n用于控制处理器进入单步操作方式: 设置TF0,处理器正常工作; 设置TF1,处理器单步执行指令。 单步执行指令处理器在每条指令执行结 束时,便产生一个编号为1的内部中断 这种内部中断称为单步中断 所以TF也称为单步标志 n利用单步中断可对程序进行逐条指令的调试 n这种逐条指令调试程序的方法就是单步调试 2.3.2 存储器组织与段寄存器 n寄存器是微处理器内部暂存数据的存储单元 ,以名称表示 n存储器则是微处理器外部存放程序及其数据 的空间 n程序及其数据可以长久存放在外存,在程序 需要时才进入内存 n内存需要利用地址进行区别 数据信息的表达单位 n计算机中信息的单位 n二进制位Bit:存储一位二进制数:0或1 n字节Byte:8个二进制位,D7D0 n字Word:16位,2个字节,D15D0 n双字DWord:32位,4个字节,D31D0 n最低有效位LSB:数据的最低位,D0位 n最高有效位MSB:数据的最高位,对应字节 、字、双字分别指D7、D15、D31位 图示图示 1. 数据的存储格式 D7D0字节 D15D0字 D31D0双字 D7 D0 00006H 78H 00005H 56H 00004H 12H 00003H 34H 00002H 00001H 00000H 低地址 存储单元地址及其存储内容 n每个存储单元都有一个编号,被称为 存储器地址 n每个存储单元存放一个字节的内容 0002H单元存放有一个数据34H 表达为0002H34H 图示图示 图中2号“字”单元的内容为: 0002H = 1234H 2号“双字”单元的内容为: 0002H = 78561234H 多字节数据存放方式 n多字节数据在存储器中占连续的多个存储单 元: n存放时,低字节存入低地址,高字节存入高地址 ; n表达时,用它的低地址表示多字节数据占据的地 址空间。 图示图示 图中2号“字”单元的内容为: 0002H = 1234H 2号“双字”单元的内容为: 0002H = 78561234H 多字节数据存放方式 n多字节数据在存储器中占连续的多个存储单 元: n存放时,低字节存入低地址,高字节存入高地址 ; n表达时,用它的低地址表示多字节数据占据的地 址空间。 80x86处理器采用“低对低、高对 高”的存储形式,被称为“小端方式 Little Endian”。 相对应还存在“大端方式Big Endian”。 图示图示 数据的地址对齐 n同一个存储器地址可以是字节单元地址、字 单元地址、双字单元地址等等 n字单元安排在偶地址(xxx0B)、双字单 元安排在模4地址(xx00B)等,被称为“地 址对齐(Align)” n对于不对齐地址的数据,处理器访问时,需 要额外的访问存储器时间 n应该将数据的地址对齐,以取得较高的存取 速度 视具体情况来确定 2. 存储器的分段管理 n8086 CPU有20条地址线 n最大可寻址空间为2201MB n物理地址范围从00000HFFFFFH n8086 CPU将1MB空间分成许多逻辑段( Segment) n每个段最大限制为64kB(因为地址寄存器是 16位的) n段地址的低4位为0000B n这样,一个存储单元除具有一个唯一的物理 地址外,还具有多个逻辑地址 物理地址和逻辑地址 n对应每个物理存储单元都有一个唯一的20位 编号,就是物理地址,从00000HFFFFFH, 是存储器的绝对地址。 n分段后在用户编程时,采用逻辑地址,形式 为 段基地址 : 段内偏移地址 分隔符 逻辑地址 n段地址说明逻辑段在内存中的起始位置 n8086规定段地址必须是模16地址:xxxx0H n省略低4位0000B,段地址就可以用16位数 据表示,就能用16位段寄存器表达段地址 n偏移地址说明内存单元距离段起始位置的偏 移量 n每段不超过64kB,偏移地址也可用16位数 据表示 物理地址和逻辑地址的转换 n将逻辑地址中的段地址左移4位,加上偏移地 址就得到20位物理地址 n一个物理地址可以有多个逻辑地址 逻辑地址 1460:100、1380:F00 物理地址 14700H 14700H 14600H 100H 14700H 13800H F00H 14700H 段地址左移4位 加上偏移地址 得到物理地址 物理地址和逻辑地址的转换 物理地址的形成 逻辑地址与物理地址 20000H 25F60H 25F61H 25F62H 25F63H 2000H 段基址 逻 辑 地 址 段内偏移地址 5F62H 3. 段寄存器 n8086有4个16位段寄存器 nCS(代码段)指明代码段的起始地址 nSS(堆栈段)指明堆栈段的起始地址 nDS(数据段)指明数据段的起始地址 nES(附加段)指明附加段的起始地址 n每个段寄存器用来确定一个逻辑段的起始地 址,每种逻辑段均有各自的用途 代码段(Code Segment) n代码段用来存放程序的指令序列 v代码段寄存器CS存放代码段的段地址 v指令指针寄存器IP指示下条指令的偏移地址 n处理器利用CS:IP取得下一条要执行的 指令 堆栈段(Stack Segment) n堆栈段确定堆栈所在的主存区域 v堆栈段寄存器SS存放堆栈段的段地址 v堆栈指针寄存器SP指示堆栈栈顶的偏移地址 n处理器利用SS:SP操作堆栈顶的数据 数据段(Data Segment) n数据段存放运行程序所用的数据 v数据段寄存器DS存放数据段的段地址 v由各种存储器寻址方式(有效地址EA)得到 存储器中操作数的偏移地址 n处理器利用DS:EA存取数据段中的数据 附加段(Extra Segment) n附加段是附加的数据段,也用于数据的保存 : v附加段寄存器ES存放附加段的段地址 v由各种存储器寻址方式(有效地址EA)得到存 储器中操作数的偏移地址 n处理器利用ES:EA存取附加段中的数据 n串操作指令将附加段作为其目的操作数的存 放区域 段寄存器和其他寄存器的组合指向 如何分配各个逻辑段 n程序的指令序列必须安排在代码段 n程序使用的堆栈一定在堆栈段 n程序中的数据默认是安排在数据段,也 经常安排在附加段,尤其是串操作的目 的区必须是附加段 n数据的存放比较灵活,实际上可以存放 在任何一种逻辑段中 段超越前缀指令 n没有指明时,一般的数据访问在DS段;使用 BP访问内存,则在SS段 n默认的情况允许改变,需要使用段超越前缀 指令;8086指令系统中有4个: CS:;代码段超越,使用代码段的数据 SS: ;堆栈段超越,使用堆栈段的数据 DS: ;数据段超越,使用数据段的数据 ES: ;附加段超越,使用附加段的数据 段超越的示例 n没有段超越的指令实例: MOV AX,2000H ;AXDS:2000H ;从默认的DS数据段取出数据 n采用段超越前缀的指令实例: MOV AX,ES:2000H;AXES:2000H ;从指定的ES附加段取出数据 段寄存器的使用规定 访问存储器的方式默认可超越偏移地址 取指令CS无IP 堆栈操作SS无SP 一般数据访问DSCS ES SS有效地址EA BP基址的寻址方式SSCS ES DS有效地址EA 串操作的源操作数DSCS ES SSSI 串操作的目的操作数ES无DI 存储器的分段 n8086对逻辑段要求: n段地址低4位均为0 n每段最大不超过64kB n8086对逻辑段并不要求: n必须是64kB n各段之
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年学历类自考专业(法律)西方法律思想史-知识产权法参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)票据法-刑法学参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)婚姻家庭法-保险法参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)公司法-金融法参考题库含答案解析(5卷)
- 2025年学历类自考专业(工商企业管理)国际贸易理论与实务-国际贸易理论与实务参考题库含答案解析(5卷)
- 2025年学历类自考专业(国贸)国际技术贸易-基础英语参考题库含答案解析(5卷)
- 2025年学历类自考专业(国贸)中国对外贸易-涉外经济法参考题库含答案解析(5卷)
- 2025年学历类自考专业(公共关系)公共关系口才-传播学概论参考题库含答案解析(5卷)
- 2025年学历类成考专升本生态学基础-思想道德修养与法律基础参考题库含答案解析(5卷)
- 2025年学历类成考专升本-计算机基础参考题库含答案解析(5卷)
- 采购进口生蚝合同协议书
- 鼓号队培训课件内容
- 液体外渗的预防与处理 2
- 2025山西吕梁文水县公办幼儿园幼儿业务辅助人员招聘120人笔试参考题库附答案解析
- 2024年云南航空产业投资集团招聘考试真题
- 柚子树栽培技术
- 蓝莓种植加工一体化发展项目可行性研究报告写作模板-申批备案
- 2025年秋季新学期教学工作会议校长讲话:一心一意抓质量一点一滴见成效一步一脚印做教学
- 2025贵州省专业技术人员继续教育公需科目考试题库(2025公需课课程)
- 一年级新生家长会课件(共25张课件)
- Scala基础语法课件汇总整本书电子教案全套课件完整版ppt最新教学教程
评论
0/150
提交评论