заходил в поиск... о строках много тем, но свою так и не нашел. Как сравнить две строки, узнав какая из них больше/меньше(т.е. будет в отсортированном списке стоять первой) В мою пустую голову приходит лишь одна лажовая идея с побайтовым перебором и проверкой каждого байта. Как не совпадают определить чей не совпавший байт выше/ниже. Но хотелось бы как-то это с оптимизироать. В основном по размеру, скорость конечно тоже важна, но не настолько всего около 150h элементов. А! Да! Чуть не забыл, конец строки - нуль. Мой бредовый способ можно наблюдать здесь: Код (Text): ;--------------------------------------------------------------------- -------- cmp_str: ;input: esi - 1 string ; edi - 2 string ;output:cf=0 - выше - ja xxx > ; cf=1 - ниже - jb xxx < ; ecx=0 - равно - jecxz xxx = pusha _cmp_l00p: mov al,[esi] mov ah,[edi] cmp al,ah jne _cmp_ret or al,al jz _cmp_ecx cmpsb ;inc esi / inc edi jmp _cmp_l00p _cmp_ret: popa ret _cmp_ecx: sub eax,eax mov [esp+24],eax popa ret
если размер важен, наверное, можно так: Код (Text): cmp_str: ;input: esi - 1 string ; edi - 2 string ;output: ; ZF = 1 : 1st = 2nd JZ... ; CF = 1 : 1st < 2nd Jc... ; ZF = CF = 0 : 1st > 2nd JA... pusha .l00p: cmpsb jnz .exit cmp byte [esi-1], 0 jnz .l00p .exit: popa ret