- Assembly Tutorial
- Assembly - Home
- Assembly - Introduction
- Assembly - Environment Setup
- Assembly - Basic Syntax
- Assembly - Memory Segments
- Assembly - Registers
- Assembly - System Calls
- Assembly - Addressing Modes
- Assembly - Variables
- Assembly - Constants
- Assembly - Arithmetic Instructions
- Assembly - Logical Instructions
- Assembly - Conditions
- Assembly - Loops
- Assembly - Numbers
- Assembly - Strings
- Assembly - Arrays
- Assembly - Procedures
- Assembly - Recursion
- Assembly - Macros
- Assembly - File Management
- Assembly - Memory Management
- Assembly Useful Resources
- Assembly - Quick Guide
- Assembly - Useful Resources
- Assembly - Discussion
Assembly - CMPS Instruction
The CMPS instruction compares two strings. This instruction compares two data items of one byte, word or doubleword, pointed to by the DS:SI and ES:DI registers and sets the flags accordingly. You can also use the conditional jump instructions along with this instruction.
The following example demonstrates comparing two strings using the CMPS instruction −
section .text global _start ;must be declared for using gcc _start: ;tell linker entry point mov esi, s1 mov edi, s2 mov ecx, lens2 cld repe cmpsb jecxz equal ;jump when ecx is zero ;If not equal then the following code mov eax, 4 mov ebx, 1 mov ecx, msg_neq mov edx, len_neq int 80h jmp exit equal: mov eax, 4 mov ebx, 1 mov ecx, msg_eq mov edx, len_eq int 80h exit: mov eax, 1 mov ebx, 0 int 80h section .data s1 db 'Hello, world!',0 ;our first string lens1 equ $-s1 s2 db 'Hello, there!', 0 ;our second string lens2 equ $-s2 msg_eq db 'Strings are equal!', 0xa len_eq equ $-msg_eq msg_neq db 'Strings are not equal!' len_neq equ $-msg_neq
When the above code is compiled and executed, it produces the following result −
Strings are not equal!
assembly_strings.htm
Advertisements