Advertisement
Garey

Marto_Assembly_8664

Apr 23rd, 2018
481
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.    ; 8664
  2.     mov rax,r0           ; Поставяме началния адрес в rax
  3.     mov ecx,-1          
  4.     xor edx,edx          ; Нулираме edx за брояч на еднаквите байтове
  5.    @@:
  6.     inc ecx
  7.     cmp r1b,cl           ; Проверяваме за край на масива
  8.     je @f                ; Ако да излизаме от метода
  9.     cmp byte[rax + rcx],r2b ; Проверяваме дали текущия байт е еднакъв с примерният
  10.     jne @b                  ; Ако не е продължаваме цикъла (се едно continue на С++)
  11.     inc edx                 ; Ако е увеличаваме брояча за еднакви байтове
  12.     jmp @b
  13.    @@:
  14.     mov r0,rdx              ; Поставяме преброените байтове в r0 и връщаме като резултат
  15.     ret
  16.  
  17. ;
  18. ; ARM
  19. ;
  20.  
  21. .global main
  22.  
  23. main:
  24.     STMFD SP!, {R1-R4, LR}
  25.     MOV RAX,R0           ; Поставяме началния адрес в rax
  26.     MOV ECX,#-1          
  27.     EOR EDX,EDX          ; Нулираме edx за брояч на еднаквите байтове
  28. L1:
  29.     IA ECX
  30.     CMP R1,CL           ; Проверяваме за край на масива
  31.     BLEQ L2                ; Ако да излизаме от метода
  32. L2:
  33.     CMP RAX + RCX,R2        ; Проверяваме дали текущия байт е еднакъв с примерният
  34.     BNE   L2                  ; Ако не е продължаваме цикъла (се едно continue на С++)
  35.     IA EDX                 ; Ако е увеличаваме брояча за еднакви байтове
  36.     B L3
  37. L3:
  38.     MOV R0,RDX              ; Поставяме преброените байтове в r0 и връщаме като резултат
  39.     LDMFD SP!, {R1-R4, PC}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement