汇编语言9剖析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言9剖析

* 3. 循环控制指令 1)LOOP—计数循环语句 形式:LOOP 短标号 功能:CX=(CX)-1; 若(CX)?0,则(IP)=OFFSET 标号, 否则继续执行下一句。 2)LOOPNZ/LOOPNE—非零计数循环 形式:LOOPNZ/NE 短标号 功能:CX=(CX)-1; 若(CX)?0且ZF=0,则(IP)=OFFSET 标号, 否则继续执行下一个语句。 3)LOOPZ/LOOPE—零计数循环 形式:LOOPZ/E 短标号 功能:CX=(CX)-1 若(CX)?0且ZF=1,则(IP)=OFFSET 标号, 否则继续执行下一个语句。 例3-13 求出前20个斐波那契数,斐波那契数的定义为: F0=0 F1=1 F(N+2)=F(N)+(N+1) 同样,在宏汇编MASM 6.11系统中,还增加了表达循环结构 的伪指令。 ?形式1: .WHILE condition    循环体的指令序列     .ENDW ?形式2: .REPEAT .REPEAT 循环体的指令序列 循环体的指令序列 .UNTIL condition? .UNTILCXZ [condition] 如果.UNTILCXZ后面书写了逻辑表达式,那么,该逻辑表达式 的形式只能是: “EXP1==EXP2”或“EXP1!=EXP2”。 例3-14 利用循环伪指令改写例3-13。 另外,像C语言一样与还设置了两条辅助的循环伪指令: ?终止循环伪指令,其形式如下: .BREAK .BREAK? .IF condition 该伪指令用来终止包含它的最内层循环。前者是无条件终止循 环,后者是仅当逻辑表达式condition为真时,才终止循环。 其使用场合如下: .WHILE? 1 .REPEAT … … .BREAK .IF condition .BREAK .IF condition … … .ENDW .UNTIL 0 ?循环继续伪指令,其形式如下: .CONTINUE .CONTINUE .IF condition 该伪指令用于直接跳转到包含它的最内层循环的判断循环条件 表达式的代码处。 例3-15 显示9个数字字母‘1’~‘9’,26个大写字母,和显示任意输入 的数字字符,并用按“回车”键来结束本程序的运行。 4. 子程序调用与返回指令 定义子程序的一般格式如下: 子程序名 PROC [NEAR/FAR] ? ?? 子程序名 ENDP 对子程序定义的具体规定如下: “子程序名”必须是一个合法的标识符,并且二者要前后一致; PROC和ENDP必须是成对出现的关键字,它们分别表示子程序 定义开始和结束; 子程序的类型有近(NEAR)、远(FAR)之分,其缺省的类型 是近调用NEAR型; 子程序名有3个属性:段值、偏移量和类型。 还要养成编制相应的说明文件的好习惯。其说明信息一般包括以 下几个方面内容: 功能描述; 入口参数和出口参数; 所用寄存器; 所采用的算法; 1)CALL—调用指令 形式:CALL 操作数 功能:若OPRD为16位数,保留返回地址IP于栈中: SP?(SP)-2,(SS:SP)?(IP); 实现段内转移:IP?OPRD。 若OPRD为32位数,保留返回地址CS:IP于栈中: SP?(SP)-2,(SS:SP)?(CS), SP?(SP)-2,(SS:SP)?(IP); 实现段间转移:IP?OPRD低16,CS? OPRD高16。

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档