Assembly 警告A6004:程序参数或本地未引用:地址MASM程序集

Assembly 警告A6004:程序参数或本地未引用:地址MASM程序集,assembly,visual-studio-2015,x86,masm,irvine32,Assembly,Visual Studio 2015,X86,Masm,Irvine32,所以,我一直在我的汇编代码中遇到这个错误,我不知道如何修复它 1>..\finalTe2.asm(175): warning A6004: procedure argument or local not referenced : address 这是我对过程及其参数的声明 displayBoard PROTO address:DWORD 下面是我如何使用它 displayBoard PROC address:DWORD .data boardRow BYTE '------------

所以,我一直在我的汇编代码中遇到这个错误,我不知道如何修复它

1>..\finalTe2.asm(175): warning A6004: procedure argument or local not referenced : address
这是我对过程及其参数的声明

displayBoard PROTO address:DWORD
下面是我如何使用它

displayBoard PROC address:DWORD
.data
boardRow BYTE '----------------', 0Ah, 0Dh, 0
boardColumn BYTE '|', 0

.code
push EBP
mov EBP, ESP
mov ESI, [EBP + 12]                             ;The address of the 2D array on the stack
mov ECX, 3h                                     ;Loop 3 times for the number of rows
BOARD1:
    mov EDX, OFFSET boardRow                    ;Display the first set of row characters
    coutS
    push ECX                                    ;preserve ECX
    clearECX
    mov ECX, 3h                                 ;Loop 3 times for the number of columns
    BOARD2:
        mov EDX, OFFSET boardColumn             ;display the first column character
        coutS
        invoke displayCell, ESI                 ;Call the proc that assigns the color of each cell
        inc ESI                                 ;Inc ESI to step through the 2D array this is used in the testCell proc
    loop BOARD2
    pop ECX
    mov EDX, OFFSET boardColumn
    coutS
    call crlf
loop BOARD1
mov EDX, OFFSET boardRow
coutS
pop EBP
ret
displayBoard ENDP

我看到了另一篇关于同样错误的帖子,我尝试了他们所说的,但没有成功。我所有的程序都有这个错误,我似乎无法摆脱它们

对于大多数C编译器,
intfoo(intx){return 0;}
将警告未使用的
x
在定义之前是否有原型

这是它的asm版本:我假设您没有在定义中使用参数

MASM可能没有注意到
movesi,[EBP+12]
正在访问函数arg为了让它满意,您可能必须使用
movesi,address
,这很容易混淆(如果您不习惯MASM),因为它看起来像一个静态符号名,而不是带有基址寄存器的堆栈地址


如果你不喜欢MASM,你就不必使用它。NASM运行良好。(虽然您可能会被Irvine32的MASM所困扰。但是,我认为您可以避免使用它的参数声明内容,而只需编写简单的asm,您可以自己跟踪堆栈/寄存器的操作。也就是说,如果您在调用
之前推送
内容或将其放入寄存器中,它不会抱怨正常方式。)

displayBoard
displayCell
是两个独立的函数名。如果
code…
部分没有提到
address
参数,显然masm会警告您。您是否以ecx的身份直接访问它(如果您处于32位模式,是否在堆栈上)?如果不使用该名称,可能汇编程序没有意识到您正在访问它?所以这不是一个简单的问题;显示一个发出警告的函数的代码。对不起,这是我的错误,我也有一个名为display cell的函数,让我编辑它