欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

转载——汇编语言重复汇编

程序员文章站 2024-02-01 18:48:04
...

转载——汇编语言重复汇编

三、 重复汇编

有时程序会连续地重复完成相同或几乎相同的一组语句,当出现这种情况时,可考虑用重复伪指令定义的重复块,以简化源程序。

重复块是允许建立重复语句的宏的一种特殊形式,它们与宏的不同之处在于它们没有被命名,并因而不能被调用。

1. 伪指令 REPT

伪指令REPT用于创建重复块,重复块的重复次数由一个数值表达式的值给定。一般格式如下:

REPT 数值表达式

需重复的语句组

ENDM

宏汇编程序把“需要重复的语句组”连续地重复汇编由表达式所决定的次数。

例1:

CHAR = 'A'

TABLE LABEL BYTE

REPET 26

DB CHAR

CHAR=CHAR+1

ENDM

汇编为:

  TABLE LABEL BYTE
     DB 'A'
     DB 'A'+1
     DB 'A'+24
     DB 'A'+25

例2:

要求建立一个100D字的数组,其中每个字的内容是下一个字的地址,而最后一个字的内容是第一个字的地址

ARRAY LABEL WORD

REPET 99

DW $+2

ENDM

DW ARRAY

汇编后:

 ARRAY ABBEL WORD

 DW $+2

 DW $+2

 …

 DW $+2

 DW ARRAY

2. 伪指令IRP

伪指令IRP用于创建重复块。重复次数和每次重复使用的实参由参数列表决定。一般格式如下:

IRP 形式参数, <实参1, 实参2, ……, 实参n>

需重复的语句

ENDM

其中实参的个数决定了重复的次数

例3:

下面重复块实现把0~9的平方存入数值QUART中

QUART LABEL BYTE

IRP X, <0, 1, 2, 3, 4, 5, 6, 7, 8, 9>

DB X*X

ENDM

例4:

下面的重复块实现了把若干寄存器压入堆栈

IRP REG, <AX, BX, CX, DX>

PUSH REG

ENDM
 PUSH AX

 PUSH BX

 PUSH CX

 PUSH DX

3. 伪指令 IRPC

伪指令IRPC和IRP相似, 但实参列表是一个字符串,一般格式如下:

IRPC 形式参数 字符串

需要重复的语句组

ENDM

字符串的长度规定了重复的次数,如果字符串包含了空格, 逗号等分隔符, 那么字符串需用一对尖括号括起来。

例5:

TABLE LABEL BYTE

IRPC X, 0123456789

DW (X+1)*2

ENDM

例6:

下面重复语句块实现把AX, BX, CX, DX四个寄存器依次压入堆栈

IRPC REG, ABCD

PUSH REG&X

ENDM

转载于:https://www.cnblogs.com/hailong/archive/2011/01/23/1942322.html

相关标签: 汇编语言