使用.if 判断时不能使用多个表达式报error A2070错误,?
在使用.if 判断时不能使用多个表达式, 如果用多于一个表达式就会报: error A2070错误就算是使用多重嵌套也不行如:
.if 表达式
.elseif 表达式
.else
.endif
以上也会报error A2070错误
这是什么原因, 请各位指点一下
代码如下:
.386
.model flat, stdcall
option casemap : none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data?
hInstance dd ?
.data
szFilePath db 'd:\test', 0
szS db '\', 0
szVar db '*.*', 0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 定义查找文件并删除文件的函数
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_findFileAndDelete proc uses ebx edi esi, _szDFile:dword
local @hFoundFile:dword
local @stFoundFile:WIN32_FIND_DATA
local @szFilePath[MAX_PATH]:byte
local @szFile[MAX_PATH]:byte
local @fileCountor:dword
xor ecx, ecx
mov @fileCountor, 0
invoke lstrcpy, addr @szFilePath, _szDFile
invoke lstrcat, addr @szFilePath, addr szS
invoke lstrcat, addr @szFilePath, addr szVar
inc ecx
invoke FindFirstFile, addr @szFilePath, addr @stFoundFile
.if eax != INVALID_HANDLE_VALUE
mov @hFoundFile, eax
.repeat
invoke lstrcpy, addr @szFile, _szDFile
invoke lstrcat, addr @szFile, addr szS
invoke lstrcat, addr @szFile, addr @stFoundFile.cFileName
.if @stFoundFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY
.if @stFoundFile.cFileName == '.' && (@stFoundFile.cFileName == '..')
add @fileCountor, 1
.else
add @fileCountor, 1
invoke _findFileAndDelete, addr @szFile
invoke RemoveDirectory, addr @szFile
.endif
.else
add @fileCountor, 1
invoke DeleteFile, addr @szFile
.endif
invoke FindNextFile, @hFoundFile, addr @stFoundFile
.until eax == FALSE
invoke FindClose, @hFoundFile
.endif
ret
_findFileAndDelete endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 程序入口
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
invoke GetModuleHandle, NULL
mov hInstance, eax
invoke _findFileAndDelete, addr szFilePath
invoke ExitProcess, NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start