欢迎来到天天文库
浏览记录
ID:45005420
大小:150.00 KB
页数:52页
时间:2019-11-07
《汇编语言+第11章+列表与字符串操作》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第十一章列表与字符串操作11.1列表处理11.2记录与结构11.3列表的种类及其运算11.4字符串处理11.1列表处理11.1.1列表的定义列表即线性表,是指一组有限的数据的集合,它们前后相接,没有分支。可表示为:a1,a2,a3,a4,…,ai,…,an例如,一星期中的七天,依次为:星期一,星期二,星期三,星期四,星期五,星期六,星期日。这是简单的列表,其中星期一,星期二,…,星期日称为列表的元素。再如下表中的学生成绩表,就是复杂些的列表。表11.1学生成绩表学号姓名计算机外语数学物理体育总成绩平均成绩001黎明9589989380002宋妙然9590959090003李昕949397909
2、0…………………895章山7867897690其中每个学生的成绩在表中占一行,每行的信息说明某个学生五门课的学习成绩、总成绩及平均成绩。表中的每一行称为一个元素(或记录),元素中的学号、姓名等称为数据项或字段。一般地讲,列表是由一组数据组成的,在不同的情况下,一个数据元素的具体含义可以是不同的。总的来说,列表有如下结构特征:(1)列表是数据元素的一个有限序列。表的长度可定义为列表中数据元素的个数N,当N=0时,为空表。(2)数据元素在列表中的位置只取决于它们自己的序号,数据元素之间的相对位置是线性的。11.1.2列表的存储结构顺序存储:即用一组连续的存储单元依次存储列表中的各元素。这种方法不仅
3、简单,而且访问某个元素很方便,可以直接计算找出。但是要进行插入、删除或排序操作,将引起元素的大量移动。链式存储:除了保存元素的值外,还必须设有一个指示下一个元素存放地址的信息。对这种形式存储的列表进行插入,删除不需要移动其它信息,但却是以牺牲存储空间为代价的。例以顺序存储形式存储表11.1的学生成绩表,则应先确定元素的长度,即一个元素所占用的字节数。元素长度是元素所包含的数据项的长度之和。比如,学号字段用二进制表示,最大学号为1000,那这个数据项就需要两个字节;姓名用汉字代码存储,每个名字最多四个汉字,每个汉字占用两个字节(机内码),共8个字节;每科成绩和平均成绩最大值为100,用二进制形式
4、存储,占用一个字节;总成绩最大值为500,用二进制形式存储,占用2个字节;各字段占用字节总数为18。设学生成绩表的首地址为STUDENT,在计算机内存储格式如图11.1所示。STUDENT+0+1+2:+9+10+11+12+13+14+15+16+17学号学生姓名计算机外语数学物理体育总成绩平均成绩顺序表中的元素是按序号连续存储的,每项元素在表中的位置取决于该元素的序号,序号通常从0开始,每个元素在顺序表中的地址与表首址的位移量等于元素序号与元素长度之积。这样,在表首址和元素序号已知的情况下,很容易计算出指定元素的地址,以便对元素中数据相进行各种操作。11.2记录与结构我们前面介绍了5种数据
5、定义伪指令:DB,DW,DD,DQ和DT,用来定义字节、字、双字、四字和十字节数据。而信息处理方面的数据结构远比这5种形式复杂。为此,8086/8088宏汇编程序提供了自定义数据的伪操作功能,即记录和结构定义伪指令。11.2.1记录当我们处理的列表元素包含的数据项较少,每个数据项用几位二进制数就可以表示,列表元素的总长度不超出8位或16位二进制数时,就可以把一个数据项放在一个字节或两个字节中。这时,可以采用记录数据语句来定义。记录数据语句是宏汇编提供的一种用符号的方法在字节或字内定义各位或位串的方法。记录中每个被符号定义的位串(至少1位)称为记录域(或字段)。1.记录定义伪指令RECORD格式
6、:RNRECORDFN1:WT1[,FN2:WT2,…]说明:RN为记录名,是用户自定义标识符号,FN1,FN2,…为记录的字段名,是用户自定义的标识符号;WT1,WT2为字段宽度,是1~16间的常数。如果字段的总宽度小于等于8,汇编程序将用一个字节表示记录;如果字段的总宽度大于8,小于等于16,汇编程序将用2个字节表示记录。汇编程序把所定义的字段与字节或字的最低有效位对齐。2.预置记录及存储分配记录定义伪指令并不分配内存单元,它只告诉汇编程序记录名及记录中各字段的名字、位置和记录的长度。当记录定义后,在程序中可以直接引用记录名,设置记录变量,分配内存空间。预置记录变量的语句格式如下:[SN]
7、RN﹤[EXP][,EXP][,…]﹥其中,SN为记录变量名,是用户自定义的标识符号,表示记录变量的存储分配的第一个字节或字的符号地址,是任选项。RN是RECORD伪指令定义的记录名;尖括号内的EXP为表达式,用以初始化记录字段的数据,它可以是常数、字符或缺省。缺省值为0。例:定义记录和初始化记录MODERECORDA:4,B:5,C:7AS_MODEMODE<2,,17>RS_MODEMODE<
此文档下载收益归作者所有