Hallo,
Man kann, analog zu XOR reg,reg, OR reg,reg dazu benutzen, die Flags entsprechend dem Inhalt des Registers reg zu setzen, ohne reg zu verändern oder irgendwelche Konstanten bemühen zu müssen. Insbesondere für das Zero-Flag wird das gerne benutzt -- mindestens auf den x86-Prozessoren und analog auf dem Z80.
ja, ist mir auch geläufig.
Ansonsten gibt es aus alten DOS-Zeiten noch etwas krude Tests, z.B. OR AX,DX, um ein DWORD (long int oder long pointer) in DX:AX auf 0 / nicht 0 zu testen.
Das ist doch nichts "krudes", sondern pretty straightforward. Für mich intuitiv, wenn ich zwei Werte (oder zwei Register) auf 0 testen will.
Etwas länger auch als LES DI,somepointer; MOV AX,ES; OR AX,DI; JZ zeropointer.
Ist aber nur dann günstig, wenn man den Pointer in ES:DI sowieso braucht. Andernfalls sind passend gesetzte Segmentregister meist kostbar, man mag sie ungern überschreiben. Dann schon eher:
MOV AX,[somepointer+0]
OR AX,[somepointer+2]
JZ isnull
Das braucht wahrscheinlich auch nicht länger, verschont aber die Segmentregister.
So long,
Martin
Zivilisation bedeutet, dass die Eskimos warme Wohnungen bekommen und dann arbeiten müssen, damit sie sich einen Kühlschrank leisten können.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(