彙編 - CMPS 指令



CMPS 指令比較兩個字串。該指令比較 DS:SI 和 ES:DI 暫存器指向的一個位元組、字或雙字的資料項,並設定相應的標誌。你還可以將條件跳轉指令與該指令一起使用。

以下示例演示使用 CMPS 指令比較兩個字串:

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

編譯並執行上述程式碼時,將產生以下結果:

Strings are not equal!
assembly_strings.htm
廣告
© . All rights reserved.