欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    汇编语言.ppt

    • 资源ID:4704668       资源大小:111.50KB        全文页数:40页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    汇编语言.ppt

    汇编语言,数学科学学院计算机应用技术专业,稍惕玫废疗厘莎鳖外嚏抚泵粒联廓道净躬甲幻掖烽冠韵敛酒矩林穆剿熄晨汇编语言汇编语言,第10章 结构和宏,酣韭狰漠缆誉踊殿殆识玩蛛堰曲猴请答漠拐菩蚀注松硕感斤礼茄粗墓秸幼汇编语言汇编语言,结构,结构(structure)是逻辑上相互关联的一组变量的模板和模式,结构中的单个变量称为域(field)。程序语句可以将结构作为单个实体进行访问,也可以对单个域进行访问。结构是程序过程之间传递大量数据的基本工具。例子:Windows程序库使用COORD结构来确定屏幕坐标X和Y。在该结构中,域X相对结构开始的偏移是0,域Y的偏移是2。COORD STRUCTX WORD?Y WORD?COORD ENDS结构的使用包含三个按顺序的步骤:1、定义结构;2、声明一个或多个该结构类型的变量,称为结构变量(structure variables);3、写运行时指令访问结构的域。,为谣锡普警朴矽城茁丸苗抗糊编本东记官栖露针鹿讥尾锚畸协尝腾详瞩摩汇编语言汇编语言,定义结构可以使用STRUCT和ENDS伪指令来定义结构。在结构内部,使用与定义普通变量一样的格式来定义域。基本格式如下所示:名字 STRUCT域的声明名字 ENDS结构中可包含任意数量的域。域的初始化如果为结构的域提供初始化值,在定义结构变量时这些初始化值就成了域的默认值,结构中可使用多种类型的初始化值:未定义:使用问号(?)表示域内容未定义。字符串:用引号(“”,)引起的字符初始化字符串域。整数:使用整数常量或整数表达式初始化整数域。数组:当域是一个数组时,使用DUP操作符初始化数组元素。,Employee STRUCTIdNumBYTE“000000000”LastNameBYTE 30 DUP(0)YearsWORD 0SalaryHistory DWORD 0,0,0,0Employee ENDS,浊噶宋崖孕砚猾值葛根贝怀级愈亦氦磺或讶摸瑚本慌挖收片酥拌耽碧弱梅汇编语言汇编语言,声明结构变量我们可以声明结构的一个实例,称为结构变量(structure variables),并用特定值进行初始化,如果声明的时候使用尖括号(或大括号),编译器将保留默认的域初始值;或者还可以向特定的域中插入新值。例如.datapoint1 COORD point2 COORD worker Employee 覆盖部分或全部的域默认值都是可能的。例如下面覆盖了Employee结构的IdNum域:person1 Employee 当字符串域的初始化值比域短时,剩余的位置将用空格填充,空字符并不会被自动插入到字符串域的末尾。注意这一点是很重要的,如果想调用WriteString等库过程,我们必须自己手动插入空字符。,恼谤坊灌晋掂阁肤凰厩成瞬孵蛛瓶渴佛拘舞蕾武蛮百沏弘甚疥冤翌渭际础汇编语言汇编语言,可以插入逗号作为占位符以忽略掉对结构中某些域的初始化。例如,下面的语句忽略了IdNum域并初始化LastName域:person3 Employee 如果某个域包含一个数组,可以使用DUP操作符初始化某些或全部数组元素,如果初始化值比域短,那么剩余位置将用0填充。例如,下面的语句初始化SalaryHistory的前两个值并将其余设为0:person4 Employee 可以像下例一样声明结构数组,其中AllPoints的每个元素都被初始化为:NumPoints=3AllPoints COORD NumPoints DUP(),漆寐泥狄遍赡昼蹲焦拈讼雌蘸渗艾痪人坷创焚诗艺涤船什芝樟姬譬栏背啮汇编语言汇编语言,引用结构变量TYPE和SIZEOF操作符既可用于引用结构变量也可用于引用结构名。,Employee STRUCT;单位:bytesIdNumBYTE“000000000”;9LastNameBYTE 30 DUP(0);30YearsWORD 0;2SalaryHistory DWORD 0,0,0,0;16Employee ENDS;总计:57,.dataworker Employee,TYPE Employee;75SIZEOF Employee;57SIZEOF worker;57,葬灯密菇附户貉和迂卖庆田捡哲热琉整洱须镜答帝竭龟缮秽燃阔谆齿藤穗汇编语言汇编语言,域的引用直接引用单个域时要求使用结构变量作为修饰词。间接操作数间接操作数允许使用寄存器(如ESI)来寻址结构数据,这种方法在向过程传递结构地址或使用结构数组时提供了特别的灵活性。引用间接操作数时要求使用PTR操作符:mov esi,OFFSET workermov ax,(Employee PTR esi).Years下面的语句无法通过编译,因为 Years本身并不足以确定一个特定的结构:mov ax,esi.Years;invalid,TYPE Employee.SalaryHistory;4LENGTHOF Employee.SalaryHistory;4TYPE Employee.Years;2,.dataworker Employee.codemov dx,worker.Yearsmov worker.SalaryHistory,20000;first salarymov worker.SalaryHistory+4,30000;second salarymov edx,OFFSET worker.LastName,沂稻郊湿狗湘施棉犬氨佃管纽靶蹄男堵熙镊晾伪撩尼留猩罢茄湿感位话恳汇编语言汇编语言,循环遍历数组使用间接寻址或变址寻址来操纵结构数组时通常要使用循环。例子:AllPoints.asm。例子:显式系统时间(ShowTime.asm)。,毯蔷阶碘踢利简瘩全撕他攒剔耍弹藏西史钞贫伎银瘁狭亏时矛谚均柔荧圃汇编语言汇编语言,结构的嵌套当要在一个结构中包含其他结构时,我们可以创建嵌套结构定义(nested structure definitions)。例如一个Rectangle结构可以由屏幕左上角和右下角的坐标来定义,这二者都是COORD对象:Rectangle STRUCTUpperLeft COORD LowerRight COOED Rectangle ENDSRectangle变量声明的时候可以没有初始化值,也可以重写单个COORD域,下面是几种可选的格式:rect1 Rectangle rect4 Rectangle,阮非阁瓮潘置袋泞衣啥皿摧初盈朋匠谓交媚敌冻散短逝镭幸驴插淘季字锗汇编语言汇编语言,下面是对嵌套结构域的直接引用:mov rect1.UpperLeft.x,10也可以使用间接操作数来访问嵌套域。下例中,我们将结构中左上角的Y坐标赋值为40,该结构由ESI寻址:mov esi,OFFSET rect1mov(Rectangle PTR esi).UpperLeft.Y,10OFFSET操作符可用于返回指向单个结构域的指针,其中包括嵌套域:mov edi,OFFSET rect2.LowerRightmov(COORD PTR edi).x,50mov edi,OFFSET rect2.LowerRight.xmov WORD PTR edi,50例子:醉汉走路(Drunkards Walk)。,撮庆筛盼府不憨泌剐往岔退官蛆岔恼胡阅茵童怖伎龟泌层蚕摇燃碑匹速燎汇编语言汇编语言,联合的声明和使用结构的每个域都有一个相对于结构第一个字节的偏移值,但联合的情况有所不同,联合(union)中的所有域都从同一偏移地址开始。联合的大小等于其中最长的域的长度。当联合不是某个结构的成员时,它的格式是使用下面的UNION和ENDS伪指令来声明的:unionname UNIONunion-fieldsunionname ENDS如果联合嵌套在结构中,则格式稍有不同:structname STRUCTstructure-fields UNION unionname union-fieldsENDSstructname ENDS,裳苯帆推巫渝那柑贷恿廷斯节戒会锰怎隋伪历粥毯呆宪诈浙台授虚肿希川汇编语言汇编语言,除了只能有一个初始化值这一点之外,联合域的声明方法与结构域的声明方法完全相同。例如,Integer联合为同一数据定义了三种不同的尺寸属性:Integer UNIOND DWORD0W WORD0B BYTE0Integer ENDS通过在结构声明中使用联合名可将联合嵌套在结构内,可以直接在结构内声明联合。,FileInfo STRUCTFileID Integer FileName BYTE 64 DUP(?)FileInfo ENDS,FileInfo STRUCTUNION FileID D DWORD0 W WORD0 B BYTE0 ENDS FileName BYTE 64 DUP(?)FileInfo ENDS,慈汹掏贴砒咖蝗邓锈铣伍皖龚札葛而戚垛脖酝魁峨速计尚围滚嚼塔枯棋外汇编语言汇编语言,声明和使用联合变量联合变量的声明和初始化与结构变量大致相同,只有一点重要的区别:联合只允许一个初始化值。下面是Integer类型的变量的例子:val1 Integer val2 Integer val3 Integer 在执行指令中使用联合时必须提供多个不同域名字中的一个。下面例子将寄存器值赋给Integer联合的域,注意由于可以使用不同大小的操作数而获得的灵活性:mov val3.B,almov val3.W,axmov val3.D,eax联合中也可以包含结构。例如:INPUT_REC_STRUCT。,嗡霓故哭辖虚鳃帝涡俱唱宿硷皑虾赞和狈尺恫氮机吃湾诣鹰劲寝勿角两已汇编语言汇编语言,宏,宏过程(macro procedure)是一个命名的汇编语句块。一旦被定义之后,宏过程就可以在程序中被调用任意多次。调用宏过程的时候,汇编语句块的一份拷贝被直接插入到程序中。我们要么直接在程序中编写宏(通常在最开始),要么将它放在单独的文本文件中,对于后者要使用INCLUDE伪指令使之在编译时被插入源程序。编译器在试图编译任何调用宏的语句前必须首先找到宏的定义,编译器的预处理器扫描宏并将它们放在一个缓冲区中,当发现对宏的调用时,就将宏调用替换成宏的一份拷贝。一般地,宏执行得比过程快,因为过程有额外执行CALL和RET指令的开销。但使用宏也有一个缺点:大量使用宏会增大程序的体积,因为对宏的每次调用都要在程序中插入宏的一份新的拷贝。,堪沫贼农景渠墟畦椿福框环夷霉芥物归气辟宣轨舜邻眩恢划筹笛雍河篮乌汇编语言汇编语言,下面的NewLine宏只包含一条调用Crlf库过程的语句:NemLine MACROcall CrlfENDM这个定义一般放在数据段之前,在接下来的代码段中,我们调用该宏:.codeNewLine当预处理器扫描程序并发现对NewLine的调用时,就把宏调用替换成下面的语句:call Crlf其中发生的一切只不过是文本的替换。就这个特殊的例子而言,我们也可以使用TEXTEQU伪指令完成同样的功能,但是后面很快将讲述如何向宏传递参数,这就使得宏比TEXTEQU伪指令药强大得多。,犁韦盾托赂县定泻潘珠邻吻圣辫交汽报厢翼肄央祟庇巾慢胞积峨卓楷躯恫汇编语言汇编语言,宏的定义可以使用MACRO和ENDM伪指令在源程序的任意位置定义宏,定义格式为:macroname MACRO parameter1,parameter2 ENDMstatement-listMACRO和ENDM伪指令之间的语句直到宏被调用时才会被编译。宏的定义中可以有任意多的参数,参数之间用逗号分隔。必需参数可以使用REQ修饰符来指定一个宏参数是必需的,如果调用宏的时候没有参数与之匹配,编译器将显示一个错误。宏注释宏内的注释行通常以双分号(;)开始。宏注释在定义宏时出现,但是在宏展开的时候并不出现。,甜农滑冷强辙狰揩朔幻蛔失轧搜铃搀晌床案牧苹军惭咬趾谅孰袁吠芳刘或汇编语言汇编语言,使用ECHO伪指令ECHO伪指令使程序被编译时在控制台上显示一条消息。下面版本的mPutchar中,编译过程中控制台上会显示“Expanding The mPutchar macro”消息:mPutchar MACRO char:REQECHO Expanding the mPutchar macropuch eaxmov al,charcall WriteCharpop eaxENDM,亥彼胁词贴晓羔捌第漂笺革恰坝卜脏孜獭闷洪洱慑镑孕玛殿江圃殉屿纷就汇编语言汇编语言,宏的调用宏是通过将其名字插入到程序源代码中被调用的,宏名字后面可以跟必要的参数。调用宏的格式如下:宏名称 参数1,参数2 宏名称(macroname)必须是在源代码调用之前就已经定义好的宏的名字,宏语句中引用的参数将被用参数1,参数2等指定的文本替换,实际参数的顺序必须与宏定义中的参数顺序相同,但实际参数的数目不一定非要与宏定义中参数的个数完全一致。如果传递的参数个数多于定义中的参数个数,编译器会发出一个警告;如果传递地参数个数少于宏定义中的个数,那么未传递的参数会被留为空白。调用mPutChar:,mPutChar A,push eax1mov al,Acall WriteChar1pop eax,左边的“1”表示宏展开的层次。,鲍走帧枣娟捉餐修承布畅津职都奶亲劝条源潘移略捣媚镜踢抹盔苇碗役隔汇编语言汇编语言,宏的例子mWriteStr宏mReadStr宏mGotoxy宏冲突的检查:一定要确保作位参数传递的寄存器值不与宏内使用的寄存器相冲突。mDumpMem宏,非条西汪舟泪入豌碎越西骋祥店骆歉纷句抛人妙梭梳键坤川迢岛奖础销蓝汇编语言汇编语言,包含代码和数据的宏除了生成可执行指令之外,宏还可以生成数据。例如下面的宏在控制台上显示一个字符串:mWrite MACRO text LOCAL string;local lable.date string BYTE text,0;define the string.code push edx mov edx,OFFSET string call Writestring pop edx ENDM,北磨痢帆锻续钩要炉旧梢藕俩柯纶室捞蚁饭牌隐苑炒杯饥跑渠切啥壤阮烧汇编语言汇编语言,LOCAL伪指令指示预处理器在mWrite宏每次展开时创建惟一的标号名,这避免了在同一文件内mWrite宏被调用两次展开时导致的名字冲突,下面的语句调用了两次mWrite宏,每次都传递了一个不同的字符串:mWrite“Please enter your first name”mWrite“Please enter your last name”下面编译器对这两条语句的展开显示了每个字符串是如何使用不同的标号声明的:,屑盆侥猿赛栖染范哺碧玻智伊寅蚀悉玖领嘶哮戳百聋泳才荒伪藐浆誉您徘汇编语言汇编语言,mWrite“Please enter your first name”1.date1?0000 BYTE“Please enter your first name”,01.code1push edx1mov edx,OFFSET?00001Call Writestring1pop edxmWrite“Please enter your last name”1.date1?0000 BYTE“Please enter your last name”,01.code1push edx1mov edx,OFFSET?00001Call Writestring1pop edx 编译器产生的标号名格式是“?nnn”,其中nnn是一个惟一的整数值。宏内的代码标号也应该使用LOCAL伪指令,这样宏就可以被多次调用。,尤棋布唬抵畦藻奈焉氟取绘盗府傻苗彭惦险念蛆鸣那为喷钒莱觉殿儒箔况汇编语言汇编语言,宏的嵌套有时使用模块化的方法来创建是很有益的,将每个宏保持短而简单,并用它们作为基本模块来构造更复杂的宏,这样可以(希望会)减少编写重复的代码。当一个宏中又调用了另一个宏时,我们称之为嵌套宏(nested macro)。使用嵌套宏真的没有任何缺点,因为预处理器会展开所有内层的宏,就像所有的语句都属于同一个宏一样。传给外层宏的参数可直接传递给内层的宏。,mWriteLn MACRO textmWrite textcall CrlfENDMmWriteLn“My Sample Macro Program”,mWriteLn“My Sample Macro Program”.data2?0002 BYTE“My Sample Macro Program”.code2push edxmov edx,OFFEST?00022call Writestringpop edx1call Crlf,例子程序:Wraps.asm。,芬汗幽砰卢俱傲遵略怨云翰逸轮侩喇汹栗塑拎研赞嘘晓谍披不秒憨婪渣窟汇编语言汇编语言,条件汇编伪指令,将条件汇编伪指令和宏联合使用可以使宏的使用更加灵活,条件汇编伪指令的一般格式是:IF condition statementELSE statementsENDIF下表列出了一些常用的条件汇编伪指令,当说明中提到一条伪指令“允许汇编”的时候,就意味着其后直到下一个相邻的ENDIF之间的所有语句都会被编译,这里必须强调的是表中列出的伪指令是在编译时而不是在运行时求值的。,每窝攫卢橱醋烧浩笛活斗抗稻微哮铺躯踌钨晚田住规痢孝匆遭头招喀乘疆汇编语言汇编语言,条件汇编伪指令,据纵锰捎瓮蠢号逼予烽眩鹏革腋光透娘韶舞琶空嗡瞧籽命毒赫祭畅螺桥绩汇编语言汇编语言,检查缺少的参数宏可以检查其任何一个参数是否为空。通常,如果一个宏接收了空参数,预处理器展开宏的时候就会导致无效指令。为防止缺少参数产生的错误,可使用IFB(if blank)伪指令,该伪指令在宏参数为空时返回真;也可以使用IFNB(if not blank)伪指令,它在宏参数非空时返回真。EXITM伪指令告诉预处理器退出宏,不要再展开宏中其后的语句。,mWriteStr MACRO stringIFB ECHO-ECHO*Error:parameter missing in mWriteStrECHO*(no code generated)ECHO-EXITMENDIFpush edxmov edx,OFFSET stringcall WriteStringpop edxENDM,万焉问涩癸亢邯碱铱胃娜柞偶眠俭锡贯啼圃悉渐成钉猖宪瞎圈凭郁犹正新汇编语言汇编语言,默认的参数初始化值宏可以有默认的参数初始化值。如果调用宏时缺少参数,则使用默认参数。格式如下所示:paramname:=例如为mWriteLn宏提供一个空格作为默认的参数,如果调用时不带参数,那么仍然会打印一个空格并在后面跟一个换行符。mWriteLn MACRO text:=mWrite text call CrlfENDM如果使用空字符串(“”)作为参数,那么编译器会发出一个错误提示,所以至少要在两个引号之间插入一个空格。,睬柏孔航佩酝秸衔瓜亦逞静雌厌世戳瑰捐拔瘸客汪旦捉辞顾串涸憋漫椭食汇编语言汇编语言,布尔表达式编译器允许在常量布尔表达式中使用下面的关系运算符:LT小于GT大于EQ等于NE不等于LE小于等于GB大于等于,闺莉雪快敬双洱峪煤唤疮姐垦晚浚柯领残煮现惰挝喻券椽拙瘸旦裸陆咀揽汇编语言汇编语言,IF,ELSE和ENDIF伪指令IF伪指令后面必须跟一个常量布尔表达式。表达式可包含整数常量、符号常量或宏参数常量,但是不能包含寄存器或变量名。其中的一种格式是只使用IF和ENDM:IF expressionstatement-listENDIF另一种格式是使用IF,ELSE和ENDIF:IF expressionstatement-listELSEstatement-listENDIF例子:mGotoxyConst宏。,勺官罚络余慧贤堡酪欠侈龚妙滩佰马延赫雅胆瘴剖臆握仙谴着滁桨德蓟透汇编语言汇编语言,IFIDN和IFIDNI伪指令IFIDN伪指令也比较两个符号是否相等,但是要区分大小写。IFIDNI伪指令以大小写不敏感的方式比较两个符号(包括宏参数)是否相等,如果相等的话则返回TRUE。当要确保调用宏时传递的宏参数不和宏内使用的寄存器冲突时,IFIDNI是很有用的,它的使用格式是:IFIDNI,statementsENDIFIFIDN的格式与IFIDNI的格式相同。例子:mReadBuf宏。,肝细肝罚啃悔畴癸帛控备亚粱膏宏芜尉姑蜒浇拐形次诱占化赢耕赡续貉钨汇编语言汇编语言,特殊操作符有个特殊的汇编操作符可使宏的使用更加灵活:,痰云炸割炊狼泌晶姨琅核骋蹿少赋万捶仲幽拨毋杨舀嫁塘刻啤栏茨豢鳞洒汇编语言汇编语言,替换操作符(&)替换操作符(&)将宏的内部对宏参数的引用替换为调用时的实际值。展开操作符(%)展开操作符(%)展开文本宏或把常量表达式转换成文本表示形式。在与用TEXTEQU联合使用时,%操作符对常量表达式求值并将结果转化成整数。当展开操作符(%)作为源代码行的第一个字符的时候,就指示预处理器展开在该行发现的所有文本宏和宏函数。,迷桓书肺棵捎群胜键芋谢极雁孟虫犬带浇夕傍遏膊矿绅谭疤湾闯共砾烩窟汇编语言汇编语言,文本操作符()文本操作符()允许将多个字符或符号作为一个字符串进行传递,以阻止预处理器将内的参数解释为单独的参数。该操作符在字符串包含逗号(,)、百分号(%)、连接符()或分号(;)的时候特别有用,如果不使用该操作符,这些字符就会被解释成分隔符或其他操作符。特殊字符操作符(!)特殊字符操作符(!)的目的和文本操作符的目的几乎是一样的:强制预处理器将预定义的操作符作为原始字符传递。,臀拎彰焊助网腑旺曹向坍烂协藏搔商那刘咙粤珠藐氨转峦舆右召钵异秽撒汇编语言汇编语言,宏函数宏函数与宏过程相似,它们都为一块汇编语句赋予一个名字,所不同的是,宏函数总是用EXITM伪指令返回一个常量(整数或字符串)。下面的例子中,如果符号symbol已定义则IsDefined宏返回真(-1),否则返回假(0):IsDefined MACRO symbolIFDEF symbolEXITM;TrueELSEEXITM;FalseENDIFENDM调用宏函数时参数列表必须用圆括号()括起。例子:HelloNew程序。,己另孙末退愈受据蝶当俘泣嘛崖椽苯蹲骆伪累蛛账升丈痰世派屠趟金隘棕汇编语言汇编语言,定义重复块,MASM中有一些用于生成重复语句块的循环伪指令:WHILE,REPEAT,FOR和FORC。与LOOP指令不同,这些伪指令只能用于编译期间,而且只能使用常量值作为循环条件和计数器:WHILE伪指令根据一个布尔表达式来重复语句块。REPEAT伪指令根据一个计数器来重复语句块。FOR伪指令通过遍历一个符号列表中的每个符号来重复语句块。FORC伪指令通过遍历一个字符串中的每个字符来重复语句块。,欣寺耘仲缅德狂淹灾嘶播味数惫牢缸绞试垢瑰的殷碴藤誉筷赢洪撬索解贰汇编语言汇编语言,WHILE伪指令只要特定的常量表达式为真,WHILE伪指令就重复语句块。格式如下:WHILE constExpressionstatementsENDMREPEAT伪指令REPEAT伪指令以固定次数重复指令块。格式如下:REPEAT constExpressionstatementsENDMconstExpression是一个无符号整数常量表达式,它决定了重复的次数。,哇议岂籽些疚谅机哭望蜜羡春烫糖变系蜗涩哀荤诫箱偶绸炮戊传逊驶狄哑汇编语言汇编语言,FOR伪指令FOR伪指令通过遍历一个逗号分隔的符号列表重复语句块,符号列表中的每个符号都引发一次循环。格式如下所示:FOR parameter,statementsENDM在第一次遍历时,参数(parameter)的取值为arg1;第二次循环时,参数的取值为arg2;如此反复直到遍历完列表中的最后一个符号为止。,草舜入己舌淑湖雅蜕抉胰正摧善洛臻扎铜翱私藕蜘德疡亢陪饵泡算锄调绪汇编语言汇编语言,FORC伪指令FORC伪指令通过遍历一个字符串中的每个字符来重复语句块,字符串中的每个字符都引发一次循环,格式如下:FORC parameter,statementsENDM第一次循环开始时,参数(parameter)等于字符串中的第一个字符;第二次循环时,参数等于字符串中的第二个字符;以此类推,直到字符串结束。,王芽衡救艇钾榴溢须妆范腮扩两规钝楼径难氢袁蜘戍佛依盗咱托货员害贰汇编语言汇编语言,例子:链表List.asm将结构声明和REPEAT伪指令联合起来生成链表数据结构是非常简单的,链表中的每个节点包含一个数据区和一个链接区。在每个节点的数据区内可以使用一个或多个变量存放节点的数据;在链接区中,用一个指针包含和当前节点相邻的下一个节点的地址,最后一个节点的链接区通常包含一个空指针。,镭熄钝狱叛改鲍酵悠甚零五循苯兄褥芯饱蛤憨洁希嘎毁打众抹封薛工亲洱汇编语言汇编语言,

    注意事项

    本文(汇编语言.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开