《微机原理与接口技术(第2版)》第04章寻址方式_第1页
《微机原理与接口技术(第2版)》第04章寻址方式_第2页
《微机原理与接口技术(第2版)》第04章寻址方式_第3页
《微机原理与接口技术(第2版)》第04章寻址方式_第4页
《微机原理与接口技术(第2版)》第04章寻址方式_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

第4章寻址方式本章知识要点:

本章以Intel系列微处理器为例,对各种类型数据在计算机内的表示形式,常用的数值类型和格式,各种寻址方式进行了详尽地描述,对8086~Pentium中常用的寻址方式分门别类地进行了描述、说明。而且从科学发展的角度,特别把16位微处理器中没有的32位微处理器新增加的32位寻址方式进行了介绍,从每一种寻址方式操作中,可以领会到微机硬件是怎样进行操作的。本章内容是前面知识的细化、延伸和提高。

本章重点是各种寻址方式、数据在计算机内的表示形式。

4.1数据类型

1数据在计算机内的表示为对各种数据长度操作均给以支持,Pentium在存储器中存放各种类型数据的地址是按字节进行编址。

可以访问一个字节地址,可以访问16位(双字节)地址,并将这种地址称之为字可以访问32位(4字节)地址,也就是双字地址,同时约定,无论是字地址还是双字地址,均系指低序位字节地址。

存储器中的字节,字,双字和四倍字是这样规定的,如图所示地址N

字节7字节地址N低序字节07字地址N+1高序字节15地址N+1031双字地址N低序字高序字15地址N+2地址N+3四字0153114763低序双字高序双字地址N地址N+1地址N+2地址N+3地址N+4地址N+5地址N+6地址N+7

图展示出了字、双字和四字在存储器中各字节的存放次序。0EH0H01H02H03H04H05H06H07H08H09H0AH0BH0CH0DH在地址06中的4字的内容在地址0AH中的双字内容地址0BH中的字内容地址09上的字节内容地址06上的字内容地址2中的字内容地址1中的字内容367AFE061FA4230B74CB311.整数:所谓整数指的是Pentium支持的字节整数、字整数、双字整数。它们分别是保存在一个8位字节内、或一个16位的字之内、或一个32位双字内的带符号的二进制数。双字整数1位符号位03131位数值字整数15位数值1位符号位01507字节整数7位数值1位符号位2.无符号整数:无符号整数,实际上就是不带符号的二进制数,它既可以是8个二进制位的字节数,也可以是16个二进制位的字操作数,还可以是32个二进制位的双字操作数。图中展示出了无符号字节整数、无符号字整数以及无符号双字整数的二进制表示形式。078位数值无符号的字节整数150无符号的字整数16位数值无符号的双字整数03132位数值3.二-十进制整数(BCD整数)

BCD指的是二进制编码的十进制数,也就是说用4位二进制编码,来表示十进制的从0至9范围内的一位十进制数的方法。非压缩的十进制数被当成不带符号的字节存放的,在每一个字节内仅仅存放一位十进制数。…N0BCD整数每个字节仅用4位,用4位二进制数表示十进制数的1位4.压缩二-十进制整数(压缩的BCD整数)也是指用二进制代码表示的十进制的从0到9的数。…N0压缩的BCD整数每个字节内的高4位和低4位二进制数分别表示十进制数的1位5.近指针:所谓近指针指的是一个32位的有效地址。近指针是在一个段范围内的一个偏移量。图中展示出了在Pentium内使用的近指针的表示形式。近指针03132位偏移量。6.远指针:

所谓远指针指的是一个48位的逻辑地址,它是由一个16位的段选择符和一个32位的偏移量两部分构成03147远指针32位偏移量16位选择符7.位字段所谓位字段是位的相邻序列,是由连续的一系列的位组成的,位字段可以从任何一个字中的任何一位开始算起,但最多只能包含32位图中展示出了在Pentium内使用的位字段的表示形式。位字段最多可达32位8.位串位串是位的相邻序列,是由连续的一系列的位组成,位串也可以是从任何一个字节的任何一个位开始算起,只不过是位串的规模大的很,一个位串可以拥有232-1位图中展示出了在Pentium内使用的位串的表示形式。…位串最多可达4G位9.字节串所谓字节串是字节、字或双字的相邻序列,是由连续的一系列的字节、字或双字组成一种数据。图中展示出了在Pentium内使用的字节串的表示形式。…字节字串最多可达4GB10.浮点类型浮点数据又称实数,在许多高级语言中经常要使用实数这种数据类型。根据需要浮点数据又可以分为单精度、双精度和扩展精度浮点数。

(1)单精度数据;全长用32位二进制数表示,其中,位31这一位表示符号位,位30~位23这8位表示的是浮点数据的指数,位22~位0这23位表示是浮点数据的有效精度位,且被认为其精度是24位的。这是由于在这24位的精度内包括一个默认的隐藏位的缘故,因此只要有效精度位23位就可以表示24位的精度。02331指数有效数S22(2)双精度数据全长用64位二进制数表示,其中,位63这一位表示符号位,位62~位53这10位表示的是浮点数据的指数,位52~位0这53位表示是浮点数据的有效精度。这种双精度数据所能表示的数据范围为10±308

。(3)扩展精度数据全长用80位二进制数表示,其中,位79这一位表示符号位,位78~位64这15位表示的是浮点数据的指数,位63~位0这64位表示是浮点数据的有效精度0536352指数有效数S指数有效数0797863641DS4.2寻址方式

寻址方式是指微处理器获取操作数的方式。一条指令必须说明两个问题;一是要说明这条指令要进行什么操作,二是要说明这条指令的操作数位于何地。一条指令可以对零个或多个操作数操作。零个操作数的指令的例子是NOP指令(即没有数)。操作数可以位于下列位置处:(1)指令本身有操作数;即立即操作数(2)操作数在寄存器中;(3)操作数在存储器中(4)操作数在I/O端口

1.立即操作数寻址是说指令本身带的数据作为一个操作数用,即指令所用的操作数是指令自身所拥有的,像单操作数指令或两操作数指令即是这类指令。凡指令本身所拥有的操作数就称之为立即操作数。例如,MOVAX,1999H;这条指令的功能是将16进制的立即操作数1999传送到AX寄存器。由于立即操作数1999是16位的,其中存放在代码段的高地址字节中的内容被传送到AH寄存器,低地址字节中的内容被传送到AL寄存器,如图所示。存储器操作码19H19H99H99H┋┋AHAL代码段指令1350H1351H1380H1381H2.寄存器操作数寻址将操作数存放在32位通用寄存器中,或存放在16位通用寄存器中,或存放在8位通用寄存器中,并对操作数进行访问操作,称之为寄存器操作数寻址。指令MOVEDX,EAX;MOVEDX,EAX源操作数目标操作数EAXEBXECXEDX

139A

139A

D407

D40711002233999999993存储器操作数寻址

(1)直接寻址直接寻址是一种很简单的寻址方式,虽然操作数存放在存储器内,但在这种直接寻址方式下,操作数的有效地址是由指令直接给出。例如:

MOVEAX,LISTT

这条指令的功能是,将地址LISTT处4个连续字节地址中的32位操作数传送到寄存器EAX内。LISTT是存储器中存储单元的符号地址,LISTT的实际地址是1230H这个十六进制地址1230H1231H1232H1233H┋┋806A38BC

80386ABCEAX存储器(2)寄存器间接寻址

寄存器间接寻址这种寻址方式,可以对存储器内的任何存储单元的数据进行寻址,只是要借助于在BP,BX,DI和SI这些寄存器内保存的偏移地址。例,如果寄存器BX的内容是1000H,在执行MOVAX,[BX]指令之后,地址1000H处的字内容被传送到AX寄存器中,如图所示。1000H1001H1002H1003H┋89A335D4存储器

A3D41000EAXEBX(3)基地址加变址寻址

所谓基地址加变址寻址,就是操作数位于所选的存储器段内,操作数的有效地址由一个基地址寄存器的内容再加上一个变址寄存器的内容构成。通常,在基地址寄存器内保存的是位于存储器内数组的起始地址,而在变址寄存器内保存的是数组元素的相对位置。每次BP寄存器在对存储器内的数组进行寻址时,由BP寄存器和堆栈段寄存器两者生成有效地址。例如:MOVEDX,[EAX+EBX]存储器+EAXEBXECXEDXESPEBPESIEDI100AAB89200089100AH0020H102AH102AH1029H102BH1028H102CH1027H1026HAB

(4)寄存器相对寻址

寄存器相对寻址类似于基址加变址寻址,只不过是在寄存器相对寻址方式下,在变址寄存器或基地址寄存器的内容中,加上了一个位移量,而形成了操作数的有效地址的值,然后是用这个有效地址的值,对存储器中的操作数进行寻址。在进行32位寻址操作时,8个32位的通用寄存器除了ESP以外,都可以作为基地址或变址寄存器使用。操作数的有效地址是由基地址或变址寄存器的内容再加上一个8位数值、16位数值或32位数值的位移量组成。例如:MOVEAX,[ECX+1AH]

指令是,将数据段中由ECX寄存器上的内容,再加上1A这个数值所形成的操作数地址中的内容传送至EAX寄存器。指令MOVAX,[BX+1000H]的操作过程如图示2200H2201H2202H2203H┋┋99AB45D6存储器

ABD61200EAXEBX+1000H1200H2200H位移量

(5)相对基地址加变址寻址

相对基地址加变址寻址类似于基地址加变址寻址,它除了需要加上位移量之外,仍然需要用基地址寄存器和变址寄存器的内容来形成操作数的地址。也就是说,它是用基址寄存器和变址寄存器上的内容再加上位移量,从而形成操作数在存储器中的有效地址。这种寻址方式常被用来对存储器内的二维数组的数组元素进行寻址。例如:

MOVEDX,[EBX+ECX+200H]

图中以指令MOVEAX,[BX+SI+100H]执行过程为例,展示出用相对基址加变址寻址方式进行寻址的操作过程。存储器+EAXEBXECXEDXESPEBPESIEDI100A200059100AH0020H112AH112AH1129H112BH1128H112CH1127H1126H2B+位移量0100H102AH592B(6)带比例因子的变址寻址

这种寻址方式是80386~Pentium微处理器所特有的,在对存储器进行寻址操作时,要用到两个寄存器,第1个是基地址寄存器,第2个是变址寄存器,它们均是32位的寄存器。这种寻址,只有第2个变址寄存器才会与比例因子相乘,变址寄存器内容乘以比例因子后,再加上位移量即可形成操作数的32位的有效地址。比例因子可以是1、2、4或8。比例因子为1是默认的,例如,指令MOVAL,[EBX+ECX]就没有在变址寄存器ECX前面显式地乘以1。比例因子为2用来对字数组中的数组元素进行寻址操作的比例因子为4用来对双字数组中的数组元素进行寻址,例如:

MOVEAX,[EBX+4*ECX]

温馨提示

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

评论

0/150

提交评论