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

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

三、 重复汇编

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

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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值