how to print a long string using lodsl/ or any other way?

hello to all.. i am trying to copy a long string from a string in data section to a register and then back to a variable (in GNU Assembler). [code].datahello:.asciz "hello world".bss.lcomm stringpointer, 20.text.globl _start_start:leal hello,%esilodsl #LOADING CONTENTS OF HELLO TO %EAXleal stringpointer,%edi stosl #LOADING TO A VAR.-STRINGPOINTERmovl $4,%eaxmovl $1,%ebxmovl $stringpointer,%ecxmovl $12,%edxint $0x80

But after execution it copies only 4 characters to variable & followed by prints 4 characters to screen.

Also if i don't use "leal" and "lodsl" and "stosl", and move the contents using pointer:-[code]movl $hello,stringpointer[/code]and then using print routine to print to screen, A scrap kind of value gets printed. I guess it is ASCII value of something. Anyone plz guide what to do.(I am a beginner in assembly language.). Thanks in advance