Hi Martin,
bevor ich's erklär, hier ein paar Definitonen:
.def Einer = r16
.def Zehner = r17
.def Hunderter = r18
.def Ziel_low = r28
.def Ziel_high = r29
.def temp1 = r21
.def save1 = r22
.def save2 = r30
.def save3 = r31
Nun addiertst Du zuerst Einer und Zehner (Ergebnis minimal 0 und maximal
99).
Was mir hier gerade auffällt: Vergiß das mit den 200. Denkfehler von
meiner Seite. Auch der Rest hatte Denkfehler.
Hier ein neuer Vorschlag:
; Zehner-Zahl erzeugen (Zehner*10)
mov temp1,Zehner
add Zehner,temp1
add Zehner,temp1
add Zehner,temp1
add Zehner,temp1
add Zehner,temp1
add Zehner,temp1
add Zehner,temp1
add Zehner,temp1
add Zehner,temp1
mov save3,temp1 ; hier stehen die Zehner (z.B. 6*10 = 60)
addi save3,Einer ; nun sind die Einer und Zehner addiert
; Hunderter in save1 und save2 ablegen
; zuerst x10
mov temp1,Hunderter
add Hunderter,temp1
add Hunderter,temp1
add Hunderter,temp1
add Hunderter,temp1
add Hunderter,temp1
add Hunderter,temp1
add Hunderter,temp1
add Hunderter,temp1
add Hunderter,temp1
;nochmal x10
mov save1,Hunderter
mov temp1,Hunderter
add Hunderter,temp1
add Hunderter,temp1
add Hunderter,temp1
add Hunderter,temp1
add Hunderter,temp1
add Hunderter,temp1
add Hunderter,temp1
add Hunderter,temp1
add Hunderter,temp1
; die Hunderter stehe nun in save1 (low)/save2 (high)
; der Rest immer noch in save3, also:
add save1,save3
mov Ziel_low,save1
mov Ziel_high,save2
Ich hab's nicht getestet, probier's mal!
Sebastian