assembly 在MASM中使用变量创建for循环,以创建不同的PROC函数

wlwcrazw  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(112)

我试图创建一组基于“for循环”计数器的进程。MASM似乎没有传统的for-next类型的循环,所以我尝试使用变量和REPT。
例如:

ix = 0
rept 2
    foo_&ix& proc
        mov rax, ix
        ret
    foo_&ix& endp
    ix = ix + 1
endm

...

; call the generated procs
call foo_0
call foo_1

然而,ml64.exe返回error A2008: syntax error : foo_,因此它似乎没有使用该变量。
我认为我没有正确定义和使用变量。常量是用ix equ 0创建的,但它们似乎不能被修改。

lnlaulya

lnlaulya1#

根据上面的注解,使用CatStr:

.code
ix = 0
rept 2
    @CatStr(<foo_>, %ix, < proc>)
    mov rax, ix
    ret
    @CatStr(<foo_>, %ix, < endp>)
    ix = ix + 1
endm

...
 
; call the generated procs
    call foo_0
    call foo_1

感谢@Micheal Petch

相关问题