Re: Parameter schreiben? Kategorie: Programmierung Assembler (von PeterS - 8.07.2010 16:10) | |
Als Antwort auf Parameter schreiben? von Robert - 30.06.2010 14:11
| |
> Hallo, > > ich versuche gerade, mir mit Assembler eine Funktion zu schreiben, die mir aus einem Float alle vier > Bytes in ein Byte-Array schreibt. Folgender Code zum Laden scheint zu funktionieren: > MOVW R30, R10 ; lade ram top > LDD R22, Z+0 ; lade erstes byte in R22 > LDD R23, Z+1 > LDD R24, Z+2 > LDD R25, Z+3 ; lade letztes byte in R25 > MOVW R30, R6 ; 4 bytes auf parameter stack > ADIW R30, 4 > MOVW R6, R30 > ST Z+, R24 ; schreibe 3. byte + 4. > ST Z, R25 > Lädt die vier Bytes in die Register und schreibt die beiden oberen Bytes als Rückgabewert. In dem > Integer ist dann alles korrekt. Leider sind Arrays als Rückgabeparameter einer Funktion nicht erlaubt. > Deshalb wollte ich ein Array (in der Reihenfolge vor dem Float) an die Funktion übergeben und dort > mittels > STD Z+4, R22 > STD Z+5, R23 > STD Z+6, R24 > STD Z+7, R25 > reinschreiben. Das funktioniert nicht. Aber warum? Ist doch in der Reihenfolge richtig? > > Vielen Dank im voraus. > > MfG, Robert Hallo Robert, ich habe eben Dir eine korrigierte asm Datei als email geschickt. Als �bergabeparameter steht an Z+4, Z+5 ein 16-Bit Pointer auf das float Array. Man lädt nun Z+4,Z+5 in das X-Register und kann darüber dann auf das Array zugreifen. LDD R26, Z+4 ; load lo byte from arr[] pointer into X LDD R27, Z+5 ; load hi byte from arr[] pointer into X ST X+, R22 ; store first byte in first byte of array with X increment ST X+, R23 ST X+, R24 ST X+, R25 Gruss Peter | |
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum