当前位置: 首页 > 文档资料 > 汇编中文教程 >

CMPS

优质
小牛编辑
142浏览
2023-12-01

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!