.386
.model flat,c
option casemap :none
TXT MACRO your_text:VARARG
LOCAL text_string
.data
text_string db your_text,0
.code
EXITM <addr text_string>
ENDM
printf proto c args:vararg
_getch proto c
exit proto c :dword
includelib msvcrt.lib
.code
main PROC C argc:DWORD,pargv:DWORD
;---- code here --------
push 2
test byte ptr [esp], 2
.if !Zero?
invoke printf,TXT("& 2 set", 13, 10)
.else
invoke printf,TXT("& 2 not set", 13, 10)
.endif
test byte ptr [esp], 2
.if Zero?
invoke printf,TXT("& 2 not set", 13, 10, 10)
.else
invoke printf,TXT("& 2 set", 13, 10, 10)
.endif
.if byte ptr [esp] & 2
invoke printf,TXT("& 2 set", 13, 10)
.else
invoke printf,TXT("& 2 not set", 13, 10)
.endif
.if !byte ptr [esp] & 2
invoke printf,TXT("& 2 not set", 13, 10)
.else
invoke printf,TXT("& 2 set", 13, 10)
.endif
.if !(byte ptr [esp] & 2)
invoke printf,TXT("& 2 not set", 13, 10, 10)
.else
invoke printf,TXT("& 2 set", 13, 10, 10)
.endif
pop ebx
.if bl & 2
invoke printf,TXT("& 2 set", 13, 10)
.else
invoke printf,TXT("& 2 not set", 13, 10)
.endif
.if !bl & 2
invoke printf,TXT("& 2 not set", 13, 10)
.else
invoke printf,TXT("& 2 set", 13, 10)
.endif
.if !(bl & 2)
invoke printf,TXT("& 2 not set", 13, 10)
.else
invoke printf,TXT("& 2 set", 13, 10)
.endif
invoke _getch
invoke exit,0
main endp
end main
& 2 set
& 2 set
& 2 set
& 2 set
& 2 set
& 2 set
& 2 set
& 2 set