assembly - 用 MASM 汇编语言定义带参数的函数

标签 assembly masm

我正在尝试用 x86 汇编语言编写一个接受三个参数的函数。是否可以用 MASM 汇编语言定义一个具有多个参数的函数?

//this is pseudocode: I'm trying to convert this to a valid macro in MASM
//if var1 is equal to var2, jump to the label jumpToHere
function jumpIfEqual(var1, var2, jumpToHere){
    cmp var1, var2;
    je jumpToHere;
}

如果我可以编写一个有效的函数来执行此操作,那么 jumpIfEqual(5, 5, jumpToHere) 将等同于

cmp 5, 5;
je jumpToHere;

最佳答案

Yes, you can .

例如:

jumpIfEqual PROC var1:DWORD, var2:DWORD, jmpAddress:DWORD
    mov eax,var1
    cmp eax,var2
    jne skip
    pop eax
    push jmpAddress
    skip:
    ret
jumpIfEqual ENDP

....

push OFFSET jumpToHere
mov eax, 5
push eax
push eax
call jumpIfEqual

关于assembly - 用 MASM 汇编语言定义带参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15345645/

相关文章:

assembly - 在 GNU 汇编器中声明一个固定长度的填充字符串

assembly - 汇编程序中的寻址

c - 有没有办法转储所有物理内存值?

assembly - 我可以在每个内核的基础上编写汇编代码吗?

assembly - 如何在汇编器中创建名称奇怪的符号?

c++ - 原子商店。结构

c++ - 在 MS x64 调用约定中,是否需要为 WinAPI 调用创建影子空间?

assembly - 从内存中添加一个字节到 AX 寄存器

assembly - mov si, offset msg 中的 FASM vc MASM 转换问题

file - MASM 程序集列表文件 - 解释