If there are multiple ways to do this, would you name a few, please?

what does the assembler do is just convert the assembly language
source file into a object file. file name ended with .a .obj .o like extension.

I'm using nasm and suggest you too use it.With this command like you
assembling it to a object file.

nasm -f elf HelloWorld.asm

and you need a linker , I have mingw installed in my windows machine
so I suggested to use mingw ld linker to link this.But you need extra
libraries to pass to use the functions like _printf , so that we use the
gcc ( GNU C compiler's fontend for 'ld') , but actually 'ld' is using.

J:\EXERCISES\Assembly\hello>
J:\EXERCISES\Assembly\hello>nasm -f elf  HelloWorld.asm

J:\EXERCISES\Assembly\hello>gcc HelloWorld.o -o HelloWorld.exe -e _main

J:\EXERCISES\Assembly\hello>HelloWorld
hello, World

J:\EXERCISES\Assembly\hello>

Compile it and see yourself,This is the code for HelloWorld.asm,

global _main
	extern _printf 
	
	section .text
_main: 
	push message
	call _printf 
	add  esp , 4
	ret
message:
	db 'hello, World',10,0

NOTE: when you using a symbol as an entry point that symbol should
be global, and also you can specify the entry point using -e option in the
ld linker.

I think other linkers also give you to explicitly specify the entry point
of your program.

Download nasm and install mingw and do it by yourself. Best regards.