Skip to main content

Find String Length Program In Assembly Language

Hello Friends,



Here In This Post, I am going to share Two very simple piece of Assembly Language Codes That Will Simply Demonstrate, How We can Easily Calculate The length of String In Assembly.

I Hope, You Will Enjoy It. These Examples are Super Easy To Understand. If You Are new, And Don't Even Know How To Compile/Run process. Then, Please Check This Post Before Continue.


Assembly Language Find String length Example Code [Method 1]

; Find String Length
; author : surajsinghbisht054@gmail.com
;
;

; Section BSS
SECTION .bss

; Section Data
SECTION .data
 string db "0123456789", 0AH ; This is the example string to find the length 

; Section Text
SECTION .text
 global _start

;
; Plan
; Iterate String From Starting to End, Until 0 bit found (End).
; Then, Simply Subtract The Ending Memory Address From Starting memory
; address to find the length of string.
;
; Routine
_start:
 mov eax, string  ; Now, EAX points to starting of string
 mov ebx, string  ; Now, EBX also points to starting of String

; Iterate Routine
_iterate:
 cmp  byte[eax], 0 ; Compare EAX first Byte with 0, if equal then set zero flag else pass
 jz _length  ; If Zero flag is set, then follow _lenth routine else pass
 inc eax  ; increase EAX += 1
 jmp _iterate ; Repeat

; Length 
_length:
 sub eax, ebx ; EAX = EBX - EAX [Difference Between memory Address of Starting and Ending Point ]
 mov edx, eax ; Set length of string
 mov  eax, 4  ; invoke SYS_WRITE
 mov ebx, 1  ; STDOUT
 mov ecx, string ; Set Memory address
 int 80h   ; kernel interpt
 call _exit  ; exit routine


; Exit Routine
_exit:
 mov eax, 1 ; Invoke SYS_EXIT 
 mov ebx, 0 ; Return Value
 int 80h  ; kernel interpt


Assembly Language Find String length Example Code [Method 2]

; Find String Length Method 2
; author : surajsinghbisht054@gmail.com
;


; BSS Section
SECTION .bss



; Data Section
SECTION .data
 string  db "0123456789", 0AH  ; Decleare String + 0AH is a New line ASCII HEXA code

; Text Section
SECTION .text
 global _start
;
; Plan
; Iterate String From Starting to End, Until 0 bit found (End).
; Also Keep Record, The Number of times of iteration Routine.
; This Iteration Register will denote the length of string
;

; Routine Start
_start:
 mov eax, string  ; mov string starting point memory address to EAX 
 mov ebx, 0  ; SET EBX = 0

; Routine iterate
_iterate:
 sub byte[eax], 0 ; Compare EAX first byte with 0, if equal set zero flag to 1 else set zero flag to 0
 jz _gotit  ; if Zerof flag is 1, Follow _gotit Routine, Else pass
 inc eax   ; Increase EAX
 inc ebx   ; keep record, Number of String Characters Checked
 jmp _iterate  ; Repeat

; Routine When, String End Found
_gotit:
 mov edx, ebx  ; set EDX = EBX [Length of String]
 mov eax, 4  ; invoke SYS_Write
 mov ebx, 1  ; STDOUT
 mov ecx, string  ; Move String Memory Address To ECX
 int 80h   ; kernel interpt
 call _exit  ; Follow Exit Routine

; Exit Routine
_exit:
 mov eax, 1 ; Invoke SYS_EXIT
 mov ebx, 0 ; Return Value
 int 80h  ; Kernel interpt

Compile And Run

$ nano find_string_lengh_2.asm
$ mkdir bin
$ mkdir output
$ nasm -f elf find_string_lengh_2.asm -o bin/find_string_length_2.o
$ ld -m elf_i386 bin/find_string_length_2.o -o output/find_string_length_2
$ ./output/find_string_length_2 


Please Check Github For Latest Error Free Examples Codes. Click here

Related Post

Top Visited

Big List Of Google Dorks For Sqli Injection

how to install burp suite in Linux/Ubuntu 16.04

Create Simple Packet Sniffer Using Python

Python Beautiful Soup Module - Tutorial - Part 2

Create Ping Sweeping Script Using Python

how to configure burpsuite with firefox?

Latest Google Dorks List

List of Keyboard Shortcuts Keys for GNOME Desktop (Kali linux / Linux / Ubuntu/*nix )

What is Burp Suite And its Features?

What is the use of Pseudo header in TCP/UDP packets?