%macro scall 4 ;general macro with 4 parameters
mov rax,%1 ;read syscall
mov rdi,%2 ;keyboard
mov rsi,%3 ;variable
mov rdx,%4 ;variable lenght in bytes
syscall ;call the kernel
%endmacro
section .data
menu db 10d,13d,"--Menu--"
db 10d,"1.ENTER A STRING"
db 10d,"2.LENGTH OF STRING"
db 10d,"3.REVERSE STRING"
db 10d,"4.CHECK STRING IS PALLINDROME OR NOT"
db 10d,"5.EXIT"
db 10d,"ENTER YOUR CHOICE:"
menulen equ $-menu
newline db 10
m1 db 10d,"ENTER STRING:"
l1 equ $-m1
m2 db 10d,"LENGTH OF STRING:"
l2 equ $-m2
m3 db 10d,"REVERSE STRING:"
l3 equ $-m3
m4 db 10d,"STRING IS PALLINDROME!!"
l4 equ $-m4
m5 db 10d,"STRING IS NOT PALINDROME!!"
l5 equ $-m5
m6 db 10d,"!!!!!STRING OPERATION COMPLETED!!!!!"
l6 equ $-m6
section .bss
string resb 50
string2 resb 50
len resb 16
choice resb 16
answer resb 16
section .text
global _start
_start:
scall 1,1,menu,menulen
scall 0,0,choice,2
cmp byte[choice], '1'
je enter_string
cmp byte[choice], '2'
je display_length
cmp byte[choice], '3'
je string_reverse
cmp byte[choice], '4'
je pallindrome
cmp byte[choice], '5'
je exitcall
enter_string:
scall 1,1,m1,l1
scall 0,0,string,50
mov [len],rax
scall 1,1,newline,1
jmp _start
display_length:
scall 1,1,m2,l2
mov rax,[len]
call display
jmp _start
string_reverse:
call stringreverse
scall 1,1,m3,l3
scall 1,1,string2,[len]
scall 1,1,newline,1
jmp _start
pallindrome:
mov rsi,string
mov rdi,string2
mov rcx,[len]
call loop3
jmp _start
exitcall:
call exit
loop3:
mov al,[rsi]
cmp al,[rdi]
jne skip2
inc rsi
inc rdi
dec byte[len]
jnz loop3
scall 1,1,m4,l4
scall 1,1,newline,1
exit:
scall 1,1,m6,l6
mov rax,60
mov rdi,0
syscall
skip2:
scall 1,1,m5,l5
scall 1,1,newline,1
display:
mov rsi,answer+15
mov rcx,16
loop1:
mov rdx,0
mov rbx,16
div rbx
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
scall 1,1,newline,1
ret
stringreverse:
mov rsi,string
mov rdi,string2
mov rcx,[len]
dec rcx
add rdi,rcx
loop2:
mov al,[rsi]
mov [rdi],al
dec rdi
inc rsi
loop loop2
ret
To embed this project on your website, copy the following code and paste it into your website's HTML: