stricmp.s
来自「一个操作系统,用C语言实现开发的,我在一个浙江大学的操作系统实验网站找到.大家学」· S 代码 · 共 59 行
S
59 行
# Kernel Library
# stricmp
.include "f_asm.inc"
.equ STR1, DES
.equ STR2, SRC
.text
.global _stricmp
_stricmp:
ENTER
pushl %esi
movl %edi, %edx
movl STR1(%ebp), %esi
movl STR2(%ebp), %edi
xorl %eax, %eax
cmpl %esi, %edi
jz done
next:
movb (%esi), %cl
cmpsb
jz ignore
lahf
movb -1(%edi), %ch
cmpb $0x41, %cl; jl diff
cmpb $0x5a, %cl; jg comp0
addb $0x20, %cl
comp0:
cmpb $0x41, %ch; jl diff
cmpb $0x5a, %ch; jg comp1
addb $0x20, %ch
comp1:
cmpb %cl, %ch
jnz diff
xorb %ah, %ah
ignore:
cmpb $0, %cl
jnz next
jmp done
diff:
xorl %ecx, %ecx
sahf
sbbl %ecx, %ecx
orb $1, %cl
movl %ecx, %eax
done:
movl %edx, %edi
popl %esi
LEAVE
ret
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?