diff options
| author | Christian Krinitsin <code@krinitsin.xyz> | 2024-11-20 15:16:23 +0100 |
|---|---|---|
| committer | Christian Krinitsin <code@krinitsin.xyz> | 2024-11-20 15:16:23 +0100 |
| commit | 8b0a801bbd3344168b0d51f2aa83a8d459ed1374 (patch) | |
| tree | 03f8531092996f75028eb00aa92b5cc8c47b30c9 | |
| download | x86_64-Snake-8b0a801bbd3344168b0d51f2aa83a8d459ed1374.tar.gz x86_64-Snake-8b0a801bbd3344168b0d51f2aa83a8d459ed1374.zip | |
init commit and draw border for the game
| -rw-r--r-- | Makefile | 6 | ||||
| -rwxr-xr-x | main | bin | 0 -> 10184 bytes | |||
| -rw-r--r-- | main.asm | 99 | ||||
| -rw-r--r-- | main.o | bin | 0 -> 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 |