Re: Speicherzugriff, Code im Segment 8 Kategorie: Progr. Assembler, TaskingTools, OS (von André H. - 28.10.2004 23:46) | ||
Als Antwort auf Speicherzugriff, Code im Segment 8 von Hansi - 23.10.2004 23:50 | ||
| ||
Hallo Hansi, > > mov R2,#2000 ; Anfangsspeicheradresse im Segment 8 > Loop1: mov R4,P1H ; Port einlesen > and R4,#0080h ; Bid 7 isolieren > shr R4,#7 ; und auf Bid 0 schieben > add r4,#30h ; ASCII erzeugen 0 / I > EXTS #8,#1 ; Speicherzugriff auf Segment 8 erzwingen > movb [R2],RL4 ; und ASCII im Speicher ablegen > cmpil r2,#48000 ; Schleifenzähler erhöhen und mit Endwert vergleichen > jmpr cc_SLT, Loop1 > pop R2 > pop R2 > rets > > > Das Problem: > Naja, das ausgelesene Integer-Array ( unter C2 ) zeigt keinerlei Veränderung. > Wohin werden die Daten bei meinem Programm geschrieben? Die Daten werden ab Adresse 0x2000 in Segment8 geschrieben, wie Du es in der Routine festlegst. Allerdings hast Du einen groben Fehler in Deiner Routine: cmpil r2,#48000 ; Schleifenzähler erhöhen und mit Endwert vergleichen jmpr cc_SLT, Loop1 Der Befehl sollte wohl cmpi1 hei�en, also compare and increment GPR by 1. Du willst zu Loop1 springen, solange R2 kleiner 48000 ist. Dummerweise machst Du einen Vorzeichenbehafteten Vergleich. Somit wird 48000 nicht als 48000 gewertet, sondern als -17536. Somit wird die Schleife bereits nach dem ersten Durchlauf verlassen. Damit das ganze so funzt, wie Du willst, darfst Du nicht auf SLT, sondern mu�t auf ULT prüfen. > Ich habe das Programm gerade probeweise in das Segment 3 geladen und siehe da > ES FUNKTIONIERT! ( leider nur im Segment 3 ) Das wundert mich aber ein wenig. Aber, wie hast Du die Routine in den RAM geladen ? (C2-Code) Vielleicht hast du z.B. high- und low-Byte vertauscht, oder die falsche Adresse als Einsprungadresse benutzt. �brigens macht es mittlerweile wenig Sinn, ASM-Routinen im RAM abzulegen. Seitdem es sehr einfach geworden ist, die Flashsegmente 1 bis 3 für ASM zu nutzen, gibt es nurnoch einen sinnvollen Grund für ASM im RAM: Und zwar zum testen von Routinenzur Laufzeit. D.h. auf der CC2 läuft ein Testprogramm, welches neue ASM-Routinen entgegenimmt und im RAM speichert, ohne da� ein neues Programm geladen wird. MfG André H. Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: Re: Speicherzugriff, Code im Segment 8 (von Hansi - 1.11.2004 13:32) Re: Speicherzugriff, Code im Segment 8 (von André H. - 5.11.2004 8:33) Re: Speicherzugriff, Code im Segment 8 (von Hansi - 5.11.2004 13:21) Re: Speicherzugriff, Code im Segment 8 (von André H. - 8.11.2004 13:10) Re: Speicherzugriff, Code im Segment 8 (von Hansi - 11.11.2004 10:28) Re: Speicherzugriff, Code im Segment 8 (von André H. - 11.11.2004 21:52) Re: Speicherzugriff, Code im Segment 8 (von Hansi - 11.11.2004 22:37) Re: Speicherzugriff, Code im Segment 8 (von André H. - 11.11.2004 23:23) Re: Speicherzugriff, Code im Segment 8 (von Hansi - 12.11.2004 7:31) Re: Speicherzugriff, Code im Segment 8 (von André H. - 19.11.2004 12:05) |