版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、汇编语言程序设计Assembly Language Programming,第二章 80 x86计算机系统组织,计算机的基本结构 CPU Register Memory 内存特性 分段技术,2.1 计算机基本结构,中央处理机 CPU,总线控制 逻辑,接 口,接 口,存储器,大容量 存储器,I/O设备,I/O子系统,系统总线,组成: 算术逻辑部件、控制部件和寄存器组。 CPU的作用: 执行算术与逻辑运算。 控制指令的执行。 编程结构: 对汇编语言程序员来说,关心的是其中的寄存器。,CPU,总线是部件之间进行数据(电信号)交换的通道。 80 x86计算机的系统总线分为3类: 数据总线 地址总线 控
2、制总线,系统总线,数据总线 数据总线是用来传递数据的,定义了CPU在每个内存周期所能存取数据的位数。 80 x86系列CPU的数据总线为8位、16位、32位或64位。这就是“为什么通常的数据存取是以8位、16位、32位或64位进行的”。 数据总线越宽,处理能力越强。 具有N位数据总线并不意味着CPU只能处理N位数据。,系统总线,地址总线 地址总线用来指出数据的地址(内存或I/O)。 地址总线的位数决定了最大可编址的内存与I/O空间。 对于N位地址总线,CPU可以提供2N个不同地址:02N -1。 地址总线由内存与I/O子系统共享使用(I/O只用低16位)。(如何区分?) 控制总线 控制总线用来
3、控制CPU与内存和I/O设备之间的数据传送方式(如传送方向)。,系统总线,内存是存放指令和数据的部件,由若干内存单元构成。 80 x86的内存以字节编址:每个内存单元有唯一的地址,可存放1个字节。 内存单元的2个要素:地址(编号)与值(内容)。 (100H)=34H 1个字占据2个相邻的内存单元; 低字节在低地址单元,高字节在高地址单元;字的地址由其低地址来表示。双字也类似。 同一地址可以看作是字节、字或双字单元的地址。(?),内存,I/O子系统 通过接口电路与微机系统连接 I/O接口由若干寄存器组成:数据寄存器、状态寄存器、命令寄存器 I/O端口:即I/O地址,是区分I/O设备及其寄存器的编
4、号。汇编语言程序员看到的,是端口 8086计算机采用16位表示I/O端口 I/O端口与内存地址如何区分?,I/O 子系统,2.2 80 x86 的寄存器组,80868088中共有14个16位寄存器 寄存器在CPU内部,所以访问速度快。但容量小,外存,内存,寄存器与存储器的比较: 寄 存 器 存 储 器 在CPU内部 在CPU外部 访问速度快 访问速度慢 容量小,成本高 容量大,成本低 用名字表示 用地址表示 没有地址 地址可用各种方式形成,专用寄存器,数据寄存器:AX/BX/CX/DX,存放任何数据信息。暂存计算的中间结果,数据中转站。 每个寄存器又有它们各自的专用目的: AX (Accumu
5、lator)累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息等; BX (Base)基址寄存器,常用做存放存储器地址; CX (Count)计数器,作为循环和串操作等指令中的隐含计数器; DX (Data)数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。,16位一分为二,AX = 1234H,AH= 12H AL=34H,AX = CDABH,AH = CDH AL = ABH,80386及其后继:EAX,EBX,ECX,EDX,EAX = 12345678H,AX = 5678H,AH = 56H AL = 78H,变址寄存器:SI/DI,变址寄存器常用于存储器寻址
6、时提供地址 串操作类指令中,SI(Source Index)是源变址寄存器 串操作类指令中,DI (Destination Index)是目的变址寄存器 16位,不可拆分使用 80386及其后继:ESI,EDI,指针寄存器:SP/BP,指针寄存器用于寻址内存堆栈内的数据 SP (Stack Pointer)为堆栈指针寄存器,指示栈顶的偏移地址 SP 不能再用于其他目的,具有专用目的 BP (Base Pointer)为基址指针寄存器,表示数据在堆栈段中的基地址 SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址 80386及其后继:ESP,EBP,段寄存器:CS/DS/SS/E
7、S,8086CPU的个16位的段寄存器 代码段寄存器CS (Code Segment) 数据段寄存器DS (Data Segment) 堆栈段寄存器SS (Stack Segment) 附加数据段寄存器ES (Extra Segment) 段寄存器用来确定该段在内存中的起始地址。 用途特定,不可分开使用。 80386及其后继:FS GS,IP (Instruction Pointer),指令指针寄存器IP,指示代码段中指令的偏移地址 它与代码段寄存器CS联用,确定下一条指令的物理地址 计算机通过CS : IP寄存器来控制指令序列的执行流程 IP寄存器是一个专用寄存器,程序一般不可直接使用该寄存
8、器。 80386及其后继:EIP,标志寄存器,用途:标志寄存器F(FLAGS),又称程序状态字寄存器PSW,是用以记录或存放状态标志和控制标志信息的。 状态标志位用以记录当前运算结果的状态信息 控制标志位用以存放控制CPU工作方式的标志信息。 80386及其后继:FLAGS,状态标志位,(1)进位标志CF (2)零标志ZF (3)符号标志SF (4)溢出标志 OF (5)奇偶标志 PF (6)辅助进位标志AF,控制标志位,方向标志DF 中断允许标志IF 追踪标志TF,为什么要标志寄存器?,Why状态标志位? 一般只需要计算结果 结果特征有时更重要 Why控制标志位 改变CPU工作方式,标志寄存
9、器设置,状态标志位的设置是由CPU根据当前程序运行结果的状态自动完成的。状态标志位信息一般用作转移指令的转移控制条件。 控制标志位由程序设置,控制CPU的工作方式,进位标志CF(Carry Flag),当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF = 1;否则CF = 0。 例如: 3AH + 7CHB6H 没有进位:CF = 0 AAH + 7CH(1)26H 有进位:CF = 1,零标志ZF(Zero Flag),若运算结果为0,则ZF = 1,否则ZF = 0 例如: 3AH + 7CHB6H,结果不是零: ZF = 0 86H + 7AH(1)00H,结果
10、是零(为什么?): ZF = 1 注意:ZF为1表示的结果是0,符号标志SF(Sign Flag),有符号数据利用最高有效位表示数据的符号。所以,最高有效位就是符号标志的状态。 运算结果最高位为1,则SF = 1;否则SF = 0。 例如: 3AH + 7CHB6H, 最高位D71:SF = 1 86H + 7AH(1)00H, 最高位D70:SF = 0,奇偶标志PF (Parity Flag),当运算结果最低字节中“1”的个数为偶数时,PF = 1;否则PF = 0。 例如: 3AH + 7CHB6H10110110B, 结果中有5个1,是奇数:PF = 0 注意:PF标志仅反映最低8位中
11、“1”的个数是偶或奇,即使是进行16位字操作。,辅助进位标志AF (Auxiliary Carry Flag),运算时D3位(低半字节)有进位或借位时,AF = 1;否则AF = 0。 例如: 3AH + 7CHB6H D3有进位:AF = 1 这个标志主要由处理器内部使用,用于十进制算术运算指令中,用户一般不必关心。(类似于进位标志),溢出标志OF(Overflow Flag),若算术运算的结果有溢出,则OF=1;否则 OF0。 只是对有符号数而言。对无符号数而言,OF1并不意味着结果出错。 80H - 01H7FH = 127, OF1 对于无符号数而言,128 1 127,正确 对于有符
12、号数而言,128 1 127,错误,什么是溢出,处理器内部以补码表示有符号数 8个二进制位能够表达的整数范围是:+127 -128 16位表达的范围是:+32767 -32768 如果运算结果超出了这个范围,就是产生了溢出 有溢出,说明有符号数的运算结果不正确 无符号数有溢出吗? FFH + 01H = 00H, CF = 1, 进位溢出,溢出的判断,方法一(CPU): 如果最高位与次高位同时向前有或无进/借位,则OF 0;(?) 如果最高位与次高位不同时向前有或无进/借位,则OF 1; 方法二: 两个正补码数相加结果为负 两个负补码数相加结果为正 正补码数 负补码数为负 负补码数 正补码数为
13、正 其他情况,OF 1,OF 0,溢出和进位,溢出标志OF和进位标志CF是两个意义不同的标志 进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确; 可恢复的错误。 溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确。 不可恢复错误。,溢出和进位的对比,例1:7FH + 01H80H 无符号数运算:1271128, 范围内,无进位 有符号数运算: 1271128 ,范围外,有溢出 例2:FFH + 01H(1)00H 无符号数运算:2551256,范围外,有进位 有符号数运算:110 , 范围内,无溢出,如何运用溢出和进位,处理器对两个操作数进行运算时,并不知道操作数是有符号数
14、还是无符号数,所以全部设置,按各自规则。 应该利用哪个标志,则由程序员来决定。 将参加运算的操作数是无符号数,就应该关心CF; 将参加运算的操作数是有符号数,则要注意是否溢出。 我怎么知道是什么数? 除了你没人知道,,例: MOV AX, 1 MOV BX, 2 ADD AX, BX 指令执行后,(AX)=3, OF=0, CF=0, ZF=0, SF=0 例: MOV AX, FFFFH MOV BX, 1 ADD AX, BX 指令执行后,(AX)=0, OF=0, CF=1, ZF=1, SF=0,方向标志DF(Direction Flag),用于串操作指令中,控制地址的变化方向: 设置
15、DF0,串操作的存储器地址自动增加; 设置DF1,串操作的存储器地址自动减少。 CLD指令复位方向标志:DF0 STD指令置位方向标志:DF1,中断允许标志IF(Interrupt-enable Flag),用于控制外部可屏蔽中断是否可以被处理器响应: 设置IF1,则允许中断; 设置IF0,则禁止中断。 CLI指令复位中断标志:IF0 STI指令置位中断标志:IF1,陷阱标志TF(Trap Flag),用于控制处理器是否进入单步操作方式: 设置TF0,处理器正常工作; 设置TF1,处理器单步执行指令。 单步执行指令处理器在每条指令执行结束时,便产生一个编号为1的内部中断。这种内部中断称为单步中
16、断,所以TF也称为单步标志。 利用单步中断可对程序进行逐条指令的调试。 这种逐条指令调试程序的方法就是单步调试。,2.3 80 x86 CPU的工作模式,实模式 保护模式 虚拟8086模式,实模式(Real Mode),与8086兼容的工作模式,只有低20位地址线起作用,仅能寻址第一个1MB的内存空间。 MS DOS运行在实模式下, 80286-Pentium系列复位后工作于实模式,直到OS引导后,切换到保护模式。,实模式(Real Mode),分段技术 Why? 矛盾:AB 20位 DB 16位 地址:20位地址Register:16位 How? 用两个16位Register 方案?,方案,
17、用两个16位Register,16,16,20,分段定义,将存储器分成若干个逻辑段 段首地址必须为:*0H。其有效地址“*H”存放在段寄存器中,称为段地址。 段中某一个单元相对于段首的距离称为偏移地址,偏移地址存放在偏移地址寄存器中。 段的长度不超过216=64K。(仅能访问4*64K?),对 比,物理地址 = 16 段地址 + 偏移地址,段地址,偏移地址,物理地址,段首地址,4个专门存放段地址的段寄存器(16位) 代码段 段寄存器 CS 数据段 段寄存器 DS 堆栈段 段寄存器 SS 附加段 段寄存器 ES,例:(DS)=3000H, 偏移=1234H, 物理地址=16d (DS) + 偏移 =31234H,存储器,8K代码,2K数据,256堆栈,02000H,04800H,04000H,0200H,0400H,0480H,逻辑段,CPU形成物理地址的过程,ALU完成加法,地址加法器 段地址一般在程序开始时预定 访问某一个内存单元,程序中只需要给出16位偏移地址 CPU几种典型的操作 取 指 令:指令单元地址(CS)10HIP 堆栈操作:堆栈数据地址(SS)10H偏移 内存数据:内存数据地址(DS)10H偏移,保护模式,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 服务理念介绍课件
- 服务经营课件
- 服务技巧课件
- 法务工作讲解课件
- 服务奉献的课件
- 服务常识与技巧课件
- 服务案例模板课件
- 沸腾物理讲解课件
- 法庭背景介绍课件
- 技术合作项目推进计划确认函(4篇)
- 2026年广东省环保集团有限公司人员招聘考试模拟试题及答案
- 2026-2027北京初中语文秋季期七年级上册期中模拟试卷(三)
- 专项债项目运营管理指南
- 2026年《中国慢性阻塞性肺疾病诊疗指南(2026版)》
- 纪委谈话室建设标准方案
- 公司制度体系内部流程
- 手指点穴课件
- 普通密码管理培训课件
- 2025年寄生虫防治竞赛试卷(附答案)
- 化学试卷【高一】浙江省2025学年第一学期温州十校联合体高一年级期中联考(11.12-11.14)
- (2025年)职业卫生评价考试题库及答案
评论
0/150
提交评论