global _start
_start:

section .text

;display msg
mov rax,1
mov rdi,1
mov rsi,msg1
mov rdx,len1
syscall

;accept system syscall
mov rax,0
mov rdi,0
mov rsi,str1
mov rdx,length1
syscall

dec rax
mov [str_length1],rax

;display msg
mov rax,1
mov rdi,1
mov rsi,msg2
mov rdx,len2
syscall

mov rax,[str_length1]
call display

;exit
mov rax,60
mov rdi,0
syscall

display:
mov rsi,disparr+1
mov rcx,16

l2: mov rdx,0
 mov rbx,10h
 div rbx
 cmp dl,09h
 jbe l1
 add dl,07h

l1: add dl,30h
 mov [rsi],dl
 dec rsi
 dec rcx
 jnz l2

    mov rax,1
    mov rdi,1
    mov rsi,disparr
    mov rdx,2
    syscall
    
    ret

section .data
msg1 db "Enter a string:",0ah
len1 equ $-msg1

msg2 db "length of the string : ",0ah
len2 equ $-msg2

section .bss
disparr resb 40
str1 resb 40
length1 resb 40
str_length1 resb 40

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: