While I was viewing the file AS.EXE, I stumbled upon next list of instruction mnemonics for the 8086 processor:
ja jb jc je jg jl in jo jp js jz aaa daa aad adc add dec bge aam jae jbe lea clc bhi ble cmc cld bne aas jge sbb beq das cli jna neg jnb inc jhi jnc jle esc cbw blo bgt jne cwd jpe jng jeq sal cmp rcl blt nil lds div les jnl jlo jgt sar rep rcr jno jmp jnp hlt jpo jlt sub stc std ret jns int rol nop mul pop sti mov jnz ror out lahf call jnae jnbe sahf jnge bhis lock jnle xchg scas repe idiv jhis blos lods cmps iret wait popf imul jlos xlat loop into jcxz test push repz movs stos buncd scasb juncd lodsb cmpsb repne xlatb loope scasw pushf movsb lodsw cmpsw stosb repnz loopz movsw stosw loopne loopnz
What immediately struck me is the elevated number of mnemonics.
After a close inspection I compiled next table for the supplemental mnemonics:
| Enc | Intel mnemonics | Manx mnemonics | Description |
|---|---|---|---|
| 70h | jo | ||
| 71h | jno | ||
| 72h | jb, jnae, jc | blo, jlo | lower |
| 73h | jnb, jae, jnc | bhis, jhis | higher or same |
| 74h | je, jz | beq, jeq | equal |
| 75h | jne, jnz | bne | not equal |
| 76h | jbe, jna | blos, jlos | lower or same |
| 77h | jnbe, ja | bhi, jhi | higher |
| 78h | js | ||
| 79h | jns | ||
| 7Ah | jp, jpe | ||
| 7Bh | jnp, jpo | ||
| 7Ch | jl, jnge | blt, jlt | less than |
| 7Dh | jnl, jge | bge | greater or equal |
| 7Eh | jle, jng | ble | less or equal |
| 7Fh | jnle, jg | bgt, jgt | greater than |
| EBh | jmp | buncd, juncd | unconditionally |
nil |
Now I wonder why the author(s) added so many extra mnemonics. I understand that one would do this in order to ease the transition for people coming from another architecture like eg. 68k that does use beq, bne, bhi, blt, bge, ble, and bgt.
What I don't quite get is the addition of the longer-than-necessary
buncdandjuncd. (They could easily have pickedbrainstead.) Have there ever been assemblers around that already usedbuncdandjuncd?What is
nilsupposed to accomplish? It sits among the instructions but the assembler doesn't insert any code for it. Isn't prefixing a line with a semicolon much easier if we want to omit what is on a line or suppress anything from getting encoded?
The AS.EXE file (44448 bytes) bears the following copyright notice:
Copyright (C) 1984 by Manx Software Systems.
8086 Assembler Vers. 1.06D
The file came with an 8088 computer some 35 years ago and I never had a manual for it. Not surprising I barely used the software, except for today in order to verify the above mentioned table.