微机原理、汇编语言与接口技术 教学课件 ppt 作者 韩晓茹 ch02 汇编语言基础

上传人:E**** 文档编号:89500732 上传时间:2019-05-26 格式:PPT 页数:287 大小:2.82MB
返回 下载 相关 举报
微机原理、汇编语言与接口技术 教学课件 ppt 作者 韩晓茹 ch02 汇编语言基础_第1页
第1页 / 共287页
微机原理、汇编语言与接口技术 教学课件 ppt 作者 韩晓茹 ch02 汇编语言基础_第2页
第2页 / 共287页
微机原理、汇编语言与接口技术 教学课件 ppt 作者 韩晓茹 ch02 汇编语言基础_第3页
第3页 / 共287页
微机原理、汇编语言与接口技术 教学课件 ppt 作者 韩晓茹 ch02 汇编语言基础_第4页
第4页 / 共287页
微机原理、汇编语言与接口技术 教学课件 ppt 作者 韩晓茹 ch02 汇编语言基础_第5页
第5页 / 共287页
点击查看更多>>
资源描述

《微机原理、汇编语言与接口技术 教学课件 ppt 作者 韩晓茹 ch02 汇编语言基础》由会员分享,可在线阅读,更多相关《微机原理、汇编语言与接口技术 教学课件 ppt 作者 韩晓茹 ch02 汇编语言基础(287页珍藏版)》请在金锄头文库上搜索。

1、,第二章 汇编语言基础,机器语言,BASIC C/C+ JAVA .,2.1 汇编语言概述,计算机程序设计语言,机器语言(Machine Language) A01020 02061120 A21220 汇编语言(Assembly Language) MOV AL,2010H ADD AL,2011H MOV 2012H,AL 高级语言(High-level Language),什么是汇编语言,以助记符形式表示计算机指令 助记符是便于人们记忆、并能描述指令功能和指令操作数的符号 助记符是表明指令功能的英语单词或其缩写 汇编格式指令以及使用它们编写程序的规则就形成汇编语言(Assembly La

2、nguage) 汇编语言程序:用汇编语言书写的程序 汇编程序:将汇编语言程序“汇编”成机器代码目标模块的程序,汇编语言程序与汇编程序是两个概念,汇编语言和高级语言的比较,汇编语言与处理器密切相关,高级语言与具体计算机无关 汇编语言程序的通用性、可移植性较差 高级语言程序是标准化语言,可在多种计算机上编译后执行,汇编语言本质上就是机器语言;高级语言不针对具体计算机系统 汇编语言可以直接、有效地控制计算机硬件 汇编语言易于产生速度快、容量小的高效率目标程序 高级语言不易直接控制计算机的各种操作 高级语言目标程序比较庞大、运行速度较慢,汇编语言功能有限、涉及硬件细节;高级语言提供了强大的功能,不必关

3、心琐碎问题 汇编语言程序编写比较繁琐,调试比较困难 高级语言类似自然语言的语法,易于掌握和应用,汇编语言的特点,汇编语言的优点: 直接控制计算机硬件部件 编写“时间”和“空间”两方面最有效程序 汇编语言的缺点: 与处理器密切有关 需要熟悉计算机硬件系统、考虑许多细节 编写繁琐,调试、维护、交流和移植困难,汇编语言和高级语言的混合编程,汇编语言的优点使得它在程序设计中占有重要的位置,不可被取代 汇编语言的缺点使得人们主要采用高级语言进行程序开发工作 有时需要采用高级语言和汇编语言混合编程,互相取长补短,更好地解决实际问题,汇编语言的应用场合,(1)对软件的执行时间或存储容量有较高要求的场合。 例

4、如, 操作系统核心程序,智能化仪器仪表的控制系统, 实时控制系统等。 (2)需要提高大型软件性能的场合。 通常把大型软件中执行频率高的子程序(过程)用汇编语言编写, 然后把它们与其他程序一起连接。 (3)软件与硬件关系密切, 软件需要直接和有效控制硬件的场合。 如设备驱动程序,I/O接口电路的初始化程序段等。 (4)没有合适的高级语言的场合或只能采用汇编语言的时候。 例如,开发最新的处理器程序时,暂时没有支持新指令的编译程序。 (5)其它,如系统的底层软件、加密解密软件、分析和防治计算机病毒软件等。,2.2 8086/8088微处理器编程结构,编程结构:是指从程序员和使用者的角度看到的结构,与

5、芯片内部的物理结构和实际布局有区别。 功能结构 存储器组织 寄存器结构,2.2.1 8086/8088功能结构,8086的内部结构从功能上分成两个部件 1. 总线接口部件BIU 2. 执行部件EU 两个部件相互独立,分别完成各自操作,还可以并行执行,实现指令预取(指令读取和执行的流水线操作)。,8086微处理器内部结构,总线,总线接口部件 BIU,构成部分 4个16位段寄存器:CS,DS,ES,SS 16位IP指令指针寄存器 20位地址加法器 4字节的指令队列( 8088的指令队列为4字节 ) 总线控制电路 主要功能 负责与存储器、I/O接口传递数据 具体完成: (1)物理地址的形成 (2)从

6、内存取指令,送到指令队列; (3)读/写操作数 (4)总线控制,执行部件EU,构成部分 8个16位寄存器: AX、BX、CX、DX、SP、BP、DI、SI 1个标志寄存器PSW 1个算术逻辑运算部件ALU 数据暂存器 EU控制器 主要功能 负责指令的译码、执行。(包括算术、逻辑运算,控制命令等),BIU与EU的操作协调(1),(1) 执行单元EU并不直接与外部发生联系,而是从总线接口单元BIU 的指令队列中源源不断地获取指令并执行。每当指令队列中存满一条指令后,EU就立即开始执行。 (2) 每当指令队列中有2 个空字节时,BIU就会自动地寻找空闲的总线周期进行预取指令操作,直至填满为止。其取指

7、的顺序是按指令在程序中出现的先后顺序。 (3) 每当EU准备执行一条指令时,它会从BIU部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行指令。在执行指令的过程中,如果必须访问存储器或者IO端口,那么EU就会请求BIU进入总线周期,并形成有效地址EA送给BIU ,由BIU的地址加法器形成物理地址PA 从存储器或I/O端口取回操作数送给EU,完成访问内存或者IO端口的操作。如果此时BIU正好处于空闲状态,会立即响应EU的总线请求;如果BIU正将某个指令字取到指令队列中,则BIU将首先完成这个取指令的总线周期,然后再去响应EU发出的访问总线的请求。,BIU与EU的操作协调(2),(4)每当

8、EU执行一条转移、调用或返回指令后,BIU 清除指令队列缓冲器,并从新的目标地址开始预取指令送入指令队列,此时EU才能继续执行指令,实现程序执行的转移。这时EU和BIU 的并行操作显然要受到一定的影响,但只要转移、调用指令出现的概率不是很高,EU 和BIU 间相互独立又相互配合的工作方式仍将大大提高CPU 的工作效率。 (5)当指令队列已满,且EU又没有总线访问请求时,BIU便进入空闲状态。,8086 CPU与 8088 CPU的区别,(1)8088与外部交换数据的数据总线宽度是8位,内部总线和寄存器仍是16位,所以8088称为准16位微处理器。 8086外部数据总线和内部总线均为16位。 (

9、2) 8088指令对列为4字节,若出现1字节空闲,则预取指令; 8086指令对列为6字节,若出现2字节空闲,则预取指令。,2.2.2 8086的存储器组织,存储器:用来存放程序、数据。 存储器以字节(8bit)为单位存储信息 每个字节单元有一个地址,从0编号,顺序加1 地址也用二进制数表示 (无符号整数,通常写成十六进制形式) 多字节数据在存储器中占连续的多个存储单元: 存放时,高字节存入高地址,低字节存入低地址; 表达时,用它的低地址表示多字节数据占据的地址空间。,80x86系统采用“高高低低”原则存储,称为“小端方式Little Endian”。 相对应还存在“大端方式Big Endian

10、”。,存储器地址,例如:1234H以不同方式存储时的情况。,2FFFH 3000H 3001H 3002H 3003H,34 12,小端方式,12 34,大端方式,2FFFH 3000H 3001H 3002H 3003H,(00002H)= 12H ,或 00002H = 12H (00003H)= 34H ,或 00003H = 34H (00002H)= 3412H。 (00002H)= 78563412H。,存储器的分段管理,8086CPU有20条地址线 可寻址空间从00000HFFFFFH,即2201MB 存储系统中,对应每个物理存储单元的一个唯一的20位编号,就是物理地址 8086

11、机器字长16位 仅能表示地址范围 0000H FFFFH(64KB) 存储器的逻辑分段 每个段最大限制为64KB,段地址的低4位为0000B 分段后编程时采用逻辑地址,形式为 段地址 : 段内偏移地址,逻辑地址,段地址说明逻辑段在主存中的起始位置 8086/8088规定段地址必须是模16地址:xxxx0H 省略低4位0000B,段地址就可以用16位数据表示,就能用16位段寄存器表达段地址 偏移地址说明主存单元距离段起始位置的偏移量 每段不超过64KB,偏移地址也可用16位数据表示,逻辑地址和物理地址的转换,物理地址 = 16 段地址 + 偏移地址 段地址左移4位,加上偏移地址即得到20位物理地

12、址,一个存储单元具有一个唯一的物理地址,一个物理地址可对应多个逻辑地址,逻辑地址 2012:3042、2002:3142 物理地址 23162H 23162H,图 26 逻辑地址与物理地址,8086的逻辑分段,8086有4个16位段寄存器,可同时使用4种逻辑段 CS(代码段寄存器)指明当前代码段的起始地址 CPU利用CS:IP取得将要执行的指令。 SS(堆栈段寄存器)指明当前堆栈段的起始地址 PUSH 和POP 指令,利用SS:SP寻址栈顶单元数据。 DS(数据段寄存器)指明当前数据段的起始地址 CPU利用DS:EA读写内存数据段数据 ES(附加段寄存器)指明当前附加段的起始地址 CPU利用E

13、S:EA读写内存附加段数据 每个段寄存器用来确定一个逻辑段的起始地址,每种逻辑段均有各自的用途,段和段寄存器的引用,如何分配各个逻辑段,程序的指令序列必须安排在代码段 程序使用的堆栈一定在堆栈段 程序中的数据默认是安排在数据段,也经常安排在附加段,尤其是串操作的目的区必须是附加段 数据的存放比较灵活,实际上可以存放在任何一种逻辑段中,段寄存器的使用规定,2.2.3 8086/8088的寄存器结构 共14个16位寄存器,通用寄存器,8086有8个通用的16位寄存器 (1)数据寄存器: AX BX CX DX (2)变址寄存器: SI DI (3)指针寄存器: BP SP 4个数据寄存器还可以分成

14、高8位和低8位两个独立的寄存器,这样又形成8个通用的8位寄存器, 8位寄存器只能存放数据。 AX: AH AL BX: BH BL CX: CH CL DX: DH DL,(1)数据寄存器,AX称为累加器(Accumulator) 使用频度最高。用于算术、逻辑运算以及与外设传送信息等 BX称为基址寄存器(Base address Register) 常用做存放存储器地址 CX称为计数器(Counter) 作为循环和串操作等指令中的隐含计数器 DX称为数据寄存器(Data register) 常用来存放双字长数据的高16位,或存放外设端口地址,(2)变址寄存器,16位变址寄存器SI和DI 常用于

15、存储器变址寻址方式时提供地址 SI是源变址寄存器(Source Index) DI是目的变址寄存器(Destination Index),(3)指针寄存器,指针寄存器用于寻址内存堆栈内的数据 SP为堆栈指针寄存器(Stack Pointer),指示堆栈段栈顶的位置(偏移地址) BP为基址指针寄存器(Base Pointer),表示数据在堆栈段中的基地址 SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址,堆栈(Stack)是主存中一个特殊的区域,采用“先进后出”或“后进先出”存取操作方式、而不是随机存取方式。 用8088/8086形成的微机系统中,堆栈区域被称为堆栈段,指令指针

16、寄存器 IP,IP(Instruction Pointer)为指令指针寄存器,存放即将执行指令的偏移地址(有效地址EA)。 IP寄存器是一个专用寄存器,在程序执行过程中,自动修改。 IP寄存器与CS段寄存器联合使用以确定下一条指令的存储单元地址(CS:IP) 注意:不能用指令直接读取或设定IP的值,但是可以通过某些指令的执行而自动修改IP值。(例如转移控制类指令),标志寄存器 ( FLAGS / PSW ),(1)状态标志 (记录程序中运行结果的状态信息),OF 溢出标志 SF 符号标志 ZF 零标志 CF 进位标志 AF 辅助进位标志 PF 奇偶标志,(2)控制标志 用于控制处理器执行指令的方式,DF 方向标志 IF 中断标志 TF 陷阱标志,CF:进位/借位标志位 当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF1; 否则CF0,ZF:零标志位 若运算结果为0,则ZF1;否则ZF0,符号标志SF(Sign Flag),运算结果最高位为1,则SF1; 否

展开阅读全文
相关资源
相关搜索

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

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