%macro scall 4
mov rax,%1
mov rdi,%2
mov rsi,%3
mov rdx,%4
syscall
%endmacro
section .data
m1 db 10d,"ENTER NAME: "
l1 equ $-m1
m2 db 10d,"LENGTH IS: "
l2 equ $-m2
m3 db 10d,"Entered name is: "
l3 equ $-m3
m4 db 10d,"ENTER ROLL NO: "
l4 equ $-m4
m5 db 10d,"Entered roll number is: "
l5 equ $-m5
m6 db 10d,"ENTER PANEL NO: "
l6 equ $-m6
m7 db 10d,"Entered panel number is: "
l7 equ $-m7
section .bss
string resb 6 ; 50 is the maximum buffer
roll resb 3
panel resb 2
len resb 16
len2 resb 16
len3 resb 16
answer resb 16
section .text
global _start
_start:
enter_data:
scall 1,1,m1,l1
scall 0,0,string,6 ; user string is stored in string
dec rax
mov [len],rax ; this will give exact number of bytes
scall 1,1,m4,l4
scall 0,0,roll,3
dec rax
mov [len2],rax
scall 1,1,m6,l6
scall 0,0,panel,2
mov [len3],rax
scall 1,1,m3,l3
scall 1,1, string,6
display_length:
scall 1,1,m2,l2
mov rax,[len]
call display ; calls procedure
;mov rax,0
enter_roll:
scall 1,1,m5,l5
scall 1,1,roll,3
display_length2:
scall 1,1,m2,l2
mov rax,[len2]
call display
enter_panel:
scall 1,1,m7,l7
scall 1,1,panel,2
display_length3:
scall 1,1,m2,l2
mov rax,[len3]
call display
scall 60,0,0,0
display:
mov rsi,answer+15 ; rsi points to the end of string
mov rcx,16
loop1: ; hex to ascii converter
mov rdx,0
mov rbx,16
div rbx ; divides rbx by rax and store it in dl
cmp dl,09h
jbe skip1
add dl,07h
skip1:
add dl,30H
mov [rsi],dl
dec rsi
dec rcx
jnz loop1
scall 1,1,answer,16
ret
To embed this project on your website, copy the following code and paste it into your website's HTML: