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)