summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorChristian Krinitsin <code@krinitsin.xyz>2024-11-20 15:16:23 +0100
committerChristian Krinitsin <code@krinitsin.xyz>2024-11-20 15:16:23 +0100
commit8b0a801bbd3344168b0d51f2aa83a8d459ed1374 (patch)
tree03f8531092996f75028eb00aa92b5cc8c47b30c9
downloadx86_64-Snake-8b0a801bbd3344168b0d51f2aa83a8d459ed1374.tar.gz
x86_64-Snake-8b0a801bbd3344168b0d51f2aa83a8d459ed1374.zip
init commit and draw border for the game
-rw-r--r--Makefile6
-rwxr-xr-xmainbin0 -> 10184 bytes
-rw-r--r--main.asm99
-rw-r--r--main.obin0 -> 3328 bytes
4 files changed, 105 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..3398b6a
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,6 @@
+main: main.asm
+	nasm -f elf64 -g main.asm -o main.o
+	ld main.o -o main
+
+clean:
+	rm main main.o
diff --git a/main b/main
new file mode 100755
index 0000000..557b74b
--- /dev/null
+++ b/main
Binary files differdiff --git a/main.asm b/main.asm
new file mode 100644
index 0000000..d1f424c
--- /dev/null
+++ b/main.asm
@@ -0,0 +1,99 @@
+section .data
+    clear db 0x1B, '[2J', 0x1B, '[H', 0
+    clear_len equ $ - clear 
+    message1 db "Hello, World!", 0xA
+    msg_len1 equ $ - message1          
+    message2 db "Hello 2!", 0xA  
+    msg_len2 equ $ - message2
+
+section .rodata
+    width db 70
+    height db 30
+
+section .bss
+    byte_to_write resb 1
+
+section .text
+    global _start 
+
+write_byte:
+    push rdi
+    mov byte [byte_to_write], al
+    mov rax, 1                      
+    mov rdi, 1                      
+    mov rsi, byte_to_write                
+    mov rdx, 1                
+    syscall                         
+    pop rdi
+    ret
+
+clear_screen:
+    push rdi
+    mov rax, 1                      
+    mov rdi, 1                      
+    mov rsi, clear                
+    mov rdx, clear_len                
+    syscall                         
+    pop rdi
+    ret
+
+draw_upper_lower_line:
+    push rbx
+    mov rax, '+'
+    call write_byte
+    mov bl, byte [width]
+_01:mov rax, '-'
+    call write_byte
+    dec bl
+    cmp bl, 0
+    jnz _01
+    mov rax, '+'
+    call write_byte
+    mov rax, 10 ;newline
+    call write_byte
+    pop rbx
+    ret
+
+draw_left_right_lines:
+    push rbx
+    mov rax, '|'
+    call write_byte
+    mov bl, byte [width]
+_02:mov rax, 32 ;space
+    call write_byte
+    dec bl
+    cmp bl, 0
+    jnz _02
+    mov rax, '|'
+    call write_byte
+    mov rax, 10;newline
+    call write_byte
+    pop rbx
+    ret
+
+draw_border:
+    push rbx
+
+    call draw_upper_lower_line
+    mov bl, byte [height]
+_03:call draw_left_right_lines
+    dec bl
+    cmp bl, 0
+    jnz _03
+
+    call draw_upper_lower_line
+
+    pop rbx
+    ret
+
+
+_start:
+    call clear_screen
+    call draw_border
+
+
+exit:
+    ; exit syscall with return code 0
+    mov rax, 60                     
+    xor rdi, rdi                    
+    syscall                         
diff --git a/main.o b/main.o
new file mode 100644
index 0000000..283b0ac
--- /dev/null
+++ b/main.o
Binary files differ