I am trying to make a calculator using x86 assembly language but in addition it didn't ask for input of first value i am new in assembly so kindly guide me. Here's my code
section .data
mes1: db "Enter YOUR CHOICE" , 0xA , 0x20
len1: equ $-mes1
mes2: db "1.ADD", 0xA,0x20
len2: equ $-mes2
mes3: db "2.SUBTRACT", 0xA,0x20
len3: equ $-mes3
mes4: db "3.MULTIPLE", 0xA,0x20
len4: equ $-mes4
mes5: db "4.DEVISON", 0xA,0x20
len5: equ $-mes5
mes6: db "result : "
len6: equ $-mes6
mes7: db "Enter first value : " , 0xA
len7: equ $-mes7
mes8: db "Enter Second value : " , 0xA
len8: equ $-mes8
a: dd '1'
b: dd '2'
c: dd '3'
d: dd '4'
section .bss
choose resb 1
val1 resw 5
val2 resw 5
res resw 10
section .text
global _start
_start:
MENU:
mov eax , 0x4
mov ebx , 0x1
mov ecx , mes1
mov edx , len1
int 0x80
mov eax , 0x4
mov ebx , 0x1
mov ecx , mes2
mov edx , len2
int 0x80
mov eax , 0x4
mov ebx , 0x1
mov ecx , mes3
mov edx , len3
int 0x80
mov eax , 0x4
mov ebx , 0x1
mov ecx , mes4
mov edx , len4
int 0x80
mov eax , 0x4
mov ebx , 0x1
mov ecx , mes5
mov edx , len5
int 0x80
choice:
mov eax , 0x3
mov ebx , 0x2
mov ecx , choose
mov edx , 1
int 0x80
;compare 1
mov ecx , [choose]
cmp ecx , [a]
JE ADDITION
;compare 2
mov ecx , [choose]
cmp ecx , [b]
JE SUBTRACT
;compare 3
mov ecx , [choose]
cmp ecx , [c]
JE MULTIPLE
;compare 4
mov ecx , [choose]
cmp ecx , [d]
JE DEVISON
;else choice again
jmp choice
;
ADDITION:
;input for value 1
mov eax , 0x4
mov ebx , 0x1
mov ecx , mes7
mov edx , len7
int 0x80
mov eax , 0x3
mov ebx , 0x2
mov ecx , val1
mov edx , 5
int 0x80
;input for value 2
mov eax , 0x4
mov ebx , 0x1
mov ecx , mes8
mov edx , len8
int 0x80
mov eax , 0x3
mov ebx , 0x2
mov ecx , val2
mov edx , 5
int 0x80
;calculation
mov eax , [val1]
sub eax , '0'
mov ebx , [val2]
sub ebx , '0'
add eax , ebx
add eax , '0'
mov [res] , eax
;print result
mov eax , 0x4
mov ebx , 0x1
mov ecx , mes6
mov edx , len6
int 0x80
mov eax , 0x4
mov ebx , 0x1
mov ecx , res
mov edx , 10
int 0x80
jmp end
SUBTRACT:
mov eax , 0x4
mov ebx , 0x1
mov ecx , mes6
mov edx , len6
int 0x80
jmp end
MULTIPLE:
mov eax , 0x4
mov ebx , 0x1
mov ecx , mes6
mov edx , len6
int 0x80
jmp end
DEVISON:
mov eax , 0x4
mov ebx , 0x1
mov ecx , mes6
mov edx , len6
int 0x80
jmp end
end:
mov eax , 0x1
int 0x80