Tuesday, March 27, 2012

compare two strings assembly X86

; compare two strings
;--------------------------------------------------------------------------

.model small

.data

message_display macro msg
mov dx,offset msg
mov ah,09h
int 21h
endm

msg1 db 10,13, "Enter first string $"
msg2 db 10,13, "Enter Second string $"
msg3 db 10,13, "$"
msg4 db 10,13, "Strings are not equal $"
msg5 db 10,13, "Strings are equal $"

string1 db 10h dup(0)
string2 db 10h dup(0)

len1 db 00h
len2 db 00h


.code
mov ax,@data
mov ds,ax

lea si,string1

nxt_char: mov ah,01h
int 21h
mov [si],al
inc si
inc len1
cmp al,0dh
jnz nxt_char

mov al,24h
mov [si],al

message_display msg3
message_display string1
message_display msg3

lea si,string2

nxt_char1: mov ah,01h
int 21h
mov [si],al
inc si
inc len2
cmp al,0dh
jnz nxt_char1

mov al,24h
mov [si],al

message_display msg3
message_display string2

mov al,len1
mov ah,len2

cmp al,ah
jnz not_equal

mov ax,@data
mov ds,ax
mov es,ax

mov bh,00
mov bl,len1

lea si,string1
lea di,string2

mov cx,bx
repz cmpsb

cmp cx,0000h
jnz not_equal

message_display msg5
jmp exit


not_equal:
message_display msg4

exit:
mov ah,4ch
int 21h
end

No comments:

Post a Comment