initial
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
main
|
||||
122
main.asm
Normal file
122
main.asm
Normal file
@@ -0,0 +1,122 @@
|
||||
format ELF64 executable
|
||||
|
||||
segment readable executable
|
||||
|
||||
entry main
|
||||
main:
|
||||
call init_board
|
||||
mov [turn], 0
|
||||
.game_loop:
|
||||
inc [turn]
|
||||
call get_input
|
||||
sub [input], '0'
|
||||
|
||||
test [turn], 1
|
||||
mov r8b, '2' ; char
|
||||
jz .some
|
||||
mov r8b, '1' ; char
|
||||
.some:
|
||||
|
||||
mov bl, [input]
|
||||
call action
|
||||
|
||||
call print_board
|
||||
call print_board_break
|
||||
|
||||
call win_condition
|
||||
cmp rax, 0
|
||||
jne .game_loop
|
||||
|
||||
mov rax, 60
|
||||
mov rdi, 0
|
||||
syscall
|
||||
|
||||
win_condition:
|
||||
ret
|
||||
|
||||
get_input:
|
||||
mov rax, 0
|
||||
mov rdi, 0
|
||||
mov rsi, input
|
||||
mov rdx, 2
|
||||
syscall
|
||||
ret
|
||||
|
||||
init_board:
|
||||
mov rax, board
|
||||
mov r8, 6
|
||||
|
||||
.init_board_loop:
|
||||
mov r10, 7
|
||||
.init_board_loop_inner:
|
||||
mov byte [rax], '0'
|
||||
inc rax
|
||||
|
||||
dec r10
|
||||
cmp r10, 0
|
||||
jne .init_board_loop_inner
|
||||
|
||||
mov byte [rax], 10
|
||||
inc rax
|
||||
|
||||
dec r8
|
||||
cmp r8, 0
|
||||
jne .init_board_loop
|
||||
|
||||
ret
|
||||
print_board:
|
||||
mov rax, 1
|
||||
mov rdi, 1
|
||||
mov rsi, board
|
||||
mov rdx, 48
|
||||
syscall
|
||||
ret
|
||||
|
||||
print_board_break:
|
||||
mov rax, 1
|
||||
mov rdi, 1
|
||||
mov rsi, line_break
|
||||
mov rdx, break_len
|
||||
syscall
|
||||
ret
|
||||
|
||||
action:; rbx - x, r8b - char
|
||||
mov r9, 6
|
||||
.action_test_loop:
|
||||
dec r9
|
||||
mov rax, 8
|
||||
mul r9
|
||||
mov r10, board
|
||||
add r10, rbx
|
||||
add r10, rax
|
||||
|
||||
cmp r9, 0
|
||||
je .continue_action
|
||||
cmp byte [r10], '0'
|
||||
jne .action_test_loop
|
||||
.continue_action:
|
||||
|
||||
mov r13, 5
|
||||
sub r13, r9
|
||||
mov rcx, r13
|
||||
call place
|
||||
ret
|
||||
|
||||
place: ; rbx - x, rcx - y, r8b - char
|
||||
mov rax, 5
|
||||
sub rax, rcx
|
||||
mov r9, 8
|
||||
mul r9
|
||||
mov r10, board
|
||||
add r10, rax
|
||||
add r10, rbx
|
||||
mov byte [r10], r8b
|
||||
ret
|
||||
|
||||
segment readable writable
|
||||
board rb 48
|
||||
table rb 154
|
||||
turn rb 1
|
||||
input rb 1
|
||||
line_break db "-------", 10, 0
|
||||
break_len = $-line_break
|
||||
Reference in New Issue
Block a user