MASM32局部变量?

时间:2013-11-22 16:26:12

标签: assembly x86 masm masm32

我需要帮助了解MASM32 LOCAL Macro。我知道LOCAL变量是推送到堆栈的。但是,我正在尝试使用它们来存储临时值。这是一个快速摘录。

FormatError PROC USES EBX ECX
LOCAL NumComma:DWORD, NumPeriod:DWORD

。 。

.WHILE ecx < eax
    mov bl, [edx + ecx]
    .IF bl == ","
        inc [NumComma]
    .ELSEIF bl == "."
        inc [NumPeriod]
    .ENDIF
    inc ecx
.ENDW

mov ebx, [NumComma]
mov ecx, [NumPeriod]

EBX = 004059B5h ECX = 7EFDE000h

没有4,217,269(004059B5h)逗号。并且没有2,130,567,168(7EFDE000h)期间...... 它们似乎都不是具有任何价值的地址......真的失去了如何加入局部变量。

旁注: 有点编程组装新...

1 个答案:

答案 0 :(得分:2)

如果您打算使用它,则初始化本地(堆栈)变量。所以你应该这样做:

xor eax, eax
mov NumPeriod, eax
mov NumComma, eax

如果您使用的是BSSDATA段中的变量,它们是预初始化的,但堆栈变量具有在调用函数时堆栈上发生的值。