Today I started learning x86 Assembly. I am using NASM and have a doubt here:
Code:
On the second line:
Code:
I'm wondering why doesn't it need a 0 after like it does in Z80 Assembly. In fact, don't all strings need a 00 Byte in the end to indicate the end? Why is it not there? Thanks.
Also, I don't think many people can help me here, but it's worth a shot, right?
Code:
section .data
hello: db 'Hello world!',10 ; 'Hello world!' plus a linefeed character
helloLen: equ $-hello ; Length of the 'Hello world!' string
; (I'll explain soon)
section .text
global _start
_start:
mov eax,4 ; The system call for write (sys_write)
mov ebx,1 ; File descriptor 1 - standard output
mov ecx,hello ; Put the offset of hello in ecx
mov edx,helloLen ; helloLen is a constant, so we don't need to say
; mov edx,[helloLen] to get it's actual value
int 80h ; Call the kernel
mov eax,1 ; The system call for exit (sys_exit)
mov ebx,0 ; Exit with return code of 0 (no error)
int 80h
On the second line:
Code:
hello: db 'Hello world!',10 ; 'Hello world!' plus a linefeed character
I'm wondering why doesn't it need a 0 after like it does in Z80 Assembly. In fact, don't all strings need a 00 Byte in the end to indicate the end? Why is it not there? Thanks.
Also, I don't think many people can help me here, but it's worth a shot, right?