Koen Van Vlaenderen
De vergeetachtigheid bewijst grotere diensten aan het hart dan het geheugen aan het verstand.
In een appnote van atmel heb ik een aantal voorbeeldcodes gevonden om te delen en te vermenigvuldigen.
Maar ik vrees dat de code fout is want als ik die simuleer werkt het niet 
;***************************************************************************
;*
;* "div16u" - 16/16 Bit Unsigned Division
;*
;* This subroutine divides the two 16-bit numbers
;* "dd8uH:dd8uL" (dividend) and "dv16uH:dv16uL" (divisor).
;* The result is placed in "dres16uH:dres16uL" and the remainder in
;* "drem16uH:drem16uL".
;*
;* Number of words :19
;* Number of cycles :235/251 (Min/Max)
;* Low registers used :2 (drem16uL,drem16uH)
;* High registers used :5 (dres16uL/dd16uL,dres16uH/dd16uH,dv16uL,dv16uH,
;* dcnt16u)
;*
;***************************************************************************
;***** Subroutine Register Variables
.def drem16uL=r14
.def drem16uH=r15
.def dres16uL=r16
.def dres16uH=r17
.def dd16uL =r16
.def dd16uH =r17
.def dv16uL =r18
.def dv16uH =r19
.def dcnt16u =r20
;***** Code
div16u: clr drem16uL ;clear remainder Low byte
sub drem16uH,drem16uH;clear remainder High byte and carry
ldi dcnt16u,17 ;init loop counter
d16u_1: rol dd16uL ;shift left dividend
rol dd16uH
dec dcnt16u ;decrement counter
brne d16u_2 ;if done
ret ; return
d16u_2: rol drem16uL ;shift dividend into remainder
rol drem16uH
sub drem16uL,dv16uL ;remainder = remainder - divisor
sbc drem16uH,dv16uH ;
brcc d16u_3 ;if result negative
add drem16uL,dv16uL ; restore remainder
adc drem16uH,dv16uH
clc ; clear carry to be shifted into result
rjmp d16u_1 ;else
d16u_3: sec ; set carry to be shifted into result
rjmp d16u_1
in de code is ook niets terug te vinden van dres16uL of dres16uH ..
( heeft dezelfde registers in gebruik als dd16uL en dd16uH zie ik net met mijn dwaze kop
)
de vraag is hoe moet het wel 
Koen Van Vlaenderen
De vergeetachtigheid bewijst grotere diensten aan het hart dan het geheugen aan het verstand.
oja nog een vraagje, als ik met interrupts werk, moet ik dan mijn sreg ff op de stack gooien en na de interrupt terug plaatsen?
Koen Van Vlaenderen
De vergeetachtigheid bewijst grotere diensten aan het hart dan het geheugen aan het verstand.
shit wat ben ik slecht 
het kwam dus doordat ik registers heb aangepast en niet doorgehad dat een paar register aliasen dezelfde reg gebruiken 
ok dus rest er nog de vraag over die SREG tijdes een interrupt
Evil Aedolon
ELEKTRONICA WIKI // Wiskunde is "hip" // http://www.physics2005.org/ 2005 Year of physics! // "In science there is only physics; all the rest is stamp collecting."

[Bericht gewijzigd door Evil Aedolon op ]
Benadski
Kom eens langs bij RevSpace of één van de andere spaces!
Op 20 juli 2004 16:09:03 schreef Koen Van Vlaenderen:
shit wat ben ik slechthet kwam dus doordat ik registers heb aangepast en niet doorgehad dat een paar register aliasen dezelfde reg gebruiken
ok dus rest er nog de vraag over die SREG tijdes een interrupt
Die sla ik altijd op. Als er bijvoorbeeld tijdens een vergelijking een interrupt komt en die is afgehandeld is het status register veranderd. Dan kan de instructie die een actie onderneemt aan de hand van de vergelijking niet altijd het goede doen.
Koen Van Vlaenderen
De vergeetachtigheid bewijst grotere diensten aan het hart dan het geheugen aan het verstand.