#include <stdio.h>
int m_cmp(char* a, char* b)
{
int cnta = 0; // a의길이
int cntb = 0; // b의길이
_asm
{
mov edi, a
L3:
cmp [edi], 0x00
je L1
inc edi
inc cnta
jmp L3
}
L1:
printf("%d\n", cnta);
_asm
{
mov edi, b
L4:
cmp [edi], 0x00
je L2
inc edi
inc cntb
jmp L4
}
L2:
printf("%d\n", cntb);
_asm
{
mov eax,ctna
cmp eax,cntb // a와 b의 길이비교 큰수 반복
jae L5 // a가 같거나 클 경우
mov eax,cntb // b가 클 경우 eax를 b로 바꿈
L5:
mov edi, a
mov esi, b
L9:
cmp eax,0x00 // 반복 횟수가 0이 되면
je L6
dec eax
cmp [esi],[edi]
★★★★★ ja L7
jb L8
je L9
}
L7: return 1;
L8: return -1;
L6: return 0;
}
int main()
{
char str1[10] = "Hello"; // 문자열 1
char str2[10] = "He1lo"; // 문자열 2
char str3[10] = "Hpllo"; // 문자열 3
int a; // m_cmp의 리턴값
a = m_cmp(str1,str2); // str1이 더 클 경우
printf("%d\n", a); // 1 리턴
return 0;
}
★ 5개 되있는 부분에서..오류가 발생하는데...또 뭐가 잘못된건지 못잡고있습니다.. |