有时 汇编语言程序需要连续地重复完全相同的或者几乎完全相同的一组代码,这时可使用重复汇编。 1 重复伪操作 其格式为 : REPT 表达式 ... ( 重复块 ) ENDM 其中表达式的值用来确定重复块的重复次数 , 表达式中如包含外部或未定义的项则汇编指示出错,重复汇编指在汇编过程中,重复展开一段(基本)相同的语句,重复汇编没有名字,不能被调用,重复汇编常用在宏定义体中,也可以在一般汇编语句中使用 重复伪操作并不一定要在宏定义体内。 例如 : X=0 REPT 10 X=X+1 DB X ENDM 则汇编后产生
1 DB 1 1 DB 2 1 DB 3 ... 1 DB 10
例: 把字符 A 到 Z 的 ASCII 码填入数组 TABLE CHAR=‘A TABLE LABEL BYTE REPT 26 DB CHAR CHAR=CHAR+1 ENDM 例: 用宏定义及重复伪操作把 TAB, TAB+ 1, TAB+2 ,...,TAB+16 的内容存入堆栈 . 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 K&X ENDM
|