《汇编语言》3

上传人:wt****50 文档编号:49567116 上传时间:2018-07-30 格式:PPT 页数:57 大小:776KB
返回 下载 相关 举报
《汇编语言》3_第1页
第1页 / 共57页
《汇编语言》3_第2页
第2页 / 共57页
《汇编语言》3_第3页
第3页 / 共57页
《汇编语言》3_第4页
第4页 / 共57页
《汇编语言》3_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《《汇编语言》3》由会员分享,可在线阅读,更多相关《《汇编语言》3(57页珍藏版)》请在金锄头文库上搜索。

1、汇编语言课件-3第3章 寄存器(CPU工作原理)n3.1 通用寄存器n3.2 字在寄存器中的存储n3.3 几条汇编指令n3.4 物理地址n3.5 16位结构的CPUn3.6 8086CPU给出物理地址 的方法n3.7 “段地址16+偏移地址=物理地址”的本质含义n3.8 段的概念n3.9 段寄存器n3.10 CS和IPn3.12 代码段CPU概述n一个典型的CPU由运算器、控制器、寄 存器等器件组成,这些器件靠内部总线 相连。n内部总线实现CPU内部各个器件之间的 联系。n外部总线实现CPU和主板上其它器件的 联系。寄存器概述n含14个16位寄存器,按功能可分为三类8个通用寄存器4个段寄存器2

2、个控制寄存器n它们的名称为:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。5通用寄存器数据寄存器(AX,BX,CX,DX)地址指针寄存器(SP,BP)变址寄存器(SI,DI)3.1 通用寄存器n8086CPU所有的寄存器都是16位的, 可以存放两个字节。nAX、BX、CX、DX 通常用来存放一般 性数据被称为通用寄存器。n下面以AX为例,我们看一下寄存器的 逻辑结构。n一个16位寄存器可以存储一个16位的数 据。(数据的存放情况)n一个16位寄存器所能存储的数据的最大 值为多少?答案:216-1。3.1 通用寄存器16位数据在寄存器中的存放情况n数据:1

3、8n二进制表示:10010n在寄存器AX中的存储:16位数据在寄存器中的存放情况n数据:20000n二进制表示:0100111000100000n在寄存器AX中的存储:3.1 通用寄存器n8086上一代CPU中的寄存器都是8位的;n为保证兼容性,这四个寄存器 (AX,BX,CX,DX)都可以分为两个独立的8 位寄存器使用。nAX可以分为AH和AL;nBX可以分为BH和BL;nCX可以分为CH和CL;nDX可以分为DH和DL。n8086CPU的8位寄存器存储逻辑3.1 通用寄存器n以AX为例,8086CPU的16位寄存器分 为两个8位寄存器的情况:3.1 通用寄存器nAX的低8位(0位7位)构成

4、了AL寄存 器,高8位(8位15位)构成了AH寄 存器。nAH和AL寄存器是可以独立使用的8位寄 存器。n8086CPU的8位寄存器数据存储情况n一个8位寄存器所能存储的数据的最大 值是多少?答案:28-1。3.1 通用寄存器3.2 字在寄存器中的存储n一个字可以存在一个16位寄存器中 ,这个字的高位字节和低位字节自 然就存在这个寄存器的高8位寄存 器和低8位寄存器中。关于数制的讨论n由于一个内存单元可以存放 8位数据, CPU中的寄存器又可存放 n 个 8位数据 。也就是说,计算机中的数据大多是由1N个8位数据构成的。n用十六进制来表示数据可以直观的看出这个数据是由哪些8位数据构成的。3.3

5、 几条汇编指令汇编指令不区分大小写13.3 几条汇编指令nCPU执行下表中的程序段的每条指令后 ,对寄存器中的数据进行的改变。3.3 几条汇编指令地址寄存器 n包括指针和变址寄存器SI、DI、SP、 BP四个16位寄存器。顾名思义,它们 可用来存放存储器的偏移地址。另外 ,它们也可以作为通用寄存器用。严 格地说,用来存放存储器偏移地址的 寄存器都应该叫地址寄存器,如BX基 址寄存器、IP指令指针寄存器等。nSI 源变址寄存器,可用于存放源缓 冲区的偏移地址。nDI 目的变址寄存器,可用于存放目 的缓冲区的偏移地址。SP 堆栈指针寄存器,用于指出堆栈区的栈顶的偏移地址。BP 基址指针寄存器,用于

6、指出堆栈区的某个单元的偏移地址。nCS 代码段寄存器,用于指出存放程 序的代码段的段地址。nDS 数据段寄存器,用于指出存放数 据的数据段的段地址。nES 附加段寄存器,用于指出存放附 加数据的附加段的段地址。nSS 堆栈段寄存器,用于指出堆栈区 的堆栈段的段地址。段寄存器 控制寄存器 溢出标志 方 向 标 志 中断标志 跟踪标志 符号标志 零标志 辅助进位标志 奇偶标志 进位标志 IP 指令指针寄存器:用来存放代码段中的偏移地址 ,指出当前正在执行指令的下一条指令所在单元的 偏移地址。nFLAGS标志寄存器:其中的某位代表CPU的一个标 志,最低位为D0,最高位为D15。8086CPU的标

7、志寄存器共有9个标志,分别为6个条件码标志和3 控制标志。其含义如下: n例1 两个二进制数相加运算,有关标志 位自动发生变化。1 0 0 1 1 0 1 0 + 0 1 0 0 1 0 1 11 1 1 0 0 1 0 1nCPU会自动地把标志位设为:CF=0, SF=1,ZF=0,OF=0,即无进位,结 果为负数,结果不为0,没有溢出。 标志名标志值为1值为0进位标志CFCYNC符号标志SFNGPL零标志ZFZRNZ溢出标志OFOVNV辅助进位 标志AFACNA奇偶标志PFPEPO方向标志DFDNUP中断标志IFEIDI3.4 16位结构的CPUn概括的讲,16位结构描述了一个CPU具有

8、以下几个方面特征:n1、运算器一次最多可以处理16位的数据。n2、寄存器的最大宽度为16位。n3、寄存器和运算器之间的通路是16位的。3.5 物理地址nCPU访问内存单元时要给出内存单元 的地址。所有的内存单元构成的存储 空间是一个一维的线性空间。每一个内存单元在这个空间中都有唯 一的地址,这个唯一的地址称为物理 地址。3.6 8086CPU给出物理地址的方法n8086有20位地址总线,可传送20 位地址,寻址能力为1M。n8086内部为16位结构,它只能传送 16位的地址,表现出的寻址能力却 只有64K。3.6 8086CPU给出物理地址的方法n8086CPU采用一种在内部用两个16位 地址

9、合成的方法来形成一个20位的物 理地址。n8086CPU相关部件的逻辑结构在8086CPU内部用两个16位地址合成的方 法来形成一个20位的物理地址地址加法器n地址加法器合成物理地址的方法:物理地址=段地址16+偏移地址物理地址=段地址10H+偏移地址n例如:8086CPU访问地址为123C8H的内存单元由段地址16引发的讨论n观察移位次数和各种形式数据的关系:n(1)一个数据的二进制形式左移1位,相当于该数据乘以2;n(2)一个数据的二进制形式左移N位,相当于该数据乘以2的 N次方;n(3)地址加法器如何完成段地址16的运算?以二进制形式存放的段地址左移4位。由段地址16引发的讨论3.7 “

10、段地址16+偏移地址=物理地址” 的本质含义n两个比喻说明:n说明“基础地址+偏移地址 = 物理地址” 的思想:第一个比喻n说明“段地址16+偏移地址=物理地址”的 思想:第二个比喻8086CPU就是这样一个只能提供两张3位 数据纸条的CPU。“基础地址+偏移地址 = 物理地址”n比如说,学校、体育馆同在一条笔直 的单行路上(学校位于路的起点0米处 )。n读者在学校,要去图书馆,问我那里 的地址,我可以用几种方式描述这个 地址?“基础地址+偏移地址 = 物理地址”n(1)从学校走2826m到图书馆。这2826可 以认为是图书馆的物理地址。n(2)从学校走2000m到体育馆,从体育馆 再走826

11、m到图书馆。n第一个距离2000m是相对于起点的基础地址;n第二个距离826m是将对于基础地址的偏移地址 。“段地址16+偏移地址=物理地址”n比如我们只能通过纸条来通信,读者 问我图书馆的地址,我只能将它写在 纸上告诉读者。n显然我必须有一张可以容纳 4 位数据 的纸条才能写下2826这个数据:“段地址16+偏移地址=物理地址”n不巧的是,没有能容纳4位数据的纸条, 仅有两张可以容纳3位数据的纸条。n这样我只能以这种方式告诉读者2826这 个数据:3.8 段的概念n错误认识:n内存被划分成了一个一个的段,每一个 段有一个段地址。n其实:n内存并没有分段,段的划分来自于CPU,由于 8086C

12、PU用“(段地址16)+偏移地址=物理地 址”的方式给出内存单元的物理地址,使得我们 可以用分段的方式来管理内存。3.8 段的概念n我们可以认为:地址10000H100FFH的内 存单元组成一个段,该段的起始地址( 基 础地址)为10000H,段地址为1000H,大 小为100H。3.8 段的概念n我们也可以认为地址10000H1007FH、 10080H100FFH 的内存单元组成两个段 ,它们的起始地址( 基础地址 )为 10000H和10080H,段地址为:1000H 和1008H,大小都为80H。3.8 段的概念n以后,在编程时可以根据需要,将若 干地址连续的内存单元看作一个段, 用段

13、地址16定位段的起始地址(基 础地址),用偏移地址定位段中的内 存单元。n两点需要注意n内存单元地址小结两点需要注意n(1)段地址16 必然是 16的倍数, 所以一个段的起始地址也一定是16的 倍数;n(2)偏移地址为16位,16 位地址的 寻址能力为 64K,所以一个段的长度 最大为64K。内存单元地址小结nCPU访问内存单元时,必须向内存提 供内存单元的物理地址。n8086CPU在内部用段地址和偏移地址 移位相加的方法形成最终的物理地址 。n思考两个问题n(1)观察下面的地址,读者有什么 发现?n结论:CPU可以用不同的段地址和 偏移地址形成同一个物理地址。内存单元地址小结内存单元地址小结

14、n(2)如果给定一个段地址,仅通过变化 偏移地址来进行寻址,最多可以定位多 少内存单元?n结论:偏移地址16位,变化范围为0FFFFH ,仅用偏移地址来寻址最多可寻64K个内存 单元。n比如:给定段地址1000H,用偏移地址寻址 ,CPU的寻址范围为:10000H1FFFFH。内存单元地址小结n在8086PC机中,存储单元的地址用两个元素 来描述。即段地址和偏移地址。n“数据在21F60H内存单元中。”对于8086PC机 的两种描述:n(a)数据存在内存2000:1F60单元中;n(b)数据存在内存的2000段中的1F60H单元中。n可根据需要,将地址连续、起始地址为16的 倍数的一组内存单元

15、定义为一个段。3.9 段寄存器n段寄存器就是提供段地址的。8086CPU有4个段寄存器: CS、DS、SS、ESn当8086CPU要访问内存时,由这4个 段寄存器提供内存单元的段地址。本课件由汇编网()制作提供段的类型8086汇编语言中把逻辑段分为四种类型 ,分别是代码段、数据段、附加段和堆栈 段。 各段的逻辑地址对应表: 段名段寄存器偏移地址代码码段CSIP数据段DSBX、SI、DI等地址 寄存器 附加段ESBX、SI、DI等地址 寄存器 堆栈栈段SSSP或BP例1段寄存器与其偏移地址如下,写出其相应 的物理地址及含义。nCS=1896H,IP=1655H 当前要执行的指令的物理地址 =18

16、960H+1655H=19FB5H DS=2896H,EA=1655H 当前要访问的数据的物理地址 =28960H+1655H=29FB5HES=1896H,EA=2655H 当前要访问的数据的物理地址 =18960H+2655H=1AFB5HSS=1896H,SP=3655H 当前要访问的堆栈的物理地址 =18960H+3655H=1BFB5H例2 段寄存器与内存的分段情况如图。观察各 段的大小及分布,判断其地址范围,标出每个 段首地址和末地址。 n代码段共64KB单元,它 的地址范围应该是 210E0H310DFH。n附加段只有2KB,地址范 围在34600H34CFFH 之间。n数据段为16KB,其地址 范围为34D00H 38CFFH。n堆栈段只有512个字节单 元,它的地址范围是 84180H8437FH。 你懂了吗 ?本课件由汇编网()制作提供因为是重点所以再重复一次:地址加法器的工作原理可表示为:物理地

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

最新文档


当前位置:首页 > 生活休闲 > 社会民生

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