P1-Arithmetic Operations
P1-Arithmetic Operations
mov rax,1
mov rdi,1
mov rsi,%1
mov rdx,%2
syscall
%endmacro
%macro READ 02
mov rax,0
mov rdi,0
mov rsi,%1
mov rdx,%2
syscall
%endmacro
section .data
section .bss
char_buff resb 17
a resq 1
b resq 1
c resq 1
d resq 1
choice resb 02
section .text
global _start
_start:
print_menu: WRITE menu,menu_len
READ choice,02
cmp byte[choice],31H
je addition
cmp byte[choice],32H
je substraction
cmp byte[choice],33H
je multiplication
cmp byte[choice],34H
je division
cmp byte[choice],35H
je exit
WRITE msg6,len6
jmp print_menu
mov rdi,0
syscall
READ char_buff,17
call accept
mov qword[a],rbx
READ char_buff,17
call accept
mov qword[b],rbx
mov rax,qword[b]
add rax,qword[a]
mov qword[c],rax
WRITE msg1,len1
mov rbx,[c]
call display
jmp print_menu
READ char_buff,17
call accept
mov qword[a],rbx
READ char_buff,17
call accept
mov qword[b],rbx
mov rax,qword[a]
sub rax,qword[b]
mov qword[c],rax
WRITE msg2,len2
mov rbx,[c]
call display
jmp print_menu
READ char_buff,17
call accept
mov qword[a],rbx
READ char_buff,17
call accept
mov qword[b],rbx
mul qword[b]
mov qword[c],rdx
mov qword[d],rax
WRITE msg3,len3
mov rbx,qword[c]
call display
mov rbx,qword[d]
call display
jmp print_menu
READ char_buff,17
call accept
mov qword[a],rbx
READ char_buff,17
call accept
mov qword[b],rbx
mov rdx,00
mov rax,qword[a]
div qword[b]
mov qword[c],rax
mov qword[d],rdx
WRITE msg4,len4
mov rbx,[c]
call display
WRITE msg5,len5
mov rbx,[d]
call display
jmp print_menu
mov rcx,rax
mov rsi,char_buff
mov rbx,00
mov rdx,00
mov dl,byte[rsi]
cmp dl,39H
jbe sub30
sub dl,07H
add rbx,rdx
inc rsi
dec rcx
jnz up
ret
mov rcx, 16
mov dl, bl
and dl, 0FH
jbe add30
add dl,07H
mov byte[rsi], dl
inc rsi
dec rcx
jnz up1
WRITE char_buff, 16
ret