Also ich habe mal Dein Programm angeschaut. Wenn Du es als das postest,
was es ist, nämlich als .asm Datei, dann schauen sicher mehr Leute
rein. .doc macht doch kein Mensch freiwillig auf, und bei .bak weiss
man von aussen auch nicht, ob es asm oder C ist.
Die Parameterübergabe an das interne Rechenwerk sieht recht merkwürdig
aus, den einen Parameter übergibst Du als 16-Bit-Wert, aber den
anderen??
multi: mov r2, #020h ; R2 mit Multiplikator 32d laden
mov r3, #020h ; R3 mit Multiplikator 32d laden
mov MD0, R0 ; Arithmetik-Register laden
mov MD4, R1 ;
mov MD1, R2 ;
mov MD5, R3 ;
; Start der Multiplikation
nop ; 4 Takte warten
nop ;
nop ;
nop ;
;
mov R4, MD0 ; Ergebnis auslesen
mov R5, MD1 ;
mov R6, MD2 ;
mov R7, MD3 ;
ret ;
Dass in R2 und R3 dieselbe Konstante drinstehen muss, kann ich mir fast
nicht vorstellen. Im High-Byte muss doch eher NULL sein? Ich habe aber
keine Doku zu der CPU mehr, habe ich früher mal benutzt, ist schon ne
Weile her.
Beim Dvidieren hast Du noch 20h statt 150 drinstehen.
Zum Testen solltest Du statt Deinen Messwerten erstmal feste Werte
nehmen, bei denen Du weisst, was rauskommen soll. Dann kannst Du Deine
Rechnung besser verifizieren.
Stefan