I'm trying to implement logical NOT and logical AND
in assembly, I did logical NOT already using x < 1
but I can't think of how to implement AND, I can use
binary and but that's broken for negative numbers (it
assumes -1 is true
) and it doesn't make any sense
when NOT obviously works because -1 < 1
would return 1
So I'm confused, how could I do it, any known implementation which I could use? I can't find it, been looking for a while
The standard solution is to implement a && b
as
if (a)
return (b);
else
return (0);
i.e. use a conditional jump. On sufficiently new x86, you can also use a cmov
instruction like this:
; assumes input in eax and ebx
mov ecx, eax ; ecx = A
test ebx, ebx ; B?
cmovnz ecx, ebx ; ecx = A ? B : A