C语言中数组指针在汇编语言寻址方式中的应用_第1页
C语言中数组指针在汇编语言寻址方式中的应用_第2页
C语言中数组指针在汇编语言寻址方式中的应用_第3页
C语言中数组指针在汇编语言寻址方式中的应用_第4页
全文预览已结束

下载本文档

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

文档简介

1、C语言中数组指针在汇编语言寻址方式中的应用语言中数组指针在汇编语言寻址方式中的应用1、引论文联盟.Ll.言?汇编语言程序设计?是高等院校计算机及相近专业学生必修的专业根底课程之一,它不仅是?嵌入式开发?、?操作系统?、?单片机?、?接口技术?等根底课程的先修课程,而且也非常有助于学生系统掌握计算机根底知识和进步编程才能1。作为一门直接控制计算机硬件和pu结合最为严密的一门语言,执行起来时最为有效和速度最快的。但是区别于高级语言他又自身的弱点,比方可读性差,需要更深化地熟悉硬件构造,编程和调试过程繁琐,而且没有便捷的开发调试环境。在讲授?汇编语言程序设计?过程中,假如可以结合或者转化为高级语言如

2、语言的内容那学生承受和学习起来就能增加不少的兴趣,进步学生的学习效率。2、语言数组和指针的使用2.1数组数组是在程序设计中为了处理方便,把具有一样类型的假设干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组2。在语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是根本数据类型或是构造类型。因在汇编语言中主要把指令系统中的寻址方式转换为一维数组或指针,所以下面就简要介绍一下一维数组和指针的特点定义一维数组的格式为:类型说明符数组名整型常量表达式,;例如:inta10,b5;说明:(1)它表示定义了两个一维数组,一个数组名为a,另一个数组名为

3、b。数组名是按照标识符的规那么构成的。(2)a数组含有10个数组元素,即a0、a1、a2、a9;b数组含有5个数组元素,即b0、b1、b2、b3和b4。注意,不能使用a10和b5,否那么即出现数组超界现象,并且需要注意的是数组的小标是从0开场的。(3)类型说明符int说明a数组和b数组中的每个元素均占2个字节,只能存放整型数据。(4)整型常量表达式可以是整型常量或符号常量。最常见的是整型常量。不允许为变量。(5)编译程序如Turb为a数组在内存中分配了10个连续的数组单元共占20个字节,为b数组在内存中分配了5个连续的数组单元共占10个字节。(6)编译程序还指定数组名a为数组的首地址,即a与a

4、0等价;指定数组名b为b数组的首地址,即b与b0等价。2.2指针指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。计算机内存中的每个内存单元,都有相应的内存地址。在程序中对变量进展存取操作有两种方式,一种叫直接存取,就是指在程序中对变量进展存取操作时是按变量的地址来存取的方法,另一种叫间接存取,就是通过另外定义一个指针变量来保存需要访问的数据的地址3。(1)指向简单变量的指针。(2)指向数组的指针。指针所指的数组既可以是一维数组,也可是多维数组。(3)指针数组。数组的元素值为指针,指针数组是一组有序的指针集合。(4)指向指针的指针。假如一个指针变量存放的是另一个指针变量的地址,

5、那么称这个指针变量为指向指针的指针。(5)指向函数的指针。在语言中,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。我们可以把函数的这个首地址赋予一个指针变量,通过指针变量就可以找到并调用这个函数。3、数组和指针在汇编语言指令系统寻址方式中的应用和转换3.1汇编语言指令系统的寻址方式4(1)立即寻址。(2)存放器寻址。(3)直接寻址。(4)存放器间接寻址:指令中指出一个基址存放器BX、BP或变址存放器SI、DI,并以其内容做为操作数的有效地址,ADDAX,BP物理地址=10H(SS)+(BP)。(5)存放器相对寻址:指令中指出一个基址或变址存放器,同时给出一个位移量,存

6、放器内容与位移之和做为操作数的有效地址。VAX,DI+100H,有效地址EA=(DI)+100H,为物理地址=10H(DS)+(DI)+100H。(6)基址变址寻址:指令同时指出一个基址存放器和一个变址存放器,两存放器内容的和为操作数的有效地址。ADDAX,BXSI,有效地址EA=(BX)+(SI)。物理地址=10H(DS)+(BX)+(SI)。(7)相对基址变址寻址:指令中给出一个基址存放器一个变址存放器和一个位移量。两个存放器的内容及位移量三者之和做为操作数的有效地址。例:VDX,100HBXSI,物理地址=10H(DS)+(BX)+(SI)+100H。3.2间接寻址方式转换为数组或指针3

7、.2.1存放器间接寻址转成一维数组来理解形式:ADDAX,BP物理地址=10H(SS)+(BP)。我们就可以认为,在此定义了一个数组SS,即SS中的值为这个数组的首地址,当然我们知道这个数组的最大元素个数为64K个。刚刚谈到偏移量和数组下标都是从0开场的,所以偏移量BP就可以认为是这个数组的一个下标,在这寻址操作数的时候是要把这个下标作为一个内存地址,其所存储的内容就是我们所要找的操作数。在数组中形如I=A10就是把A数组的第10个元素赋值给I,在ADDAX,BP语句中BP也有一个中括号,只是在这个地方省略了数组名;并且也是把SS数组的第BP个元素赋值给AX。所以无论从形式还是从本质上就把存放

8、器间接寻址转换成了一个一维数组。3.2.2存放器间接寻址转成指针来理解因为指针和数组有时间是可以互相转换的,所以在这也可以转换成指针来理解。形式:ADDAX,BP物理地址=10H(SS)+(BP)。BP在汇编语言中本身就定义为一个基址指针用来和堆栈段配对使用,其中存放的数据是堆栈段的某一个存储单元地址。这就和指针吻合了,前面说到指针变量名与地址间具有一一对应关系,在存取操作时是按变量的地址来进展的一种间接存取的方法。那么这个地方我们可以认为论文联盟.Ll.BP是一个指向堆栈段中某一个存储单元的语言意义上的指针。这样就把存放器间接寻址方式可以理解成语言意义上的指针。对于存放器相对寻址、基址变址寻址、基址变址寻址我们也都可以通过上面的方法来理解,只是数组下标是通过表达式形式给出的而已,读者可以自行转化理

温馨提示

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

评论

0/150

提交评论