On 14.09.2020 19:15, luserdroog wrote:
...
>>> CMP(,R,BX,CX)
3b d9 CMP bx,cx ;does a faked SUB (bx-cx)
flags affected: CY,PAR,AUX,Z,S,O
usable conditional instructions after this:
Jcc(short or long)/SETcc/CMOVcc/(FCMOVcc is a bit different)
x86 Conditions:
O code 70/40/80/90 if OF=0
NO code 71 41/81/91 if OF=1
C aka B aka NAE aka < code 72/42/82/92 if CF=1 if below/if carry
NC aka NB aka AE aka >= code 73/43/83/93 if CF=0 if not below/if
above or equal
Z aka E aka = code 74/44/84/94 if ZF=1 if zero/if equal
NZ aka NE aka <> code 75 and so on if ZF=0 if not zero/if
not equal
NA aka BE aka <= code 76 if CF=1 or ZF=1 if not
above/if below or equal
A aka NBE aka > aka NCNZ code 77 if CF=0 and ZF=0 if not
below or equal/if above
S aka SM aka - code 78 if SF=1 (usable after
unsigned cmp/sub/add...)
NS aka SP aka + code 79 if SF=0
P aka PE code 7A if PE=1 parity even
(works on low byte only)
NP aka PO code 7B if PE=0 prity odd ("-")
L aka NGE aka <0 code 7C if SF<>OF if less/if not
greater or equal **
NL aka GE aka >=0 code 7D if SF=OF if not less/ if
greater or equal **
NG aka LE aka <=0 code 7E if SF<>OF or ZF=1 if less
or equal/if not greater **
G aka NLE aka >0 code 7F/4F/9F/9F if ZF=0 and SF=OF if not
less or equal/if greater **
** this four are made for signed compare...
ie:
70 xx JO xx
0f 80 xx xx JO xxxx
0f 40/r CMOVO r
0f 90/0/rm SETO r/rm
...
> I said this wrong. These are "to" forms, not "from". The first
> argument to my CMP macro can be F to create a "from" opcode or blank
> (as above) to create a "to" opcode. Elsethread I mentioned the
> expanded operator function listed in my codegolf answer, that should
> be "addbf" (the "from" form) not "addbt". Sigh. addbf (add byte from)
> being opcode 0x00.
Why easy when you can make it complicated ?
what's wrong with the assembler syntax used by NASM,FASM,..(long list)
and also AMD and Intel in their docs ?
sorry if the lines wrap
__
wolfgang