summary refs log tree commit diff homepage
diff options
context:
space:
mode:
authorJune McEnroe <programble@gmail.com>2016-12-02 04:58:57 -0500
committerJune McEnroe <programble@gmail.com>2016-12-02 04:58:57 -0500
commita1010618a24474e4c8253d2fc1df300474bac609 (patch)
treee08b59b1e842f2bd948626c87624cee71c2d2e7f
parentRewrite day 1 solution (diff)
downloadaoc-a1010618a24474e4c8253d2fc1df300474bac609.tar.gz
aoc-a1010618a24474e4c8253d2fc1df300474bac609.zip
Add 32-bit hex formatting
-rw-r--r--Makefile2
-rw-r--r--day01.asm8
-rw-r--r--lib.asm19
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