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
