📄 strnicmp.s
字号:
# Kernel Library
# strnicmp
.include "f_asm.inc"
.equ STR1, DES
.equ STR2, SRC
.text
.global _strnicmp
_strnicmp:
ENTER
pushl %esi
pushl %edi
movl LEN(%ebp), %ecx
movl STR1(%ebp), %esi
movl STR2(%ebp), %edi
xorl %eax, %eax
cmpl %esi, %edi
jz done
next:
movb (%esi), %dl
cmpsb
jz ignore
lahf
movb -1(%edi), %dh
cmpb $0x41, %dl; jl diff
cmpb $0x5a, %dl; jg comp0
addb $0x20, %dl
comp0:
cmpb $0x41, %dh; jl diff
cmpb $0x5a, %dh; jg comp1
addb $0x20, %dh
comp1:
cmpb %dl, %dh
jnz diff
xorb %ah, %ah
ignore:
cmpb $0, %dl
loopnz next
jmp done
diff:
xorl %ecx, %ecx
sahf
sbbl %ecx, %ecx
orb $1, %cl
movl %ecx, %eax
done:
popl %edi
popl %esi
LEAVE
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -