Write an X86/64 ALP to accept a string and to display its length.
;String length in Assembly Lanuguage
;macros begin
%macro write 2 ;will be used to write on the screen
mov rax,01h
mov rdi,0h
mov rsi,%1
mov rdx,%2
syscall
%endmacro
%macro read 2 ;will be used to read from the screen
mov rax,0h
mov rdi,1h
mov rsi,%1
mov rdx,%2
syscall
%endmacro
;macros end
section .data
len1: equ $-msg1
msg2: db "Enter the string ",10
len2: equ $-msg2
msg3 : db "The length of the string is "
len3: equ $-msg3
section .bss
orgstr resb 50 ;original string
wordlen resb 1 ;length of the string
ascii resb 2 ;len in ascii
count resb 1
section .text
global _start:
_start:
write msg2,len2 ;display message
length: ;the length option
mov al,0 ;initialize al with zero
read orgstr,50
mov byte[wordlen],al
dec byte[wordlen] ;now len has the length of the string without the null character
mov esi,wordlen
mov edi,ascii
mov byte[count],2
mov al,byte[esi]
loop:
rol al,04
mov bl,al
and bl,0Fh
cmp bl,09h
jbe nocorrection
add bl,7h
nocorrection:
add bl,30h
mov byte[edi],bl
inc edi
dec byte[count]
jnz loop
write ascii,2
exit: ;to exit from the program
mov rax,60
mov rdx,0h
syscall
Comments
Post a Comment