[nasm]文字を一文字ずつ出力

文字を一文字ずつ表示することで、レジスタやスタックの扱いに慣れる。

<解説>
基本はraxにシステムコール、それ以外で引数を入力。
rax0x2000004は標準出力で、
rbxに文字を一文字ASCIIの16進数で格納。
rsiは直接代入できないらしく、rbxをpushでスタックに格納して、leaで参照させている。
引数が全て揃ったらsyscallで実行。

bits 64
section .text

global _main
_main:
	mov rax, 0x2000004
	mov rbx, 32h
	mov rdx, 01h
	mov rdi, 1
	push rbx
	lea rsi, [rsp]
	syscall

	mov rax, 0x2000004
	mov rbx, 0ah
	mov rdx, 01h
	mov rdi, 1
	push rbx
	lea rsi, [rsp]
	syscall

	mov rax, 0x2000001
	mov rdi, 0
	syscall