ImageVerifierCode 换一换
格式:PPTX , 页数:50 ,大小:424.90KB ,
资源ID:4224066      下载积分:16 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4224066.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(汇编语言程序设计第7章.pptx)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

汇编语言程序设计第7章.pptx

1、第7章 复杂汇编程序设计第7章 复杂汇编程序设计7.1 结构结构7.2 记录记录7.3 联合联合 7.4 应用举例应用举例 第7章 复杂汇编程序设计7.1 结结 构构7.1.1 结构的定义结构的定义 用STURC和ENDS把一系列数据定义语句括起来就成了一个结构。格式:结构名 STRUC 结构名 ENDS 功能:定义结构类型的数据,但并不真正给结构分配存储空间,只是说明包括结构名、域名及其数据类型在内的结构的类型。第7章 复杂汇编程序设计说明:说明:结构名由用户定义,结构内数据定义语句中的变量名称为结构字段名,简称为字段名;结构的使用应是先定义后使用,即应在为结构数据分配空间之前定义;结构定义

2、中的结构名必须有且STURC和ENDS前的结构名必须一致。第7章 复杂汇编程序设计例例7-1 SAFY STRUC NO DB?NAME DB ABCDEFG SAGE DW?DEP DB COMPUTER SAFY ENDS 在结构SAFY中,定义了4个字段,分别是NO、NAME、DEP和SAGE字段,字段NO、NAME和DEP是字节型数据,SAGE是字型数据。第7章 复杂汇编程序设计7.1.2 结构的存储分配和预置结构的存储分配和预置 结构定义仅仅是告诉汇编程序存在这样一种形式的变量,只有进行结构的存储分配和预置后,才使结构变量真正占有内存,也才能使用结构变量。格式:结构变量名 结构名 功

3、能:为结构变量分配存储空间及初始化。第7章 复杂汇编程序设计说明:说明:(1)结构名是结构定义时用的名字,结构变量名与具体的存储空间及数据相联系,程序中可以直接引用它;(2)字段值表用来给结构变量赋初值。规定如下:各字段值的排列顺序及类型应与结构定义时相一致,中间以逗号分隔;如果采用在结构定义时的初值,仅写一个逗号即可,若所有字段均采用在结构定义时的初值,仅写一个尖括号即可;只有在结构定义中具有一项数据的字段(包括字符串字段)才可重新赋初值;在结构预置中,若分配给结构的数据有多个且相同,可以使用DUP操作符;尖括号什么时侯也不可省略。第7章 复杂汇编程序设计例例7-2A1 SAFY A2 SA

4、FY其中,A1 SAFY仅对SAFY结构中的NO、NAME和SAGE这3个字段赋初值,第4个字段采用结构定义时的值;对A2 SAFY而言,是采用结构定义时的初值。已经定义了一个结构之后,就可以通过结构的存储分配和预置得到多个结构变量。如前所述,可将学生简历定义为一个结构,根据每个学生的情况组成多个字段值表,再用多条结构预置语句就可以产生每个学生的登记表。第7章 复杂汇编程序设计7.1.3 结构及其字段的引用结构及其字段的引用 要访问结构变量,可以直接写结构变量名。要访问结构变量中某一字段,可采用两种方法:(1)结构变量名结构字段名;(2)预先将结构变量的起始地址、偏移量送往某个地址寄存器,再用

5、地址寄存器名代替结构变量名。第7章 复杂汇编程序设计例例7-3 MOV AL,A1.NO ;结构变量的访问采用“结构变量名结构字段名”的方法或 MOV BX,OFFSET A1 ;结构变量的访问采用预先将结构变量的起始地址,MOV AL,BX.NO ;偏移量送BX地址寄存器,再用BX代替A1的方法第7章 复杂汇编程序设计例例7-4 引用结构,在数据段定义和预置结构,在代码段引用结构。;定义结构 LIKE STRUC TO DW 0 FRM DW?INO DB 99 DUP(?)LIKE ENDS ;存储分配和预置结构 MAS LIKE TXN LIKE CHA LIKE 500 DUP();预

6、置500个结构变量 ;将CHA中所有FRM字段预置0第7章 复杂汇编程序设计 MOV BX,OFFSET CHA MOV BX.FRM,0 MOV SI,TYPE CHA ;SI一个结构的字节数 MOV CX,LENGTH CHA-1 ;CX结构变量个数-1PLG:MOV BX*SIFRM,0 ADD BX,SI LOOP PLG ;将MAS中FRM字段改为TXN中TO字段的值 MOV AX,TXN.TO MOV MAS.FRH,AX第7章 复杂汇编程序设计结构在以下几种场合特别适用:多次定位同样的存储格式;单个文件多重缓冲;列表处理;栈寻址。第7章 复杂汇编程序设计7.2 记记 录录7.2.

7、1 记录的概念和定义记录的概念和定义格式:记录名 RECORD字段名:宽度=表达式,功能:定义记录类型的数据。第7章 复杂汇编程序设计说明:说明:记录名和字段名必须具有惟一性。宽度表示相应字段所占的位数(116位)。如果各字段的宽度和大于8位,那么汇编程序按字处理,否则按字节处理。若所定义的总位数少于8位或16位,那么所有字段就靠右对齐到字节或字的最低有效位位置。表达式是赋给相应字段的初值,可以省略。若某字段的位数为7时,可定义为一字符。如FID:7=A。第7章 复杂汇编程序设计 例例7-5 使用记录类型变量描述工作人员的情况。其中工龄占6位,性别占1位(0表示男,1表示女),健康状况占1位(

8、0表示健康,1表示不健康)。定义的记录如下:STATUS RECORD AGE:635,SEX:1,STAU:10该记录定义了一个占1个字节,有3个位域的记录类型。AGE位域初值为35,STAU位域初值为0,SEX位域初值未指出,被认为是0。该记录各位域在这1个字节中的分配形式为第7章 复杂汇编程序设计 1 0 0 0 1 1 0 0b7 b6 b5 b4 b3 b2 b1 b0 AGE SEX STAU第7章 复杂汇编程序设计7.2.2 记录的存储分配和预置记录的存储分配和预置 与结构定义一样,记录定义只提供一个记录的模板,只有经过存储分配和预置后,才真正占有内存。格式:记录变量名 记录名

9、功能:为记录变量分配存储空间及初始化。说明:字段值表是赋给各字段的初值,用尖括号括起,各项间用逗号分隔;各项的顺序应与记录定义时相一致,若某一或某几个字段都采用记录定义时的初值,对应项可省略,仅写逗号即可,若仅写尖括号,表示全部采用定义时的初值。第7章 复杂汇编程序设计例例7-6 ZHA STATUS WAN STATUS 将在存储器中分配两个记录变量ZHA(其值为22H)和WAN(其值为43H)。第7章 复杂汇编程序设计7.2.3 记录操作符记录操作符 对记录进行操作的专用操作符有3个:WIDTH、记录字段名、MASK。1)WIDTH 格式:WIDTH 记录名或记录字段名 功能:返回记录或记

10、录字段所占的位数。例7-7 MOV DH,WIDTH STATUS ;DH 8 MOV AL,WIDTH AGE ;AL 6第7章 复杂汇编程序设计 2)记录字段名 格式:这个操作符直接引用,不带操作数。功能:返回一个立即数,表示该字段移到所在记录的最右边所需的移位次数。例7-8 MOV CL,YER ;CL 2 第7章 复杂汇编程序设计 3)MASK 格式:MASK记录字段名 功能:返回一个8位或16位的二进制数,这个二进制数中相应于该字段的各位为1,其余各位为0。例7-9 MOV BL,MASK SEX ;BL 00000010B MOV BH,MASK AGE ;BH 11111100B

11、 记录操作符可以与运算符NOT、OR、AND及操作符SHL(左移)、SHR(右移)配合使用。第7章 复杂汇编程序设计例例7-10 MOV CH,NOT MASK SEX ;CH 11111101B MOV CL,12 SHL SEX ;CL 12左移1位第7章 复杂汇编程序设计7.2.4 记录及其字段的引用记录及其字段的引用利用各种记录操作符,可对记录及其字段进行操作。例例7-11 下述程序可根据工作人员的条件做不同的安排,条件是:工龄10年,女性和健康。WAN DB?BTRC RECORD YER:6,SEX:1,STAU:1 ;判断工作人员是否满足指定的条件 MOV AL,WAN TEST

12、 AL,MASK SEX第7章 复杂汇编程序设计 JZ RJT TEST AL,MASK STAU JNZ RJT MOV CL,YER SHR AL,CL CMP AL,10 JL RJT ;满足条件时的安排 ;不满足条件时的安排RJT:HLT第7章 复杂汇编程序设计7.2.5 记录与结构的比较记录与结构的比较 (1)不同之处:结构用于处理按字节计算的数据信息集合,而记录用于处理按二进制位计算的数据信息集合。记录可用于定义一个字节、字或双字的记录变量集合,在这些集合中,同一字节、字或双字的不同位可能代表不同的意义;结构也是一个字节、字或双字的记录变量集合,在这些集合中,同一字节、字或双字的不

13、同位代表的意义相同,且同一字节、字或双字是作为一个整体使用的。(2)相同之处:记录与结构都是汇编语言提供给用户自定义的数据结构,无论是定义结构,还是定义记录,应分别使用结构定义伪指令语句和记录定义伪指令语句。第7章 复杂汇编程序设计7.3 联联 合合7.3.1 联合的概念和定义联合的概念和定义 联合也是一种结构性数据,是对结构定义的一个补充,它与结构可同时使用,是MASM 6.0新增的一种结构性数据,可嵌套使用。同结构数据语句一样,联合数据语句也必须先定义内存数据结构形式,然后按数据定义伪指令的使用方式,用它定义联合变量并赋初值。第7章 复杂汇编程序设计7.3.2 联合类型说明语句联合类型说明

14、语句 格式:联合名UNION 域 DB?域 DW?域 DD?联合体,由数据定义语句构成 联合名ENDS 功能:定义一个联合的结构模块。第7章 复杂汇编程序设计 说明:说明:UNION/ENDS为系统规定的保留字,联合名和域为用户定义的名字。每个域用一条数据伪指令定义,一般不应有初值。从格式可看出,UNION与STRUC的定义类似,只是域的偏移地址不同:STRUC中的域是相对于结构顺序分配的;而UNION中的域则是相对于联合重叠分配的,其偏移地址均为0,所以域中不应有初值,如果有初值,汇编时只保留第一个域的初值。第7章 复杂汇编程序设计例例7-12 一个联合类型的说明。UNINAME UNION

15、 XX DB?YY DW?ZZ DD?UNINAME ENDS 第7章 复杂汇编程序设计7.3.3 联合变量的说明与赋初值联合变量的说明与赋初值 格式:变量名 联合名 功能:定义一个联合变量,分配存储空间并给它的各域变量赋初值。说明:联合变量及域值表的说明与结构变量的一样,赋值规定也一致。第7章 复杂汇编程序设计 例例7-13 使用例7-12定义的联合“UNINAME”,再定义下列联合变量:VAR UNINAME 其中各个域的变量为:VAR.XX、VAR.YY、VAR.ZZ,并赋给了如下初值:(VAR.XX)21H (VAR.YY)2143H (VAR.ZZ)21436587H第7章 复杂汇编

16、程序设计7.4 应应 用用 举举 例例例例7-14 描述学生基本情况的结构的定义和引用。STUDENT STRUC ;定义数据结构 STU_NO DD 9703001H ;学号 SNAME DB 王美云 ;姓名 SEX DB 0 ;性别:0,女;1,男 AGE DB 20 ;年龄 POLITICA DB 团员 ;政治面貌 CREDIT DW 120 ;成绩第7章 复杂汇编程序设计STU1 STUDENT ;定义6个结构变量STT2 STUDENTSTU3 STUDENTSTU4 STUDENTSTU5 STUDENTSTU6 STUDENTDSEG ENDSCODE SEGMENT PARA

17、PUBLIC CODE ASSUME CS:CODE,DS:DSEGSTART:MOV AX,STU1.CREDIT ;比较王美云和张皋笠的成绩 CMP AX,STU6.CREDITCODE ENDS END START第7章 复杂汇编程序设计例例7-15 日期结构的定义和引用。DATE STRUC ;定义一个日期的数据结构 MONTH DB?;月 DAY DB?;日 YEAR DW?;年 DATE ENDS .DATA YESTERDAY DATE ;定义结构变量 TODAY DATE TOMORROW DATE 第7章 复杂汇编程序设计 .CODE MOV AL,YESTERDAY.DAY

18、 ;取结构中的一个域 MOV AH,TODAY.MONTH MOV DX,2003 MOV TODAY.YEAR,DX ;改写结构中的一个域 MOV BX,OFFSET YESTERDAY;取结构的基地址 MOV AX,BX.YEAR;YEAR是相对于结构基址的偏移量 需要特别说明的是,联合和结构均可以嵌套,既可以结构套结构,联合套联合,又可以结构和联合相互嵌套。第7章 复杂汇编程序设计例例7-16 结构定义的嵌套,即一个结构域中可有另一结构的变量。FUN STRUC X DW?Y DW 200 FUN ENDS EXTRSTRUC EXX FUN EYY FUN MN DB 5678 EXT

19、RENDS第7章 复杂汇编程序设计 例例7-17 联合定义的嵌套,即一个联合中的域可有另一联合的变量。设UNNAME是一个已定义的联合。UNNAME UNION UBYTE DB?UDD UNINAME UZL DW?UNNAME ENDS第7章 复杂汇编程序设计 例例7-18 结构和联合定义的相互嵌套,即结构或联合的定义中的域可以是联合变量或结构变量,甚至可以是结构或联合的定义。UNASUNION ;定义联合UNAS STRUC ;UNAS中的域为两个结构定义 M1 DW?M2 DD?ENDS STRUC N1 DB?第7章 复杂汇编程序设计 N2 DD?ENDS UNAS ENDS LAB

20、A UNAS ;定义联合变量LABA第7章 复杂汇编程序设计其中,M1和M2的偏移地址不同,N1和N2的偏移地址也不同。但是M1与N1的偏移地址相同,即M1、M2与N1、N2共享同一存储空间。该定义适用于面向对象程序设计的结构,还常用于I/O端口的描述。对域变量的访问可用下面形式:LABA.M1,LABA.M2,LABA.N1,LABA.N2或用间接存储器变量形式:MOV BX,OFFSET TLABA MOV AX,BX.M1第7章 复杂汇编程序设计例例7-19 用STRUC伪指令定义的参数表NAMELIST如下:NAMELIST STRUC MAXLEN DB 100 ACTLEN DB?

21、NAMEIN DB 100 DUP NAMELIST ENDS第7章 复杂汇编程序设计 (1)请用结构预置语句分配此结构的存储区。(2)编写一段指令,从键盘输入字符存入结构中,然后将输入的字符数送入DISPFILE单元中。解:(1)用结构预置语句分配结构存储区为 STUDENTS NAMELIST其中STUDENTS为假设的变量名。第7章 复杂汇编程序设计(2)按照要求编写程序段如下:MOV AH,0AH ;从键盘输入字符 LEA DX,STUDENTS INT 21H MOV AL,STUDENTS.ACTLEN;将字符送DISPFILE MOV DISPFILE,AL第7章 复杂汇编程序设

22、计习习 题题 七七 7.1 为结构类型PARAMS分配存储空间,并采用原缺省值,结构变量名为APROC;为结构类型POLAR分配存储空间,并赋初值。第7章 复杂汇编程序设计 7.2 结构类型结构类型OVERRIDABLE的定义如下:的定义如下:OVERRIDABLE STRUC ASTRING DB DONTCARE DW AREAL DD OVERRIDABLE ENDSVARO是OVERRIDABLE类型变量,试给出OVERRIDABLE每个域的初始值,并为VARO变量赋值,使其域的缺省值可以被替换。第7章 复杂汇编程序设计7.3 结构类型结构类型NONOVERRIDE的定义如下:的定义如

23、下:NONOVERRIDE STRUC ALIST DB ADUP DW NONOVERRIDE ENDS试给出NONOVERRIDE每个域的初始值,使其域的缺省值是不能替换的。第7章 复杂汇编程序设计7.4 用STRUC伪指令定义的参数表NAMELIST如下:NAMELIST STRUC MAXLEN DB 100 ACTLEN DB?NAMEIN DB 100 DUP()NAMELIST ENDS (1)用结构预置语句分配此结构的存储区。(2)编写一段指令,从键盘输入字符存入结构中,然后将输入的字符数送入DISPFILE单元中。第7章 复杂汇编程序设计 7.5 利用结构的概念定义并分配一个

24、通信录。7.6 定义一个长度为DWORD的记录类型。若ERRFLAG是一个DWORD的记录类型且定义如下:ERRFLAG RECORD IO:30,SYS:30,MEM:24ABC问:ERRFLAG中的3个位域的总长度是多少位?实际存储分配时分配多少位?为什么?按记录类型ERRFLAG分配两个记录:FLAG1和FLAG。FLAG1取缺省值,FLAG的位域值用新值替换。第7章 复杂汇编程序设计 7.7 在记录类型ERRFLAG中,使用合适的指令求位域SYS向右对齐应移位的次数。7.8 记录REC的一个域为FULL,使用合适的指令在EAX中建立一个与记录REC类型相同的记录,EAX中的域FULL的值与REC.FULL域相同,而EAX中其他所有的域值均为0。7.9 使用合适的指令在EAX中建立一个与记录REC类型相同的记录,其中EAX的FULL域置0,而EAX其他所有的域的值都与REC记录相同。第7章 复杂汇编程序设计 7.10 若有一个记录PATTERN的定义如下:PATTERN RECORD A:3,B:1,C:2,D:4,E:6 执行下述程序段每一条指令后,DX中的内容是什么?AREC PATTERN MOV DX,AREC AND DX,MASKC SHR DX,C 7.11 编程实现为7.10中的记录变量AREC的D位域赋一个新值VAL的功能。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服