Indirecte adressering

Status
Niet open voor verdere reacties.

Choxo

Nieuwe gebruiker
Lid geworden
5 nov 2006
Berichten
2
Hey,
Ik volg deze tutorial om de basis een beetje van assembler te kennen.

Als ik echter dit probeer te compileren ( gcc args.s -o args ) krijg ik deze errors:

Code:
args.s: Assembler messages:
args.s:30: Error: bad or irreducible absolute expression
args.s:30: Error: expecting scale factor of 1, 2, 4, or 8: got `$1'

Mijn args.s bestand ziet er als volgt uit:

Code:
	.section .data
new_line_char:
	.byte 0x0a

	.section .text
	.globl main
	.align 4
main:
	movl %esp, %ebp		#store esp in ebp

again:	addl $4, %esp 		#next param on stack (+4)
	movl (%esp),%eax	#move next praameter into %eax
	testl %eax,%eax		# %eax == NULL?
	jz end_again		#jump to end_again if eax==null
	call putstring
	jmp again

end_again:
	xorl %eax,%eax		#eax  = 0
	incl %eax		#eax = 1, system call exit
	xorl %ebx,%ebx		#parameter 0 for exit
	int $0x80

putstring:	.type @function
	pushl %ebp
	movl  %esp, %ebp
	movl  8(%ebp),%ecx
	xorl  %edx,%edx
count_chars:
	movb (%ecx,%edx,$1), %al
	testb %al,%al
	jz    done_count_chars
	incl  %edx
	jmp   count_chars

done_count_chars:
	movl $4, %eax
	xorl %ebx,%ebx
	incl %ebx
	int $0x80
	movl $4, %eax
	leal new_line_char, %ecx
	xorl %edx,%edx
	incl %edx
	int $0x80
	movl %ebp,%esp
	popl %ebp
	ret

Er scheelt dus duidelijk iets met deze regel:
Code:
movb (%ecx,%edx,$1), %al

Heeft iemand een idee wat deze regel zou moeten doen, of wat er fout aan is?


Dank bij voorbaat!
 
OEF! Da's lang geleden.

Maar blijkbaar struikelt de assembler op $1 in de regel die je aangeeft.
Als je nu die $ weghaalt?

Ben helemaal vergeten wat de $ zou moeten betekenen.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan