Yes, this is yet another Hello World programm, but don't worry it's the last one! The reason behind making so many different pages showing different ways solving the same problem is to show you that there are multiple ways to solve one problem and that things may vary from platform to platform.
As we have learned using libraries, this last Hello World programm uses asm_io for reading and writing instead of System Calls. This way you don't need to remember the ABI for each OS you write the program for. See the PDF Overview for what asm_io library provides you with.
%include "asm_io.inc"
segment .data
msg db "Hello, world!", 0xA, 0x0
segment .text
global main
main:
mov eax, prompt01
call print_string
call read_int
mov ecx, eax
call print_nl
loop_start:
mov eax, msg
call print_string
loop loop_start
ret
; static string
prompt01: db "Enter a natural number: ", 0
This code is very similar to the previous Hello World programs, with the exception that we have to use a NULL terminated string and are not providing the string length. Also the above code should make clear that labels are nothing else than a memory address either, thus it is possible to define static strings even within the code segment instead of within the data segment.
NOTE: For x64, you must include asm64_io.inc instead. Look into the Resources section.