- 1、本文档共58页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.2 重复汇编 有时汇编语言程序需要连续地重复完全相同的或者几乎完全相同的一组代码,这时可使用重复汇编。 1.重复伪操作 其格式为:??? REPT??? 表达式????? ...?? (重复块)??? ENDM 其中表达式的值用来确定重复块的重复次数,表达式中如包含外部或未定义的项则汇编指示出错. 重复汇编指在汇编过程中,重复展开一段(基本)相同的语句 重复汇编没有名字,不能被调用 重复汇编常用在宏定义体中,也可以在一般汇编语句中使用 重复伪操作并不一定要在宏定义体内。 例如: X=0?????? REPT?? 10 X=X+1?????? DB??? X?????? ENDM 则汇编后产生 ?1 ? DB??? 1?1? DB??? 21?? DB??? 3???? ...1?? DB??? 10 例: 把字符A到Z的ASCII码填入数组TABLE CHAR=‘A TABLE? LABEL? BYTEREPT?? 26?????? DB???? CHAR? CHAR=CHAR+1 ENDM 1 db char ;等效于db A 1 char = char +1 1 db char ;等效于db B 1 char = char +1 ... 1 db char ;等效于db Z 1 char = char +1 例: 用宏定义及重复伪操作把TAB, TAB+ 1, TAB+2 ,...,TAB+16的内容存入堆栈. 宏定义: ?? PUSH_TAB??? MACRO? K?????????????? PUSH ?? TAB+K?????????????? ENDM宏调用:??? I=0???????????? REPT ?? 17???????????? PUSH_TAB? % I??? I=I+1???????????? ENDM 2.不定重复伪操作??? (1)IRP伪操作 格式是:???? IRP?? 形参,自变量表??????? ...? (重复块)???? ENDM 汇编程序把重复块的代码重复几次,每次重复把重复块中的形参用自变量表中的一项来取代,下一次取代下一项,重复次数由自变量表中的自变量个数来确定。自变量表必须用尖括号括起,它可以是常数,符号,字符串等。 例:??? IRP??? X,1,2,3,4,5,6,7,8,9,10??? DB??? X??? ENDM 汇编后得:? 1???? DB??? 1? 1???? DB??? 2?????? ...? 1???? DB??? 10 例:????IRP??? REG,AX,BX,CX,DX???? PUSH?? REG???? ENDM 汇编后得:??? 1??? PUSH??? AX??? 1??? PUSH??? BX??? 1??? PUSH??? CX??? 1??? PUSH??? DX (2)IRPC伪操作 格式是:??? IRPC???? 形参,字符串(或字符串)???? ...????? (重复块)??? ENDM IRPC和IRP类似,但自变量表必须是字符串.重复次数由字符串中的字符个数确定,每次重复用字符串中的下一个字符取代重复块中的形参. 例:???? IRPC????? X,0 1 2 3 4 5 6 7???? DB??????? X+1???? ENDM 汇编后得:?? 1? DB??? 1?? 1? DB??? 2???? ...?? 1 ? DB??? 8 例:???? IRPC????? K,A B C D???? PUSH????? KX ENDM 汇编后展开形成: ? 1??? PUSH?? AX? 1??? PUSH?? BX? 1??? PUSH?? CX? 1??? PUSH?? DX 5. 3 条件汇编 汇编程序能根据条件把一段源程序包括在汇编语言程序内或者把它排除在
文档评论(0)