华科-汇编语言程序设计幻灯片第1章

上传人:F****n 文档编号:88147504 上传时间:2019-04-20 格式:PPT 页数:84 大小:291.50KB
返回 下载 相关 举报
华科-汇编语言程序设计幻灯片第1章_第1页
第1页 / 共84页
华科-汇编语言程序设计幻灯片第1章_第2页
第2页 / 共84页
华科-汇编语言程序设计幻灯片第1章_第3页
第3页 / 共84页
华科-汇编语言程序设计幻灯片第1章_第4页
第4页 / 共84页
华科-汇编语言程序设计幻灯片第1章_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《华科-汇编语言程序设计幻灯片第1章》由会员分享,可在线阅读,更多相关《华科-汇编语言程序设计幻灯片第1章(84页珍藏版)》请在金锄头文库上搜索。

1、第一章 预备知识,一、本章的学习内容: 本章学习汇编语言的预备知识: 1什么是汇编语言? 2Intel 80X86微处理器中的寄存器组 3主存储器的编址方式及物理地址的形成方式 4. 数和符号在计算机中的表示方法 5. 标志寄存器 6汇编源程序的基本结构,第一章 预备知识,第一章 预备知识,二、本章的学习重点: 1汇编语言、汇编程序的概念 280X86寄存器组 3. 堆栈的概念、进栈、出栈指令 4实模式和保护模式下物理地址的形成 5. 整数和字符串的表示方法 6. CF、OF、ZF、SF标志位 7汇编源程序举例,三、本章学习的难点: 1寄存器组各个寄存器的名称和用途 2PUSH/POP指令、堆

2、栈指示器的变化 3保护模式下物理地址的形成 4. 有符号数、无符号数及其运算对于标志寄存器 的影响,第一章 预备知识,1.1 机器语言与汇编语言,1. 机器语言(指令) 机器语言的特点: 由0和1组成的二进制码。 (2) 能为计算机识别并执行。 (3) 不同类型的机器,不同类型的CPU都有自己特有的、一定数量的基本指令。,机器指令(硬指令):指挥计算机完成某一基本操作的命令,是面向机器的。 操作种类 操作数存放位置 例: 1011 1011 BB 操作码 0011 0100 34 操作数 0001 0010 12 操作:1234H BX,1.1 机器语言与汇编语言,操作码,地址码,指令系统:每

3、台计算机都规定了自己所特有的、一定数量的基本命令,这批指令的全体为计算机的指令系统 机器语言:机器指令的集合 机器语言程序:用机器语言编写的程序,1.1 机器语言与汇编语言,2. 汇编语言(改进的方案) 助记符 变量或标号 汇编语言:一种用符号书写的、其操作与机器指令一一对应的,并遵循一定语法规则的计算机语言。,1.1 机器语言与汇编语言,操作码,地址码,例2:刚才的例子若用汇编语言来书写: 操作码 地址码 BB 34 12 MOV BX, 1234H,1.1 机器语言与汇编语言,汇编源程序 用汇编语言编写的程序类似于高级语言编写的源程序 汇编程序 把汇编源程序翻译成目标程序的(语言加工)程序

4、类似于高级语言的编译程序 汇编 汇编程序对源程序进行翻译的过程 类似于高级语言的编译过程,1.1 机器语言与汇编语言,机器语言、汇编语言和高级语言的比较,1.1 机器语言与汇编语言,1.2 Intel系列机简介,微型计算机的构成,1.2.2 80x86微处理器结构,80x86微处理器结构,1总线接口部件: 是CPU与计算机系统中其它功能部件之间的高速接口 功能:接受所有的总线操作请求,并按优先权进 行选择,最大限度地利用本身的资源为这 些请求服务。 2执行部件:寄存器组、标志寄存器、算逻部件、 控制部件等组成 功能:从译码指令队列中取出指令并且执行,1.2.2 80x86微处理器结构,(1)

5、数据寄存器组(EAX,EBX,ECX,EDX) EAX (累加器)Accumulator EBX (基址寄存器)Base ECX (计数寄存器)Count EDX (数据寄存器)Data 作用 :用来保存操作数、运算结果或作指示 器、变址寄存器,减少存取操作数所需 要的访问总线和主存储器的时间,加快 运行速度。,1.2.2 80x86微处理器结构,注意: 它们既可作32位、16位寄存器,也可作8位寄存器使用。 8位的寄存器不能作指示器或变址寄存器。,1.2.2 80x86微处理器结构,(2) 指示器变址寄存器组(ESI、EDI、ESP、EBP) 作用:一般用来存放操作数的偏移地址,用作 指示器

6、或变址寄存器。 ESP(Stack Pointer),称为堆栈指示器,存放的是当前堆栈段中栈顶的偏移地址; EBP(Base Pointer),为对堆栈操作的基址寄存器; ESI(Source Index),称为源变址寄址器;字符串指令源操作数的指示器 EDI(Destination Index),称为目的变址寄存器;字符串指令目的操作数的指示器,1.2.2 80x86微处理器结构,3. 指令预取部件和指令译码部件 指令预取部件:通过总线接口部件,把将要执行的指令从主存中取出,送入指令排队机构中排队。 指令译码部件:从指令预取部件中读出指令并译码,再送入译码指令队列排队供执行部件使用。 指令(

7、地址)指示器:它总是保存着下一条将要被CPU执行的指令的偏移地址(简称EA),其值为该指令到所在段首址的字节距离。,1.2.2 80x86微处理器结构,4分段部件和分页部件 使用分段部件和分页部件实现虚拟存储空间映射到物理存储空间 程序员使用二维地址 段地址:段内偏移地址 分段部件 段地址:段内偏移地址 一维的线性的地址 分页部件 虚拟的线性的地址 主存储器的物理地址,1.2.2 80x86微处理器结构,段寄存器:低档处理器保存段首地址,高档处理器保存选择字 代码段寄存器 CS 堆栈段寄存器 SS 数据段寄存器 DS 附加段寄存器 ES 附加段寄存器 FS 附加段寄存器 GS,1.2.2 80

8、x86微处理器结构,指令执行过程: (1) 指令预取部件和指令译码部件 EIP 指令的偏移地址 EIP增量,形成下一条指令的地址 (2) 分段部件和分页部件 CS : EIP 指令的物理地址 (3) 总线接口部件 从主存中取指令 预取指令队列,1.2.2 80x86微处理器结构,(4) CPU按序从预取指令队列中取出指令 指令译码部件。 (5) 指令译码部件译码 执行部件执行指令; (6) 执行过程中若需要取主存操作数 操作数偏移地址 (7) 分段部件和分页部件 偏移地址 , 段寄存器 操作数的物理地址 (8) 总线接口部件 从主存中取数据 执行部件,1.2.2 80x86微处理器结构,1.

9、实方式(实际地址) 操作相当于一个可进行32位快速运算的8086(内部32位、外部总线16位数据、20位地址) 2. 保护方式(虚地址) 是80X86设计目标全部达到的工作方式,通过对程序使用的存储区采用分段、分页的存储管理机制,达到分级使用互不干扰的保护目的。能为每个任务提供一台虚拟处理器,使每个任务单独执行,快速切换。 3. 虚拟8086方式 保护方式下所提供的同时模拟多个8086处理器。,1.2.2 80x86的三种工作方式,存储器:用来存放程序和数据的装置,包括主存和外存。 主存储器:主机内部的半导体存储器,相对外存,容量小,速度快,成本高。,1.3 主存储器和物理地址的形成,主存储器

10、编址方式 主存储器的基本记忆单元是位,它能记忆/容纳一个二进制数0或1。 8位组成一个字节,当前微机一个存储单元存放一个字节。 为了区别不同的存储单元,每一存储单元都被指定一个编号,编号作为存储单元的物理地址。,1.3.1 主存储器,80X86系统中主存是按字节编址的,即字节作最小访问单位。,1.3.1 主存储器,字:由2个字节组成,字地址由两字节地址较小的一个(即低字节)的地址表示。存放的方式是低8位存放低字节,高8位存放高字节。 双字:双字的地址也由四个字节中的最低地址表示,1.3.1 主存储器,问题: 一个字数据该怎样存入计算机主存呢? 双字数据呢? 高-高 低-低 字:要占有连续的两个

11、字节. 16位中,低8位存放在低字节地址中,高8位存放在相邻的高字节地址中。 双字:32位中,低16位存放在低字地址中,高16位存放在相邻的高字地址中。,1.3.1 主存储器,1.3.1 主存储器,从逻辑上来看:是内存中开辟的一片存贮区,这片存贮区采用的存贮方式是一端固定,一端活动,即只允许在一端插入或删除(访问可任意)。 堆栈中数据的存取原则: “先进后出”, 堆栈中的数据也称元素或栈项。 元素进栈称压入,出栈称弹出。,1.3.2 堆栈,从硬件的观点看堆栈必须由一片存贮单元和一个指示器组成。 固定端叫栈底。 栈指针用来指示栈顶进栈和出栈时偏移地址的变化 指针所指示的最后存入信息的单元叫栈顶,

12、所有信息的存取都在栈顶进行,栈指针总是指向栈顶的。,1.3.2 堆栈,问题:为什么要用堆栈? 程序中经常用到子程序或处理中断,此时,主程序需要把子程序或中断程序将用到的寄存器内容保护起来,以便子程序或中断返回后,主程序能够从调用点或中断点处继续执行。 此外,堆栈还经常用于: 保护和恢复现场 主程序和子程序之间传递参数 子程序中的局部变量,1.3.2 堆栈,1.进栈指令PUSH 格式:PUSH OPS 功能:将立即数、寄存器、段寄存器或存贮器中的一个字/双字数据压入堆栈。 例:PUSH AX 设:(AX)=4241H (SP)=10000H 执行: (SP)-2SP (AX)(SP),1.3.2

13、 堆栈,1.3.2 堆栈,出栈指令POP 格式:POP OPD 功能:将栈顶元素弹出送至某一寄存器、段寄存器(除CS外)或字/双字存贮单元中。 例:POP BX 设指令执行前:(BX)=1111H,堆栈内容如上题所示。,1.3.2 堆栈,1.3.2 堆栈,问题的由来 8086的限制,20位地址总线,16位寄存器(SP,BP,SI,DI)。 问题:如何通过16位寄存器访问1MB的内存 解决:将1M字节主存分段,每段最多64K字节,1.3.3 存储器物理地址的形成,分段管理的方法: 段寄存器保存起始首地址 + 段内偏移地址的总体策略。 段首地址分别存放在:段寄存器CS、DS、ES、SS、FS、GS

14、中 段内偏移地址:段内相对于段起始地址的偏移值,往往由SP、BP、SI、DI、IP给出。,1.3.3 存储器物理地址的形成,1. 实模式 PA = 段寄存器 保存的16位二进制 数后补4个0 + EA,1.3.3 存储器物理地址的形成,分段的实际作用: (1) 实现了16位表示20位的地址; (2) 当程序和数据的大小64KB时,编制的程序可只关心EA,而不用管它的起始地址在哪(便于程序在主存中任何位置运行) (3) 便于不同目的的程序或数据分开存放,使程序各部分的含义更加明确。,1.3.3 存储器物理地址的形成,2. 保护模式 保护什么: 分清不同程序使用的存储区域,不允许随便使用别人的数据

15、和代码。 必要条件: (1)要标记每段存储区的所有者或被使用的权限级别。 (2)要标记使用者是谁(权限级别)。 (3)中间环节:CPU要去判断此次访问是否合法。,1.3.3 存储器物理地址的形成,(1) 如何标记存储区 操作系统每次将某块存储区分给某程序使用时,用8个字节的描述符描述这段存储区的特征。,1.3.3 存储器物理地址的形成,1.3.3 存储器物理地址的形成,(2) 如何标记使用者,1.3.3 存储器物理地址的形成,程序的权限由程序所在的段决定,由当前程序正在使用的段寄存器内的段选择符反映。,1.3.3 存储器物理地址的形成,(3)中间执行环节:CPU去判断 例如,执行:MOV AL

16、,DS:100H 设: (CS)= 0000000000001 1 11 B, (DS)= 0000000000001 0 01 B, (a)程序权限与被访问数据段的权限的关系; (b)(DS)指向的描述表中寻找描述符; (c)对应描述符描述的段是否可以被访问;(类别、权限) (d)从描述符2中提取段的首地址(32位); (e)段的首地址(32位)+32位EA(100H)= 线性地址,不分页时即为PA (f)送出PA,选中存储单元,将内容读出后送入AL中。,1.3.3 存储器物理地址的形成,保护方式的实际含义: 程序知道的“段首址”实际上是一个代号,是一个虚拟的起始地址,CPU通过转换才能获得真正的段首地址。 在这个由CPU完成的转换过程中,实现了访问权限的判断,达到了保护的目的。,1.3.3 存储器物理地址的形成,1.4 数据在计算机内的表示

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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