Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .type check, @function
- .global check
- .text
- ##PROTOTYPE##
- #void remove_spaces_asm(char* str);
- ##ARGS##
- # rdi - a
- # rsi - b
- # rdx - c
- ##ZADANIE##
- #sprawdzic w zaleznosci od parametru c
- #c == 0 a dzieli sie calkowicie przez b zwraca reszte
- #c != 0 funkcja nie uwzglednia b, sprawdza podzielnosc a
- #przez liczby 1..64 zwraca: najbardziej
- #znaczacy bit to rezultat dzielenia przez 64,
- #najmniej to przez 1
- check:
- CMP $0, %rdx
- JE sprawdz_reszte
- JMP sprawdz_1_64
- sprawdz_reszte:
- MOV $0, %rdx
- MOV %rdi, %rax
- DIV %rsi
- CMP $0, %rdx
- JE bez_reszty
- JMP z_reszta
- bez_reszty:
- MOV $0, %rax
- RET
- z_reszta:
- MOV $1, %rax
- RET
- sprawdz_1_64:
- ##DECL
- MOV $0, %r9 #r9 = result
- MOV $64, %r8 #iterator
- loop:
- MOV $0, %rdx
- MOV %rdi, %rax
- DIV %r8
- CMP $0, %rdx
- JE bez_reszty_1_64
- JMP z_reszta_1_64
- cont_loop:
- DEC %r8
- CMP $1, %r8
- JE break_loop
- JMP loop
- bez_reszty_1_64:
- OR $1, %r9
- SHL %r9
- JMP cont_loop
- z_reszta_1_64:
- SHL %r9
- JMP cont_loop
- break_loop:
- OR $1, %r9
- MOV %r9, %rax
- RET
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement