为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

太原工业学院

2017-09-02 8页 doc 23KB 54阅读

用户头像

is_614050

暂无简介

举报
太原工业学院太原工业学院 2007 /2008学年 第 二 学期 所在系部 计算机工程系 教 研 室 网络教研室 课程名称 微机原理与接口技术 课程类别 专业基础课 授课对象 0520221、222、211 授课教师 王伟 职 称 副教授 教材名称 微型计算机原理与接口技术 1 2008年 2 月 25 日 教 案 首 页 课程名称 微机原理与接口技术 授课时间 3月12日 地点 F05019 授课班级 0520221、222、211 授课学时安排 第三章 指令系统 授课题目,内容3.1寻址方式 ,章、节...
太原工业学院
太原工业学院 2007 /2008学年 第 二 学期 所在系部 计算机系 教 研 室 网络教研室 课程名称 微机原理与接口技术 课程类别 专业基础课 授课对象 0520221、222、211 授课教师 王伟 职 称 副教授 教材名称 微型计算机原理与接口技术 1 2008年 2 月 25 日 教 案 首 页 课程名称 微机原理与接口技术 授课时间 3月12日 地点 F05019 授课班级 0520221、222、211 授课学时安排 第三章 指令系统 授课题目,内容3.1寻址方式 ,章、节, 教学目的,要求 了解8086指令的基本,掌握8086 CPU的寻址方式 重 点:8086 CPU的寻址方式 教学重点与难点 难 点 :存储器寻址 教学方式,方法讲授演示法 与手段 使用教具 多媒体CAI 教学参考资料 微型计算机原理与接口技术 冯博琴 清华大学出版社 审批人意见 审批人签名: 日期 2 课后作业及小结 备注 :1. 2学时为一个教案,需加教案首页。 2. 助教上课教案应有教研室主任审批。 教学环节及组织: 3.1 概述 3.1.1指令的基本内容 1.指令的概念 微处理器通过执行程序来完成指定的任务,而程序是由完成一个完整任务的一系列有序指令组成的,指令是指示计算机进行某种操作的命令,指令的集合称为指令系统。不同系列的微处理器,有不同的指令系统。指令是根据CPU硬件特点研制出来的,指令的符号用规定的英文字母组成,称为助记符,用助记符表示的指令称为汇编语言指令或符号指令。后面介绍的指令全都是用助记符书写的。 2.指令的组成 计算机中的指令由操作码和操作数两部分构成。操作码也称指令码,它表示这条指令要进行的是什么样的操作,而操作数是参加本指令运算的数据。操作数的表现形式比较复杂,可以是参与运算的值,也可以是参与运算的值的“地址”。这里的“地址”是广义的,它既包括我们平常所理解的内存储单元的地址,也包括微处理器内部的寄存器。 3.指令的表示方法 从形式上看,指令用一组二进制编码来表示,计算机根据二进制代码去完成所需的操作,如8086 CPU中有一条指令,其二进制代码形式为01001011,十六进制代码为4BH,指令功能是将BX的内容减1。由于二进制代码不易理解,也不便于记忆和书写,故常常用字母和其他一些符号组成的“助记符”与操作数来表示指令。 上述指令如用助记符和操作数可表示为:DEC BX 其中DEC是助记符,而BX是操作数(单操作数)。这样用助记符和操作数来表示的指令直观、方便,又好理解。 4.指令的执行 要执行的程序段的指令,均保存在存储器中,当计算机需要执行一条指令时,首先产生这条指令的相应地址,并根据地址号打开相应的存储单元,取出指令代码,CPU根据指令代码的要求以及指令中的操作数,去执行相应的操作。 3.1.2 8086指令的基本格式 8086指令的一般格式如下: 操作码 [操作数],[操作数] 这里操作码用便于记忆的助记符来表示(一般是英文单词的缩写)。根据指令的不同,操作数可以是一个,即单操作数,也可以是两个,即双操作数(源操作数和目标操作数),有的指令还可以没有操作数或隐含操作数。例如指令MOV AX,DX 中的MOV是助记符,AX,DX为操作数(双操作数),这条指令的功能是将DX中的内容送到AX中。 8086系统中的操作数主要分为三类:立即数操作数、寄存器操作数和存储器操作数。 1.立即数操作数 3 所谓立即数是指具有固定数值的操作数,即常数。它可以是字节或字(8位或16位)。存放时,该操作数跟随指令操作码一起存放在指令区,故又称为指令区操作数。 2.寄存器操作数 操作数事先存放在某寄存器中(CPU的通用寄存器、专用寄存器或段寄存器),只要知道寄存器的名称(编号)就可以寻找到操作数。寄存器操作数既可作为源操作数,又可作为目标操作数。 3.存储器操作数 约定操作数事先存放在存储器中存放数据的某个单元,只要知道存储器的地址即可寻到操作数。当然,操作数也可以存放在堆栈中(堆栈是存储器的一个特殊区域),只要知道堆栈指针,就可以用栈操作指令寻找操作数。存储器操作数可以是字节、字或双字,分别存放在1个、2个或4个存储单元中。 3.1.3 8086 CPU的寻址方式 在8086中,CS、DS、ES和SS段寄存器在程序运行过程中分别指向当前的代码段、数据段、附加段和堆栈段。而操作数可能存放在代码段中,也可能存放在数据段、附加段、堆栈段中,还可能存放在8086CPU内部的寄存器中。存放操作数的内存单元相对于其所在段的段起始地址偏移量称为偏移地址或有效地址EA(Effective Address)。获得操作数所在地址的方法称为寻址方式。在8086系统中,一般将寻址方式分为两类:一类是寻找操作数的地址;另一类是寻找要执行的下一条指令的地址,即程序寻址,这将在程序转移指令(JMP)和调用指令(CALL)中介绍。本节主要讨论针对操作数地址的寻址方式。 1.立即数寻址 立即数寻址(Immediate Addressing)中,指令所用的8位或16位操作数(立即数)作为指令的一部分,紧跟在指令的操作码之后,存放于内存的代码段中。在CPU取指令时随指令码一起取出并直接参加运算。若立即数为16位,则存放时低8位在低地址单元存放,高8位在高地址单元存放。 例3.1 MOV CL, 64H; 将十六进制数64H送入CL MOV AX, 4050H;将4050H送AX,即AL为50H,AH为40H 要注意的是立即数只能是整数,不能是小数、变量或其他类型的数据;另外立即数只能作为源操作数,而不能作为目的操作数。 2.直接寻址(Direct Addressing) 直接寻址,是在指令的操作码后面直接给出操作数的16位偏移地址,所以直接寻址是对存储器进行访问时可采用的最简单的方式。 8086执行某种操作时,预先规定了采用的段和段寄存器,即有基本的段约定,如果要改变默认的段约定(即段超越),则需要在指令中明确指出来。 直接寻址的操作数本身若无特殊声明使用段超越,则默认存放在内存的数据段(DS段)中。 例3.2 MOV BX,ES:[3400H];将ES段中偏移地址为3400H和3401H两单元的内容送BX中。 例3.3 MOV AX,[2040H];将DS段的偏移地址为2040H和2041H两单元的内容送到AX中,若DS=3000H,则该指令的操作数的物理地址为:32040H和32041H。 要注意不要将直接寻址与前面介绍的立即寻址混淆,直接寻址指令中的数值不是操作数本身,而是操作数的16位偏移地址。为了区分二者,指令系统规定偏移地址必须用一对方括弧[ ]括起来。 在汇编语言中,有时也用一个符号来代替数值以表示操作数的偏移地址,一般将这个符号称为符号地址,上例中若用DATA代替偏移地址3400H,则该指令可写成: MOV BX,ES:DATA 其中DATA字母是符号地址,DATA必须在程序的开始处予以定义,有关内容在第6章将作介绍。 3.寄存器寻址 寄存器寻址(Register Addressing)方式的特点是:操作数存放在CPU内部的寄存器中,指令中指定寄存器号。对于16位的操作数来说,寄存器可以是AX、BX、CX、DX、SI、DI、SP和BP等;对于8位的操作数来说,寄存器可以是AL、AH、BL、BH、CL、CH、DL和DH等。 例3.4 INC CX; 将CX内容加1 MOV DX,AX; AX的内容送DX 4 采用寄存器寻址方式的指令在执行时,操作就在CPU内部进行,而不需要访问存储器,因而执行速度快。 4.寄存器间接寻址 寄存器间接寻址(Register Index Addressing)的特点是:操作数的有效地址在基址寄存器BX、BP或变址寄存器SI、DI中,而操作数则在存储器中。其操作数的段基址有以下两种情况: 第一种情况是:在默认情况下,当使用BX、SI、DI寄存器时表示操作数在当前数据段(DS给出段基址);当使用BP时表示操作数在当前堆栈段(SS给出段基址)。 第二种情况是:在指令中指定段超越前缀来取其他段中的操作数。 例3.5 MOV AX,[BX];将以DS为段基址,以BX为偏移量的数据段中相应单元的内容送AX。 若DS=2000H,BX=1000H,存储器21000H字单元的内容为3456H,则执行上述指令后AX=3456H。 例3.6 MOV AX,ES:[BX];将以ES为段基址,以BX为偏移量的附加段中相应单元的内容送AX。 5.寄存器相对寻址 寄存器相对寻址(Register Relative Addressing)的特点是,操作数的有效地址EA(即偏移量)是一个基址或变址寄存器的内容加上指令中指定的8位或16位位移量(Displacement)。当使用BX时,缺省的段寄存器为DS;当使用BP时,缺省的段寄存器为SS,当然也允许使用段超越前缀的方式寻址。 例3.7 MOV AX,COUNT [DI] 或 MOV AX,[COUNT +DI] 设DS=3000H,DI=1000H,COUNT=4000H(位移量的符号地址),则物理地址为: 30000H + 1000H + 4000H = 35000H 若存储器的35000H字单元内容为1990H,则执行上述指令后AX=1990H。 6.基址变址寻址 基址变址寻址(Based Index Addressing)中的操作数的有效地址是一个基址寄存器(如BX、BP)和一个变址寄存器(如SI、DI)的内容之和,两个寄存器均由指令指出。操作数的段地址分配和前面所述相同,即使用默认段基址或使用段超越前缀来指定段基址。 例3.8 MOV AX,[BX][DI]或MOV AX,[BX+DI] 设DS=2000H DI=1000H BX=8000H,则该指令表示将物理地址=20000H+8000H+1000H=29000H为首地址的一个字的内容送AX中。 7.相对基址变址寻址 相对基址变址寻址(Relative Based Indexed Addressing)中操作数的有效地址是一个基址寄存器和一个变址寄存器的内容和8位或16位位移量这三者之和。同样地,当使用基址寄存器BX时,缺省的段寄存器是DS;当使用基址寄存器BP时,缺省的段寄存器是SS。 例3.9 MOV AX,[BX+SI+0080H],即将BX与SI中的内容与0080H相加作有效地址。 例3.10设BX=0123H DI=1000H DS=3200H,默认DS作为操作数对应的段寄存器(假定没使用段前缀),试指出下列指令的寻址方式,并写出其操作数的有效地址和物理地址。 (1)MOV AX,[1A38H] (2)MOV AX,[BX] (3)MOV AX,[BX+1A38H] (4)MOV AX,[BX+DI] (5)MOV AX,[BX+DI+1A38H] 解: (1)直接寻址 有效地址=1A38H,物理地址=32000H+1A38H=33A38H (2)寄存器间接寻址 有效地址=0123H,物理地址=32000H+0123H=32123H (3) 寄存器相对寻址 有效地址=0123H+1A38H=1B5BH,物理地址=32000H+1B5B=33B5BH (4) 基址变址寻址 有效地址=0123H+1000H=1123H,物理地址=32000H+0123H=33123H 5 (5)相对基址变址寻址 有效地址=0123H+1000H+1A38H=2B5BH,物理地址=32000H+2B5BH=34B5BH 6 7
/
本文档为【太原工业学院】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索