So i am making a calculator in assembly like i would in c or c++ or any other language but the output is being really weird it is printing all of them out then taking input
NOTE: THIS IS IN x86_64 ASM THAT IS WHY I AM USING 64 BIT REGISTERS FOR THE ARGS
NOTE: THIS IS NOT CLOSE TO DONE I AM JUST WORKING ON TAKING INPUT
main.asm
section .data
p1 db "Enter first number: "
p2 db "Enter seccond number: "
p3 db "Enter operation", 0xa, "1)Add", 0xa, "2)Subtract",0xa, "3)Multiply",0xa, "4)Divide", 0xa, "> "
p1len equ $-p1
p2len equ $-p2
p3len equ $-p3
section .bss
n1 resb 8
n2 resb 8
op resb 8
section .text
global _start
_start:
call _doN1
call _doN2
call _doOps
mov rax, 60
mov rdi, 0
syscall
_doOps:
mov rax, 1
mov rdi, 1
mov rsi, p3
mov rdx, p3len
syscall
mov rax, 0
mov rdi, 0
mov rsi, op
mov rdx, 8
syscall
ret
_doN1:
mov rax, 1
mov rdi, 1
mov rsi, p1
mov rdx, p1len
syscall
mov rax, 0
mov rdi, 0
mov rsi, n1
mov rdx, 8
syscall
ret
_doN2:
mov rax, 1
mov rdi, 1
mov rsi, p2
mov rdx, p2len
syscall
mov rax, 0
mov rdi, 0
mov rsi, n2
mov rdx, 8
syscall
ret
Output:
Enter first number: Enter seccond number: Enter operation
1)Add
2)Subtract
3)Multiply
4)Divide
> 3
Enter seccond number: Enter operation
1)Add
2)Subtract
3)Multiply
4)Divide
> 6
Enter operation
1)Add
2)Subtract
3)Multiply
4)Divide
> 1