You should not require administrator privileges to execute a code as simple as that. Maybe you're doing something wrong during the build or build phase of the executable.
I'll tell you how I reproduced your error (your code as it is would not let me compile):
bits 64
section .data
EXIT_success equ 0
SYS_exit equ 60
bNum1 db 3
bNum2 db 6
bAns1 db 0
section .text
global main
main:
mov al, byte [bNum1]
add al, byte [bNum2]
mov byte [bAns1], al
last:
mov rax, SYS_exit
mov rdi, EXIT_success
syscall
Then compile with nasm -f elf64 pr.asm
and generate the executable with gcc pr.o -o pr
.
Finally, I execute everything with:
$ ./pr ; echo $?
0
So you can see that it does not generate any coredump or anything like that. If I change the line EXIT_success equ 1
I get (as expected):
$ ./pr ; echo $?
1
So your problem should be another one.
By the way, sometimes when something works as root and not as a user, it's because you try to access a memory area that you should not have!
Beware of the use of pointers or indirect addresses, etc, you could corrupt your system if you do not control where your data is directed.
As a general rule remember that if something works as root but not as a user, it is because you are doing something wrong.
Greetings.