Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Speicherzugriff, Code im Segment 8 Kategorie: Progr. Assembler, TaskingTools, OS (von Hansi - 1.11.2004 13:32)
Als Antwort auf Re: Speicherzugriff, Code im Segment 8 von André H. - 28.10.2004 23:46
Ich nutze:
C-Control II Unit, C-Control II Station, CC2-Application-Board, OSOPT_V2

Hallo André,

der Vergleichbefehl war/ist schon korrekt geschrieben, dass die 1 in Worten eins wie ein
l ( el ) aussieht liegt am Zeichensatz.
Mit der Sprungmarke hast Du allerdings vollkommen Recht, ich habe nicht cc_SLT sondern cc_NE
im Programm benutzt.
Das Problem bleib allerdings bestehen, im Segment 8 läuft das Programm nicht, Im Segment 3 schon.
Wie ich das Programm in Segment 8 gekriegt habe?
Wie im Buch MSR mit C-Control II beschrieben, Hexcode in ein Integerarray geschrieben.
Low und Highbyte selbstverständlich getauscht und vor dem Programmcode jede Menge Nops.
Deshalb auch die Hohe Speicheradresse von dezimal 2000.

GruĂ? Hansi ...und wie geschrieben, in Segment 3 funzt es.


> 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.
>


    Antwort schreiben


Antworten:

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)