That was meant as a standalone program, and should work fine all by itself. The problem is integrating that bit with your other code.
Code:
copyString:
.byte 12
This declares copyString to be a single byte with value 12. I didn't realize this until I looked at the disassembled executable your code produced (Checkout 'objdump', a very handy tool for such tasks):
Notice that copy string is only one byte. It starts at address 080491d8 and is followed by hello at address 080491c9. Then, if you track that down in the data section, you see that byte has a hex value of 0c, or decimal 12. Your copy loop copied 12 bytes, starting at copyString, and running clear on into hello, hence the "ello". Try the following declaration for stringVar:
Code:
.comm copyString,12,1
That declares a symbol copyString to be 12 bytes, on 1-byte alignment. Should do the trick for you.