汇编语言程序设计课件2教学幻灯片

上传人:yuzo****123 文档编号:141292641 上传时间:2020-08-06 格式:PPT 页数:56 大小:498.50KB
返回 下载 相关 举报
汇编语言程序设计课件2教学幻灯片_第1页
第1页 / 共56页
汇编语言程序设计课件2教学幻灯片_第2页
第2页 / 共56页
汇编语言程序设计课件2教学幻灯片_第3页
第3页 / 共56页
汇编语言程序设计课件2教学幻灯片_第4页
第4页 / 共56页
汇编语言程序设计课件2教学幻灯片_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《汇编语言程序设计课件2教学幻灯片》由会员分享,可在线阅读,更多相关《汇编语言程序设计课件2教学幻灯片(56页珍藏版)》请在金锄头文库上搜索。

1、第二章 80 x86计算机组织, 2.180 x86微处理器 2.2基于微处理器的计算机系统构成 2.3中央处理机 2.4存储器 2.5外部设备, 2.180 x86微处理器, 2.2基于微处理器的计算机系统构成,系统资源:CPU、存储器、I/O端口,8086编程结构,编程结构,BIU(总线接口部件) 负责与存储器及I/O设备交换信息指令 数据 EU(执行部件) 负责指令的执行,工作过程,两部分并行工作,提高了工作效率 每当指令队列中有两个空字节,BIU自动把内存中的指令送入指令队列中 EU从指令队列中取出指令代码去执行(此时,BIU可继续取指)。如在指令执行过程中需要访问存储器或I/O设备,

2、则EU会请求BIU进入总线周期,去完成访问存储器或I/O端口的操作 BIU处于空闲状态,则立即响应EU的总线请求 BIU正在取指,完成当前取指操作后响应EU的请求 当指令队列已满,且EU没有总线请求时, BIU进入空闲状态 在执行转移、调用和返回指令时,BIU指令队列的原有内容会被自动清除,而装入转移目标处的指令。,二、8086/8088的寄存器组,是基本资源,亦是操作对象。对内部寄存器的使用尤为重要:可实现的操作多 速度快 1.通用寄存器2.段寄存器3.控制寄存器,1.通用寄存器,8个16位寄存器位于EU中 数据寄存器(共4个16位) 指针及变址寄存器(共4个16位),1.通用寄存器数据寄存

3、器,AX(Accumulator)累加器:算术运算的主要R ,所有的I/O指令都用此R BX(Base)基址寄存器:除通用外,计算存储器地址做基址用 CX(Count)计数器:通用,作循环计数器 DX(Data)数据寄存器:常用来存放双字长数据的高16位,或存放外设端口地址 特点: 可作16位R使用,也可将每个拆成2个8位寄存器使用,对其中某8位的操作,并不影响另外对应8位的数据 具有良好的通用性:在程序中即可存放操作数,也可存放操作结果,1.通用寄存器指针及变址寄存器,变址寄存器 SI(Source Index)源变址寄存器 DI(Destination Index)目的变址寄存器 指针寄存

4、器 SP(Stack Point)堆栈指针寄存器栈顶的偏移地址 BP(Base Point)基址指针寄存器默认SS段 特点: 可用于存放操作数,但只能作为16位R使用,2.段寄存器,4个16 bits Segment Registers 在8086/8088系统中,存储器是按段进行组织的,段寄存器就是用来存放段基值的(段起始地址的高16位) 运行程序时所必要的指令、数据等存放于内存的不同段内,根据其用途的不同,又不同的段寄存器指示,并称其为当前段,2.段寄存器,CS:代码段寄存器对应的段存放指令代码 DS:数据段寄存器对应的段存放数据或变量 SS:堆栈段寄存器对应的段存放栈操作的数据 ES:附

5、加段寄存器对应的段一般存放数据或变量 整个内存可划分为多个段,但当前段最多只能有4个,如果需要改变当前段,则可通过程序修改段寄存器的内容,3.控制寄存器,3.控制寄存器IP,IP(Instruction Pointer)指令指针寄存器IP (16bits),指示代码段中指令的偏移地址 它与代码段寄存器CS联用,确定下一条指令的物理地址 计算机通过CS : IP寄存器来控制指令序列的执行流程 IP寄存器是一个专用寄存器 不能对IP指针直接进行访问,16 bits 偏移量,3.控制寄存器FLAGS,标志(Flag)用于反映指令执行结果或控制指令执行形式 8086处理器的各种标志形成了一个16位的标

6、志寄存器FLAGS(程序状态字PSW寄存器),标志位的分类,状态标志(6):表示前面的操作执行后,ALU所处的状态,将影响后面的操作 控制标志(3):用专门的指令进行设置,用于控制处理器执行指令的方式,标志位的功能进位标志CF(Carry Flag),记录运算时从最高有效位产生的进/借位值,3AH + 7CHB6H,没有进位:CF = 0 AAH + 7CH(1)26H,有进位:CF = 1,标志位的功能零标志ZF(Zero Flag),3AH + 7CHB6H,结果不是零:ZF = 0 84H + 7CH(1)00H,结果是零:ZF = 1,注意:ZF为1表示的结果是0,标志位的功能符号标志

7、SF(Sign Flag),表明有符号数运算结果的正负,有符号数据用最高有效位表示数据的符号 所以,最高有效位就是符号标志的状态,3AH + 7CHB6H,最高位D71:SF = 1 84H + 7CH(1)00H,最高位D70:SF = 0,标志位的功能奇偶标志PF(Parity Flag),表明运算结果最低字节中“1”的个数的奇偶,3AH + 7CHB6H10110110B 结果中有5个1,是奇数:PF = 0,PF标志仅反映最低8位中“1”的个数是偶或奇,即使是进行16位字操作,标志位的功能溢出标志OF(Overflow Flag),表明补码的运算结果是否有溢出,3AH + 7CHB6H

8、,产生溢出:OF = 1 AAH + 7CH(1)26H,没有溢出:OF = 0,关于溢出,处理器内部以补码表示有符号数 8位表达的整数范围是: 128 127 16位表达的范围是: 32768 32767 如果运算结果超出这个范围,就产生了溢出 有溢出,说明有符号数的运算结果不正确,3AH7CHB6H,就是58124182, 已经超出128127范围,产生溢出,故OF1; 另一方面,补码B6H表达真值是-74, 显然运算结果也不正确,溢出和进位,溢出标志OF和进位标志CF是两个意义不同的标志 进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确; 溢出标志表示有符号数运算结果是否超出范

9、围,如溢出,运算结果已经不正确。,溢出和进位的对比,例1:3AH + 7CHB6H 无符号数运算:58124182 范围内,无进位 有符号数运算: 58124182 范围外,有溢出,例2:AAH + 7CH(1)26H 无符号数运算:170124294 范围外,有进位 有符号数运算:8612428 范围内,无溢出,如何运用溢出和进位,处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志CF;同时,根据是否超出有符号数的范围设置溢出标志OF。 应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有符号数,则要注意是否溢出。,

10、标志位的功能辅助进位标志AF(Auxiliary Carry Flag),记录运算时D3位(低半字节)有无进位或借位,3AH + 7CHB6H,D3有进位:AF = 1,这个标志主要由处理器内部使用,用于十进制算术运算调整指令中,用户一般不必关心,标志位的功能方向标志DF(Direction Flag),用于串操作指令中,控制地址的变化方向,CLD指令复位方向标志:DF0 STD指令置位方向标志:DF1,标志位的功能中断允许标志IF(Interrupt-enable Flag),用于开中断或屏蔽中断,CLI指令复位中断标志:IF0 STI指令置位中断标志:IF1,标志位的功能陷阱标志TF(Tr

11、ap Flag),用于控制处理器进入单步操作方式,单步执行指令处理器在每条指令执行结束时,便产生一个编号为1的内部中断 这种内部中断称为单步中断 所以TF也称为单步标志 利用单步中断可对程序进行逐条指令的调试 这种逐条指令调试程序的方法就是单步调试, 2.4存储器,一、存储器的组成 二、存储器的段结构 三、逻辑地址与物理地址 四、堆栈,一、存储器的组成,存储器的编址 数据的存储 8086/8088对内存的访问,1.存储器的编址,8086 CPU 有20条地址线 最大可寻址空间为 2201MB 物理地址范围 00000H0FFFFFH 存储单元连续编号,被称为存储器地址,2.数据的存储,字节(B

12、yte) 每个字节占据1个存储单元(09234H)=78H 字(Word) 任何两个相邻的字节构成1个Word 存放形式:高地址单元对应高位字节,低地址单元对应低位字节 字的地址:用地址较小的字节单元的地址作为该字单元的地址 (09235H)=3456H(09236H)=1234H 双字(DWord) 两个相邻的字单元构成1个双字(09234H)=12345678H,字单元的地址可为奇数也可为偶数,但由于机器中对字单元的访问是以偶地址进行的,故若设字地址为奇地址,则需进行两次存储器访问,3.对内存的访问,8086字节 字 80386双字 由指令明确规定或由指令中所使用的变量名(存储单元的符号地

13、址)的类型决定,变量名的类型是事先定义的。,二、存储器的段结构,8086 CPU 有20条地址线,存储器地址是20位的 8086 的内部寄存器(包括IP)都是16位的 无法用寄存器直接对1MB的内存空间直接进行寻址 引入分段的概念实模式存储器寻址,1MB的存储空间可由用户根据需要划分成若干个逻辑段(Segment) 每个段的容量 64KB,连续的存储单元。(段内是16位的寻址,0000H0FFFFH) 每段地址最小的字节单元的地址为该段的段基址(首地址),要求其最低4位为0(如:00000H, 00010H, 000F0H,等) 段与段之间的关系:邻接、间隔、部分重叠、完全重叠。(一个物理存储

14、单元可以映象到一个或多个逻辑段中 某一时刻,系统只允许访问4个段中的内容(由4个段寄存器指示,其中存放段首址的高16位段基值) 如果程序/数据较大(64KB)可修改段寄存器的内容来访问其他段,段 1,段 2,段 3,段 4,段 5,邻接,部分重叠,完全重叠,间隔,三、逻辑地址与物理地址,1. 物理地址 即20位的地址编码,每个存储单元有唯一的物理地址 信息的传送是通过它来寻址存储单元并进行传送 2. 逻辑地址 程序设计中使用的是逻辑地址 由于段可重叠,同一个存储单元可以有多个逻辑地址 段基值:段起始单元地址的高16位,其值存放于段寄存器中 偏移量:某存储单元与它所在起始单元之间的距离,以字节数

15、计 偏移量为0:该单元就是段的起始单元 偏移量的最大值:0FFFFH(00FFFFH共64K个) 逻辑地址的表示方式 段基值:偏移量,三、逻辑地址与物理地址,3. 逻辑地址与物理地址的逻辑关系 当CPU访问存储器时,BIU将逻辑地址转换为物理地址 物理地址=段基值 16+偏移量,所选存储单元,所选段,3. 逻辑地址与物理地址的逻辑关系,逻辑地址 1460H:0100H、1380H:0F00H,物理地址14700H,段的分配,例:如代码段程序占用8KB(2000H)存储区,数据段占用2KB(800H)存储区,堆栈段占用256B存储区。内存应如何分配。 每段均小于64KB,且总占用量小于1MB 可

16、有多种分配方案,01500H,42000H,1CD00H,B0000H,每段占用64KB,且段间间隔,所占用空间远多于实际需要。,02000H,04000H,04800H,段间邻接 此例中每段的长度都是16的整数倍,可邻接;若不满足此要求,则下一段将从最近的第一个小段开始,中间有少于16 Bytes 的间隔,4. 逻辑地址的来源,程序运行中所需要的指令、数据根据用途不同存放在内存的不同段中,对内存进行访问时根据操作类型的不同,通过不同的途径给出逻辑地址,以获得物理地址。,SI,DI等,取指CSIP 堆栈SSSP 数据DS CS ES SS,四、堆栈(STACK),堆栈:是按后进先出原则组织的一片存储区域 用途:暂存数据、断点信息或传送信息,堆栈的构造(一般意义) 8086堆栈的组织 堆栈的操作,1.堆栈的构造(一般意义),一端固定,具有最大地址的单元栈底(数据由此向上堆积),一端浮动,指向最后被压入堆栈的数据所在存储单元栈顶(栈顶的位置虽堆栈中存放数据多少而变化),堆栈指针:用来指示当前栈顶的位置

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号