Ev. musst du die Register ändern (ja nach Prozessor):

Division zweier 16Bit -Werte (Signed)
.include "2313DEF.INC"
.DSEG
i: .Byte 2
j: .Byte 2
k: .Byte 2

.CSEG
.ORG 0

_Reset:
ldi yl,Low(RAMEND)
out SPL,yl
ldi yh,high(RAMEND)
out SPL+1,yh
sbiw yl,32

loop:
; k = i / j
; Hier die Werte laden
lds r24,i
lds r25,i+1
lds zl,j
lds zh,j+1

; Beginn der Division
Di16s: mov r22,zl
mov r23,zh
mov zl,r24
mov zh,r25
mov r21,zh
eor r21,r23
sbrs zh,0x07
rjmp d16s1
Com zh
Com zl
subi zl,Low(-0x01)
sbci zh,high(-0x01)
d16s1: sbrs r23,0x07
rjmp d16s2
Com r23
Com r22
subi r22,Low(-0x01)
sbci r23,high(-0x01)
d16s2: clr r24
Sub r25,r25
ldi r20,0x11
d16s3: rol zl
rol zh
dec r20
brne d16s5
sbrs r21,7
rjmp d16s4
Com zh
Com zl
subi zl,Low(-0x01)
sbci zh,high(-0x01)
d16s4: rjmp ende ; ...fertig
d16s5: rol r24
rol r25
Sub r24,r22
sbc r25,r23
brcc d16s6
add r24,r22
Adc r25,r23
clc
rjmp d16s3
d16s6: sec
rjmp d16s3

; Und Ergebnis sichern:
ende: sts k,zl
sts k+1,zh

rjmp loop


Gruß, Olfi