Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięDOTYCZY PROGRAMOWANIA ASSEMBLER AVR
Moderatorzy:Jacek Bogusz, Moderatorzy
JAK PODZIELIĆ LICZBĘ 8-BIT PRZEZ LICZBĘ 8-BIT W AVR ASSEMBLER? CZY KTOŚ POSIADA JAKĄŚ PROCEDURKĘ? DODAM, ŻE MIKROKONTROLER, KTÓRY PROGRAMUJE TO ATMEGA I NIE MA ON INSTRUKCJI DIV.
nomusze cię rozczarowac.... nei jest to takei proste... najłątwiej ale to zajmuje troche czasu to dodawać do siebie kolejne dzielniki az do momentu aż ich suma bedzie wieksza od liczby dzielonej... a różnica tej liczby którą otrzymasz z liczbą którą dzielisz da ci reszte albo licznik ułamka mianowniekiem jest dzielnik.
Kod: Zaznacz cały
; Procedura dzielenia 8bitowego
; pochodzi z noty AVR200 firmy ATMEL
.def drem8u =r15 ;remainder
.def dres8u =r16 ;result
.def dd8u =r16 ;dividend
.def dv8u =r17 ;divisor
.def dcnt8u =r18 ;loop counter
div8u: sub drem8u,drem8u ;clear remainder and carry
ldi dcnt8u,9 ;init loop counter
d8u_1: rol dd8u ;shift left dividend
dec dcnt8u ;decrement counter
brne d8u_2 ;if done
ret ;return
d8u_2: rol drem8u ;shift dividend into remainder
sub drem8u,dv8u ;remainder = remainder - divisor
brcc d8u_3 ;if result negative
add drem8u,dv8u ;restore remainder
clc ;clear carry to be shifted into result
rjmp d8u_1 ;else
d8u_3: sec ;set carry to be shifted into result
rjmp d8u_1
; koniec procedury dzielenia
-
- -
- Posty:651
- Rejestracja:13 sty 2005, o 18:38
- Lokalizacja:Krasnystaw
- Kontaktowanie:
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 124 gości