Hi I am new to NASM and still familiarizing with the syntax. I have a problem running my code array.asm
This is my code: array.asm
%include "asm_io.inc"
segment .data
  msg1 : db "enter the number of elements of array : ", 10, 13
  len1 : equ $-msg1
  msg2 : db "enter the elements : ", 10, 13
  len2 : equ $-msg2
  msg3 : db "enter the element to be searched : ", 10, 13
  len3 : equ $-msg3
  msg4: db "element found at position : ", 10, 13
  len4: equ $-msg4
  msg5: db "element not found !! ", 10, 13
  len5: equ $-msg5
  
segment .bss
  inbuf resb 12
  no: resd 1
  no2: resd 1
  divide: resd 1
  dispcount: resd 1
  no_of_elements: resd 1
  array: resd 50
  temp: resd 1
  element: resd 1
  pos: resd 1
segment .text
  global _asm_main
_asm_main:
  mov eax, 4
  mov ebx, 1
  mov ecx, msg1
  mov edx, len1
  int 80h
 call getnumber
  mov eax, [no]
  mov [no_of_elements], eax
  mov eax, 4
  mov ebx, 1
  mov ecx, msg2
  mov edx, len2
  int 80h
  mov eax, [no_of_elements]
  mov [temp], eax
getarr:
  cmp dword [temp], 0
  je donegetno
  call getnumber
  mov eax, [no]
  push eax
 dec dword [temp]
  jmp getarr
  donegetno:
  mov eax, 4
  mov ebx, 1
  mov ecx, msg3
  mov edx, len3
  int 80h
 call getnumber
  mov eax, [no]
  mov [element], eax
  mov ebx, [no_of_elements]
  mov [temp], ebx
  search:
  pop eax
  mov [no], eax
  cmp [element], eax
  je found
  dec dword [temp]
  cmp dword [temp], 0
  jne search
  jmp notfound
  found :
   add dword [temp], 30h
  mov eax, 4
  mov ebx, 1
  mov ecx, msg4
  mov edx, len4
  int 80h
  mov eax, 4
  mov ebx, 1
  mov ecx, temp
  mov edx, 1
  int 80h
  mov dword [no], 10
  mov eax, 4
  mov ebx, 1
  mov ecx, no
  mov edx, 1
  int 80h
  jmp exit
  notfound :
  mov eax, 4
  mov ebx, 1
  mov ecx, msg5
  mov edx, len5
  int 80h
 exit:
 mov eax, 1
 mov ebx, 0
 int 80h
 getnumber:
 mov eax, 3
 mov ebx, 0
 mov ecx, inbuf
 mov edx, 11
 int 80h
 push inbuf
 call atoi
 add esp, 4
 mov dword [no], eax ; or could just return result in eax
 ret
 ;--------------------
 atoi:
 mov edx, [esp + 4] ; pointer to string
 xor eax, eax ; clear "result"
.top:
 movzx ecx, byte [edx]
 inc edx
 cmp ecx, byte '0'
 jb .done
 cmp ecx, byte '9'
 ja .done
    ; we have a valid character - multiply
    ; result-so-far by 10, subtract '0'
     ; from the character to convert it to
    ; a number, and add it to result.
 lea eax, [eax + eax * 4]
 lea eax, [eax * 2 + ecx - '0']
 jmp short .top
.done:
 ret
when I run my code at the terminal with these commands:
nasm -f win32 array.asm
gcc -o array array.obj driver.c asm_io.obj array
it doesn't return any error but the code is not running either. Can you please help me identify the issue? Thank you
