我需要帮助了解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)期间...... 它们似乎都不是具有任何价值的地址......真的失去了如何加入局部变量。
旁注: 有点编程组装新...
答案 0 :(得分:2)
如果您打算使用它,则初始化本地(堆栈)变量。所以你应该这样做:
xor eax, eax
mov NumPeriod, eax
mov NumComma, eax
如果您使用的是BSS
或DATA
段中的变量,它们是预初始化的,但堆栈变量具有在调用函数时堆栈上发生的值。