diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | day01.asm | 8 | ||||
-rw-r--r-- | lib.asm | 19 |
3 files changed, 27 insertions, 2 deletions
diff --git a/Makefile b/Makefile index df4adfd..7f63807 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ all: $(BINS) %: %.o ld -o $@ $< -%.o: %.asm sys.asm +%.o: %.asm sys.asm lib.asm nasm -f elf64 -o $@ $< clean: diff --git a/day01.asm b/day01.asm index 8ad4c66..fd31fce 100644 --- a/day01.asm +++ b/day01.asm @@ -1,4 +1,5 @@ %include "sys.asm" +%include "lib.asm" %define rPosX r8 %define rPosY r9 @@ -65,5 +66,10 @@ _start: xor rPosY, rax sub rPosY, rax - lea rax, [rPosX + rPosY] + lea rdi, [rPosX + rPosY] + call hex32 + push rax + syscall SYS_WRITE, FD_STDOUT, rsp, 8 + + xor rax, rax syscall SYS_EXIT, rax diff --git a/lib.asm b/lib.asm new file mode 100644 index 0000000..10d0e1c --- /dev/null +++ b/lib.asm @@ -0,0 +1,19 @@ +section .rodata +hexDigits: db '0123456789ABCDEF' + +section .text +hex32: + push rbx + mov rbx, hexDigits + xor rax, rax + +%rep 8 + shl rax, 8 + mov al, dil + and al, 0x0F + xlatb + shr rdi, 4 +%endrep + + pop rbx +ret |