Advertisement
Guest User

Untitled

a guest
Feb 24th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         .text
  2.         .global mystrspn
  3. mystrspn:
  4.         push    %ebp
  5.         mov     %esp, %ebp
  6.         push    %esi
  7.         push    %edx
  8.         mov     8(%ebp), %eax
  9.         mov     12(%ebp), %esi
  10.         movl    $0, %ebx
  11. continue:
  12.         movzb   (%eax), %ecx
  13.         movzb   (%esi), %edx
  14.         sub     %edx, %ecx // вычли один символ из другого, если равны то круто идем дальше
  15.         jz      equal
  16.         movzb   (%eax), %ecx  // если символы оказались не равны то пробуем пройтись дальше по второй строке
  17.         inc     %esi  // увеличили указатель
  18.         movzb   (%esi), %edx
  19.         test    %edx, %edx  //если еще не конец файла то назад в цикл сравнивать
  20.         jnz     continue
  21.  
  22.         jmp     end
  23. equal:  
  24.         movzb   (%eax), %ecx
  25.         movzb   (%esi), %edx
  26.         inc     %ebx     // это счетчик, его увеличили
  27.         inc     %eax     // продвинулись по первой строке
  28.         movzb   (%eax), %ecx
  29.         cmp     $0, %ecx    // если там не пустой символ то дальше
  30.         jz      end       //  иначе конец
  31.         mov     12(%ebp), %esi   // так как открываем новый символ первой строки, то возвращаемся в начало второй
  32.         movzb   (%esi), %edx
  33.         jmp     continue   // переходим назад к сравнениям
  34.  
  35. end:
  36.         mov     %ebx, %eax
  37.         pop     %edx
  38.         pop     %esi
  39.         movl    %ebp, %esp
  40.         popl    %ebp
  41.         ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement