[comp.os.minix] asld question

paula@bcsaic.UUCP (Paul Allen) (06/30/88)

I'm trying to build a kernel that has Eric Roskos' generic BIOS disk
driver in it.  Part of that process is to convert his MASM version of
klib88.asm back into something that asld can grok.  I'm having trouble
figuring out when to use '*' and when to use '#' in front of tokens.
From some study of the disassembler that was recently posted, I infer
that '#' implies a 2-byte operand and '*' implies a 1-byte operand, but
this does not appear to be consistent with the usage in the 1.1 klib88.s
sources.  Clearly, I am lacking in understanding.  Can anyone explain
the operand syntax of asld for me?

Thanks!

Paul Allen

-- 
------------------------------------------------------------------------
Paul L. Allen                       | paula@boeing.com
Boeing Advanced Technology Center   | ...!uw-beaver!ssc-vax!bcsaic!paula

ast@cs.vu.nl (Andy Tanenbaum) (07/04/88)

In article <6263@bcsaic.UUCP> paula@bcsaic.UUCP (Paul Allen) writes:
>I'm trying to build a kernel that has Eric Roskos' generic BIOS disk
>driver in it.  Part of that process is to convert his MASM version of
>klib88.asm back into something that asld can grok.  I'm having trouble
>figuring out when to use '*' and when to use '#' in front of tokens.

In theory, * means 1 byte and # means two bytes.  This is PC-IX syntax.
Of course, the assembler can see very well how big the number is and doesn't
need the user to tell it whether it fits in 8 bits or not.  Thus it ignores
the difference between * and # ands uses 1 byte when the number fits in
one byte, and two bytes otherwise.  I don't know why PC-IX has two ways to
express constants when the assembler can obviously figure it out itself
except to mention that unlike Xenix, PC-IX is a genuine, official, IBM
product, sold in genuine, official IBM stores (back when they had such
things).

-- 
Andy Tanenbaum (ast@cs.vu.nl)