After preprocessing, the assembler needs to see $<number> as register specifiers, so typically your choices are to do either: #define a0 $4 // See include/asm-mips/regdef.h for these #define v0 $2 ... la a0, quest li v0, 4 Or to just use the register numbers, e.g. la $4, quest li $2, 4 -Justin > ----- Original Message ----- > From: "Balakrishnan Ananthanarayanan" <balakris_ananth@email.com> > To: <linux-mips@oss.sgi.com>; <linux-kernel@vger.kernel.org>; > <redhat-list@redhat.com> > Sent: Monday, June 17, 2002 5:48 AM > Subject: Code error - why? > > > > I wrote a SAMPLE CODE - Hello.S to work for a cross-assembler > mips-linux-as - but this is giving me an error message: > > ".data > > quest: .asciiz "Hello World!" > > .text > > _start: > > la $a0, quest > > li $v0, 4 > > syscall " > > > > The error messages are: > > " Hello.S line 5: illegal operands 'la' > > Hello.S line 6: illegal operands 'li'" > > > > Can anyone help? What is wrong?