ShadowRayz Posted June 28, 2008 Posted June 28, 2008 K, so i wrote a small masm exe to see how it'll look when its compiled, kinda same..the only major difference was that in the source i did an IF condition.when i debugged the .exe the .if eax == null.........endif became OR EAX,EAX, i didn't really find anything about that in google for some reason...can anyone explain how that OR works and if i can use it as a replacement for the .if .endif somehow.Thanx
GamingMasteR Posted June 28, 2008 Posted June 28, 2008 read the x86 asm guide :OR - Logical Inclusive ORDescriptionPerforms a bitwise inclusive OR operation between the destination (first) and source (second) operands and stores the result in the destination operand location. The source operand can be an immediate, a register, or a memory location; the destination operand can be a register or a memory location. (However, two memory operands cannot be used in one instruction.) Each bit of the result of the OR instruction is 0 if both corresponding bits of the operands are 0; otherwise, each bit is 1.
atom0s Posted June 29, 2008 Posted June 29, 2008 Example of AND / OR / XOR / NOT:Instruction AND OR XOR NOT Source Bit |0 0 1 1|0 0 1 1|0 0 1 1|0 1| Destination Bit |0 1 0 1|0 1 0 1|0 1 0 1|X X| Output Bit |0 0 0 1|0 1 1 1|0 1 1 0|1 0|
MOID Posted June 29, 2008 Posted June 29, 2008 I suppose after the OR EAX, EAX there is a JNZ. The OR EAX, EAX is just used to set the Z (Zero) flag if EAX is zero, then the jump skips the piece of code depending on that.Maybe it helps to think of it like this: Because EAX OR EAX = EAX, EAX does not change. Therefore OR EAX, EAX does about the same thing as CMP EAX, 0. Even better would be TEST EAX, EAX. If the instruction before the if modifies EAX and sets the Z flag (most instructions like ADD do this) you don't need to set it again.It may be better to not use macros until you have a firm grasp on pure assembly programming.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now