汇编语言最新课件_第1页
汇编语言最新课件_第2页
汇编语言最新课件_第3页
汇编语言最新课件_第4页
汇编语言最新课件_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、6位寄存器,按功能可分为三类 8个通用寄存器 4个段寄存器 2个控制寄存器 n它们的名称为: AX、BX、CX、DX、SI、DI、SP、BP、 IP、CS、SS、DS、ES、PSW。 通用寄存器 数据寄存器(AX,BX,CX,DX) 地址指针寄存器(SP,BP) 变址寄存器(SI,DI) 3.1 通用寄存器 n8086CPU所有的寄存器都是16位的, 可以存放两个字节。 nAX、BX、CX、DX 通常用来存放一般 性数据被称为通用寄存器。 n下面以AX为例,我们看一下寄存器的 逻辑结构。 n一个16位寄存器可以存储一个16位的数 据。(数据的存放情况) n一个16位寄存器所能存储的数据的最大

3、值为多少? 答案:216-1。 3.1 通用寄存器 16位数据在寄存器中的存放情况 n数据:18 n二进制表示:10010 n在寄存器AX中的存储: 16位数据在寄存器中的存放情况 n数据:20000 n二进制表示:0100111000100000 n在寄存器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 通用

4、寄存器 n以AX为例,8086CPU的16位寄存器分 为两个8位寄存器的情况: 3.1 通用寄存器 nAX的低8位(0位7位)构成了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中的寄存器又可存放

5、n 个 8位数据。 也就是说,计算机中的数据大多 是由1N个8位数据构成的。 n用十六进制来表示数据可以直观的看 出这个数据是由哪些8位数据构成的。 3.3 几条汇编指令 汇编指令不区分大小写 1 3.3 几条汇编指令 nCPU执行下表中的程序段的每条指令后, 对寄存器中的数据进行的改变。 3.3 几条汇编指令 地址寄存器地址寄存器 n包括指针和变址寄存器包括指针和变址寄存器SI、DI、SP、 BP四个四个16位寄存器。顾名思义,它们位寄存器。顾名思义,它们 可用来存放存储器的偏移地址。另外,可用来存放存储器的偏移地址。另外, 它们也可以作为通用寄存器用。严格它们也可以作为通用寄存器用。严格

6、地说,用来存放存储器偏移地址的寄地说,用来存放存储器偏移地址的寄 存器都应该叫地址寄存器,如存器都应该叫地址寄存器,如BX基址基址 寄存器、寄存器、IP指令指针寄存器等。指令指针寄存器等。 nSI 源变址寄存器,可用于存放源缓源变址寄存器,可用于存放源缓 冲区的偏移地址。冲区的偏移地址。 nDI 目的变址寄存器,可用于存放目目的变址寄存器,可用于存放目 的缓冲区的偏移地址。的缓冲区的偏移地址。 SP 堆栈指针寄存器,用于指出堆栈 区的栈顶的偏移地址。 BP 基址指针寄存器,用于指出堆栈 区的某个单元的偏移地址。 nCS 代码段寄存器,用于指出存放程代码段寄存器,用于指出存放程 序的代码段的段地

7、址。序的代码段的段地址。 nDS 数据段寄存器,用于指出存放数数据段寄存器,用于指出存放数 据的数据段的段地址。据的数据段的段地址。 nES 附加段寄存器,用于指出存放附附加段寄存器,用于指出存放附 加数据的附加段的段地址。加数据的附加段的段地址。 nSS 堆栈段寄存器,用于指出堆栈区堆栈段寄存器,用于指出堆栈区 的堆栈段的段地址。的堆栈段的段地址。 段寄存器段寄存器 控制寄存器控制寄存器 溢出标志 方 向 标 志 中断标志 跟踪标志 符号标志 零标志 辅助进位标志 奇偶标志 进位标志 IP 指令指针寄存器:用来存放代码段中的偏移地址, 指出当前正在执行指令的下一条指令所在单元的偏 移地址。

8、nFLAGS标志寄存器:其中的某位代表标志寄存器:其中的某位代表CPU的一个标的一个标 志,最低位为志,最低位为D0,最高位为,最高位为D15。8086CPU的标的标 志寄存器共有志寄存器共有9个标志,分别为个标志,分别为6个条件码标志和个条件码标志和3 控制标志。其含义如下:控制标志。其含义如下: n例例1 两个二进制数相加运算,有关标志两个二进制数相加运算,有关标志 位自动发生变化。位自动发生变化。 1 0 0 1 1 0 1 0 + 0 1 0 0 1 0 1 1 1 1 1 0 0 1 0 1 nCPU会自动地把标志位设为:会自动地把标志位设为:CF=0, SF=1,ZF=0,OF=0

9、,即无进位,结,即无进位,结 果为负数,结果不为果为负数,结果不为0,没有溢出。,没有溢出。 标志名标志值为1值为0 进位标志CFCYNC 符号标志SFNGPL 零标志ZFZRNZ 溢出标志OFOVNV 辅助进位 标志 AFACNA 奇偶标志PFPEPO 方向标志DFDNUP 中断标志IFEIDI 3.4 16位结构的CPU n概括的讲,16位结构描述了一个CPU具有 以下几个方面特征: n1、运算器一次最多可以处理16位的数据。 n2、寄存器的最大宽度为16位。 n3、寄存器和运算器之间的通路是16位的。 3.5 物理地址 nCPU访问内存单元时要给出内存单元 的地址。所有的内存单元构成的存

10、储 空间是一个一维的线性空间。 每一个内存单元在这个空间中都有唯 一的地址,这个唯一的地址称为物理 地址。 3.6 8086CPU给出物理地址的方法 n8086有20位地址总线,可传送20 位地址,寻址能力为1M。 n8086内部为16位结构,它只能传送 16位的地址,表现出的寻址能力却 只有64K。 3.6 8086CPU给出物理地址的方法 n8086CPU采用一种在内部用两个16位 地址合成的方法来形成一个20位的物 理地址。 n8086CPU相关部件的逻辑结构 在8086CPU内部用两个16位地址合成的方 法来形成一个20位的物理地址 地址加法器 n地址加法器合成物理地址的方法: 物理地

11、址=段地址16+偏移地址 物理地址=段地址10H+偏移地址 n例如: 8086CPU访问地址为123C8H的内存单元 由段地址16引发的讨论 n观察移位次数和各种形式数据的关系: n(1)一个数据的二进制形式左移1位,相当于该数据乘以2; n(2)一个数据的二进制形式左移N位,相当于该数据乘以2的 N次方; n(3)地址加法器如何完成段地址16的运算? 以二进制形式存放的段地址左移4位。 由段地址16引发的讨论 3.7 “段地址16+偏移地址=物理地址” 的本质含义 n两个比喻说明: n说明“基础地址+偏移地址 = 物理地址” 的思想:第一个比喻 n说明“段地址16+偏移地址=物理地址” 的思

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

13、我们只能通过纸条来通信,读者 问我图书馆的地址,我只能将它写在 纸上告诉读者。 n显然我必须有一张可以容纳 4 位数据 的纸条才能写下2826这个数据: “段地址16+偏移地址=物理地址” n不巧的是,没有能容纳4位数据的纸条, 仅有两张可以容纳3位数据的纸条。 n这样我只能以这种方式告诉读者2826这 个数据: 3.8 段的概念 n错误认识: n内存被划分成了一个一个的段,每一个 段有一个段地址。 n其实: n内存并没有分段,段的划分来自于CPU,由于 8086CPU用“(段地址16)+偏移地址=物理 地址”的方式给出内存单元的物理地址,使得 我们可以用分段的方式来管理内存。 3.8 段的概

14、念 n我们可以认为:地址10000H100FFH的内 存单元组成一个段,该段的起始地址( 基 础地址)为10000H,段地址为1000H,大 小为100H。 3.8 段的概念 n我们也可以认为地址10000H1007FH、 10080H100FFH 的内存单元组成两个段, 它们的起始地址( 基础地址 )为10000H 和10080H,段地址为:1000H 和1008H, 大小都为80H。 3.8 段的概念 n以后,在编程时可以根据需要,将若 干地址连续的内存单元看作一个段, 用段地址16定位段的起始地址(基 础地址),用偏移地址定位段中的内 存单元。 n两点需要注意 n内存单元地址小结 两点需

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

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

17、PU有4个段寄存器: CS、DS、SS、ES n当8086CPU要访问内存时,由这4个 段寄存器提供内存单元的段地址。 本课件由汇编网()制作提供 段的类型段的类型 8086汇编语言中把逻辑段分为四种类型,汇编语言中把逻辑段分为四种类型, 分别是代码段、数据段、附加段和堆栈段。分别是代码段、数据段、附加段和堆栈段。 各段的逻辑地址对应表:各段的逻辑地址对应表: 段名段名段寄存器段寄存器偏移地址偏移地址 代码段代码段CSIP 数据段数据段DSBX、SI、DI等地址等地址 寄存器寄存器 附加段附加段ESBX、SI、DI等地址等地址 寄存器寄存器 堆栈段堆栈段SSSP或或BP 汇编语言最新课件 例例

18、1段寄存器与其偏移地址如下,写出其相应段寄存器与其偏移地址如下,写出其相应 的物理地址及含义。的物理地址及含义。 nCS=1896H,IP=1655H 当前要执行的当前要执行的指令的指令的物理地址物理地址 =18960H+1655H=19FB5H DS=2896H,EA=1655H 当前要访问的数据的物理地址 =28960H+1655H=29FB5H ES=1896H,EA=2655H 当前要访问的数据的物理地址 =18960H+2655H=1AFB5H SS=1896H,SP=3655H 当前要访问的堆栈的物理地址 =18960H+3655H=1BFB5H 例例2 段寄存器与内存的分段情况如

19、图。观察各段寄存器与内存的分段情况如图。观察各 段的大小及分布,判断其地址范围,标出每个段的大小及分布,判断其地址范围,标出每个 段首地址和末地址。段首地址和末地址。 n代码段共代码段共64KB单元,它单元,它 的地址范围应该是的地址范围应该是 210E0H310DFH。 n附加段只有附加段只有2KB,地址范,地址范 围在围在34600H34CFFH 之间。之间。 n数据段为数据段为16KB,其地址,其地址 范围为范围为34D00H 38CFFH。 n堆栈段只有堆栈段只有512个字节单个字节单 元,它的地址范围是元,它的地址范围是 84180H8437FH。 你懂了吗? 本课件由汇编网()制作

20、提供 因为是重点所以再重复一次:地址加法器的工作原理 可表示为: 物理地址PA = 段地址 偏移地址 = ( 段寄存器 ) 16 + 偏移地址 = ( 段寄存器 ) 10H + 偏移地址 即段寄存器的内容左移4位,加上偏移地址 DS ES SS CS IP 地地址址总总线线AB 地地 址址 加加 法法 器器 本课件由汇编网()制作提供 物理地址PA = 段地址 偏移地址 = ( 段寄存器 ) 10H + 偏移地址 l 段寄存器有4个: DS、ES、CS、SS l 偏移地址由 IP、SP、BX、BP、SI、DI 或一个8位或16位二进制数得到。 这种存储器管理方式叫分段编址。 DS ES SS

21、CS IP 地地址址总总线线AB 地地 址址 加加 法法 器器 本课件由汇编网()制作提供 物理地址PA = 段地址 偏移地址 = ( 段寄存器 ) 10H + 偏移地址 或段寄存器的内容左移4位,加上偏移地址 例:某内存单元的段地址由DS、偏移地址由BX给出。 若( DS) = 2000H, ( BX) = 1000H,计算其物理地址。 PA = ( DS ) 10H + ( BX ) = 2000H 10H + 1000H = 21000H 2 20 00 00 00 0H H + + 1 10 00 00 0H H 2 21 10 00 00 0H H 0 00 01 10 0 0 00

22、 00 00 0 0 00 00 00 0 0 00 00 00 0 0 00 00 00 0B B + + 0 00 00 01 1 0 00 00 00 0 0 00 00 00 0 0 00 00 00 0B B 0 00 01 10 0 0 00 00 01 1 0 00 00 00 0 0 00 00 00 0 0 00 00 00 0B B 3.10 CS和IP nCS和IP是8086CPU中最关键的寄存器, 它们指示了CPU当前要读取指令的地址。 CS为代码段寄存器; IP为指令指针寄存器。 8086PC读取和执行指令相关部件 n8086PC读取和执行指令演示 n8086PC工作

23、过程的简要描述 8086PC工作过程的简要描述 n(1)从CS:IP指向内存单元读取指令, 读取的指令进入指令缓冲器; n(2)IP = IP + 所读取指令的长度, 从而指向下一条指令; n(3)执行指令。 转到步骤 (1), 重复这个过程。 8086PC工作过程的简要描述 n在 8086CPU 加电启动或复位后( 即 CPU刚开始工作时)CS和IP被设置为 CS=FFFFH,IP=0000H,即在8086PC 机刚启动时,CPU从内存FFFF0H单元 中读取指令执行,FFFF0H单元中的指 令是8086PC机开机后执行的第一条指 令。 2.10 CS和IP n内存中指令和数据没有任何区别,

24、都是 二进制信息,CPU在工作的时候把有的信 息看作指令,有的信息看作数据。 nCPU根据什么将内存中的信息看作指令? CPU将CS:IP指向的内存单元中的内容看 作指令。 2.10 CS和IP n在任何时候,CPU将CS、IP中的内容当 作指令的段地址和偏移地址,用它们合 成指令的物理地址,到内存中读取指令 码,执行。 n如果说,内存中的一段信息曾被CPU执 行过的话,那么,它所在的内存单元必 然被CS:IP指向过。 2.11 修改CS、IP的指令 n在CPU中,程序员能够用指令读写的部件只 有寄存器,程序员可以通过改变寄存器中的 内容实现对CPU的控制。 nCPU从内存何处执行指令是由CS

25、、IP中的内 容决定的,程序员可以通过改变CS、IP中的 内容来控制CPU执行目标指令。 n我们如何改变CS、IP的值呢? 2.11 修改CS、IP的指令 n8086CPU必须提供相应的指令 n先回想我们如何修改AX中的值? nmov指令不能用于设置CS、IP的值, 8086CPU没有提供这样的功能。 n8086CPU为CS、IP提供了另外的指令 来改变它们的值:转移指令 如何修改AX中的值? nmov 指令 n如:mov ax,123 nmov指令可以改变8086CPU大部分寄存 器的值,被称为传送指令。 n能够通过mov 指令改变CS、IP的值吗? 2.11 修改CS、IP的指令 n同时修改CS、IP的内容: jmp 段地址:偏移地址 jmp 2AE3:3 jmp 3:0B16 功能:用指令中给出的段地址修改 CS,偏移地址修改IP。 2.11 修改CS、IP的指令 n仅修改IP的内容: jmp 某一合法寄存器 jmp ax (类似于 mov IP,ax) jmp bx 功能:用寄存器中的值修改IP。 n内存中存放的机器码和对应汇编指令情况: (初始:CS=2000H,IP=0000H) n请写出指令执行序列: 问题分析 问题分析结果:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论