电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

《汇编第六章》ppt课件

  • 资源ID:70816756       资源大小:458.31KB        全文页数:32页
  • 资源格式: PPT        下载积分:28金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要28金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

《汇编第六章》ppt课件

第6章 结构与记录,6.1 结构 6.2记录,6.1 结构 611结构的概念 逻辑上互相关联的一组数据以某种形式组合在一起就是结构。在程序中,若要多次使用相同的一组数据格式,就可以把这一组数据格式定义为一个结构。结构定义仅仅是一种对存储形式的描述,并不真正分配存储空间。结构一经定义就可以以此结构如同DB、DW、DD一样用来预置和分配变量的存储空间。 612 结构的定义 在一个程序中,使用结构前必须用结构伪指令STRUC/ENDS先定义。结构伪指令的使用格式如下: 结构名 STRUC ,结构名 ENDS 其中结构名是标识符,不能缺省,且在一源程序中必须是唯一的。数据定义语句序列是用DB,DW或DD定义结构中各字段(Fields),这些语句中的变量名叫结构字段名。 每一个结构字段名有局部偏移量及类型的属性。局部偏移量是指结构字段的第一个字节与结构起点之间的字节数,类型仍然是指字节、字或双字。例如定义一个结构: STUDENT STRUC NAME DB 0123456789ABCDEF SEX DB 0 CITY DB 20H DUP(?) ID DW ?,FACE DB ? STUDENT END 上述结构中NAME、SEX、CITY、ID、FACE分别是结构STUDENT的字段名,它们的局部偏移量分别是0,l0H,11H,31H,33H。结构中各字段可以指定具体的数值或字符作为结构字段的初值。用伪指令STRUCENDS定义的结构,不产生任何目标代码,因而也不分配存储单元。 注意标记一个结构类型结束的伪指令与标记一个段结束的伪指令用相同的助记符ENDS,汇编程序通过上下文理解ENDS的含义,因此要确保每一SEGMENT伪指令和每一STRUC伪指令有各自对应的ENDS伪指令。,613 结构的预置与存储分配 当结构定义后,我们可在程序中直接引用结构名,为结构预置副本,定义结构变量,分配存存储空间。结构变量定义格式为: 结构变量名 结构名 其中,结构名是用STRUCENDS伪指令定义结构时的结构名。结构变量名是当前定义的结构变量的名称,它同其他变量一样有三个属性:段、偏移量和类型属性。段、偏移量表示结构变量的地址,类型表示结构的总字节数。字段值表为结构变量中各字段进行预置,其中各字段值的排列顺序及类型应与结构定义时各字段相一致,中间以逗号分隔。如果某个字段采用在说明结构时所给定缺省的初值,那么可简单地用逗号表示;如果结构变量的所有字段均如此,那么可省去字段值表,但尖括号不能省略。,例如,假设已说明了上述结构STUDENT ,那么可定义如下结构变量: DATA SEGMENT STD1 STUDENT STD2 STUDENT ,STD3 STUDENT STD4 STUDENT 10H DUP() DATA ENDS 在上述结构预置中,结构变量STDl对结构中所有字段不加修改,保留各字段的初值。结构变量STD2仅修改第一个字段,其余各字段保留其初值。结构变量STD3除第三个字段(字段名为CITY)外,其余各字段均作修改。按照上述结构变量的定义,变量STDl,STD2和STD3的存储空间分配情况如下图所示。,对结构字段初值的修改,并非所有字段的初值都可以修改,只有简单结构字段和字符串字段初值才可以修改。所谓简单结构字段就是由伪指令DB,DW或DD定义的单项变量,如结构STUDENT中SEX,ID,FACE就是只有单项的简单结构字段。而NAME是用DB伪指令定义的字符串,也可以用其他字符串进行修改。而多项(多重)变量的结构字段初值(如CITY)不能修改。例如下面就是多项(多重)的结构字段: DB 10H DUP(?) DW 1234H,5678H,0ABCDH,DB ABCD,EFGH DW BUF,CUT 结构变量名STD4同时预置10H个结构副本,每一个副本中都是仅修改第二个字段初值,其余保留不变。这10H个结构数据在分配存储空间时,依次存放。,614 结构变量及其字段的访问 通过结构变量名可直接存取结构变量,如果要访问结构变量中的某一字段,需使用结构字段运算符“.”,该运算符使用格式如下: 结构变量名结构字段名 例如: STDl.NAME ;表示结构变量STDl中的NAME字段 STD2.ID ;表示结构变量STD2中的ID字段,STD3.SEX ;表示结构变量STD3中的SEX字段 在结构变量字段名前加运算符与一般变量名前加运算符有相同意义。例如: MOV DI,OFFSET STD1.NAMEl3 ;DI34H MOV CX,TYPE STD2.ID ;CX2 MOV CX,TYPE STD3.FACE ;CX1 为传送结构变量STD1的 NAME字段的第个字符给AL,可以用:,MOV BX,OFFSET STD1 MOV AL,BX.NAME 或者 MOV AL,STD2.NAME 若要取出结构变量STD4中的第五个副本的NAME字段的第5个字符,可用下面的指令序列: MOV BX,OFFSET STD4 ADD BX,TYPE STD4,MOV AL,BXNAME4 与一般变量一样,结构变量也可作为一条指令的操作数,不过使用某些运算符时有不同的意义。当结构变量前面使用运算符时,运算符TYPE所表示的是结构所占的总字节数。其他运算符(如OFFSET,LENGTH,SIZE等)所表示的意义与一般变量的使用相同。例如: MOV AX,TYPE STD3 ;BX34H MOV CX,LENGTH STD4 ;CX10H MOV DX,SIZE STDl ;DX34H MOV BX,OFFSET STDl ;BX0 MOV BX,OFFSET STD2 ;BX34H,615 程序举例 例61 下面定义一学生的成绩结构,其中SClSC5是五个连续字段,分别存储每个学生五门课程的成绩;AVER字段记录该学生的平均成绩。在数据段中已预置20位学生的结构副本。另有程序已完成20位学生成绩的录入。现要求编制一子程序计算每位学生五门课程的平均成绩并送入相应的AVER字段中。结构定义及数据段中结构预置如下: STD_SCOR STRUC : :,SC1 DB ? SC2 DB ? SC3 DB ? SC4 DB ? SC5 DB ? AVER DB 0 : : STD_SCOR ENDS,: CLASS_SCOR STD_SCOR 30 DUP() 由于记录每位学生五门课程成绩的字段是连续的,因此只需要用一个地址指针(如DI)指向一位学生的SCl字段,然后依次递增这个地址指针(DI),便可找到其它成绩字段。如何寻找一位学生的SCl字段呢? 首先用寄存器BX(BX是结构副本地址指针)依次指向每一个结构副本(即一位学生的成绩)首地址,再加上结构字段SCl的局部偏移量,便是SCl在数据段中的偏移量。在计算完平均成绩后,就可以存入AVER字段中。为了简化程序,平均成绩仅取整数部分。子程序编制如下: AVE_SCOR PROC,LEA BX,CLASS_SCOR ;第一个结构副本首地址送BX MOV CX,20 ;计算平均成绩的总人数 LOPl:MOV AX,0 PUSH CX LEA DI,BX.SCl ;一位学生SCl字段偏移量送DI MOV CX,5 LOP2:ADD AL,DI ;计算一位学生成绩总分 ADC AH,0 INC DI,LOOP LOP2 MOV DL,5 ;计算于均成绩 DIV DL MOV BX.AVER,DL ;存储平均成绩 ADD BX,TYPE CLASS_SCOR ;指向下一个结构副本首地址 POP CX LOOP LOP1 AVE_SCOR ENDP,62 记录 记录和结构一样是用来定义一种存储形式,只不过结构是以字节为基本单位组成字段,而记录是以二进制数位为基本单位组成字段。在程序中,对记录的应用与结构样,首先定义记录,然后对记录变量进行预置和存储分配,而后就可以访问记录变量及其字段。 621 记录的定义 记录定义格式如下: 记录名 RECORD 字段名:宽度表达式,字段名:宽度表达式,其中,RECORD为伪指令用来定义记录,记录名由用户定义,不能缺省,在记录变量进行预置时,它是已定义记录引用的符号名,且它应是程序中唯一的符号名。记录名和字段名由程序设计人员自己选定,且必须唯一性。宽度是所在字段所需要的二进制位数。表达式是对字段设置的初值,它是任选项,但必须是该字段宽度所能表达的正整数。如果宽度7,表达式可以使用单引号括起来的字符。一个记录可以由若干个字段构成,但是所有字段宽度之和应16。若所有字段宽度之和大于8,那么汇编程序会给对应的记录变量分配两个字节,否则仅给定义对应的记录变量分配一个字节。第一个字段放在记录左边的较高有效位,随后定义的各字段依次向较低位安排。若各字段宽度之和8或16,则将字节或字的各字段向右对齐(即最低位对齐),剩余未用的数位安排在高位,并置o。例如: REC1 RECORD F1:2,F2:3,F3:3,REC2 RECORD F4:5,F5:4=8,F6:3,F7:4=0 REC3 RECORD F8:3,F9:4,F10:5 上述三个记录中各字段所占用各位如下图所示:,622 记录的预置和存储分配 同结构定义一样,记录定义并不分配存储空间,仅当定义记录变量时,才分配存储空间,并对它进行预置。记录变量定义格式如下: 记录 变量名 记录名 其中,记录变量名与一般变量名一样,是任选的,它同样有一般变量的三个属性(段、偏移量和类型)。字段值表用来给记录变量的各字段赋初值,各字段值的排列顺序及大小应与记录定义时的各字段一致,中间以逗号分隔。如果某个字段采用在定义记录时所给定的缺省初值,那么可简单地用逗号表示;如果记录变量的所有字段都如此,那么可省去字段值表,但尖括号不能省略。例如:,R1 REC1 R2 REC1 R3 REC2 R4 REC2 R5 REC3 R6 REC3 10H DUP() 623 记录专用运算符 一、记录宽度运算符 格式: WIDTH 记录名 或 WIDTH 记录字段名 功能:返回该记录或记录字段的宽度(二进制位数)。 例如: WFl EQU WIDTH RECl ;WF1=7,WF2 EQU WIDTH F5 ;WF2=4 MOV CH,WIDTH REC2 ;(AH)=16 MOV CL,WIDTH F7 ;(AL)=4 二、移位值运算 在语句中,把记录字段名作为一个操作数直接引用,这时便返回个常数。这个常数表示该字段右移到所在记录的最右边的移位次数。它也表示该字段在记录中的起始位置(自右至左015)。如下列各语句直接引用记录RCE2中各记录字段名的结果: MOV BL,F4 ;(BL)=0BH MOV BH,F5 ;(BH)=07H MOV CL,F6 ;(CL)=04H,MOV CH,F7 ;(CH)=00H 三、记录屏蔽运算符 格式 MASK 记录字段名 功能:得到该记录字段在记录中的屏蔽码,即该字段各位均为1,而记录中其他各位均为0的代码。例如: MOV AL,MASK F1 ;(AL)=0C0H MOV BL,MASK F3 ;(BL)=07H MOV CX,MASK F5 ;(CX)=0780H MOV BX,MASK F7 ;(BX)=000FH,

注意事项

本文(《汇编第六章》ppt课件)为本站会员(tia****nde)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.