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 André H. - 5.11.2004 8:33)
Als Antwort auf Re: Speicherzugriff, Code im Segment 8 von Hansi - 1.11.2004 13:32
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0
Hallo Hansi,

> der Vergleichbefehl war/ist schon korrekt geschrieben, dass die 1 in Worten eins wie ein
> l ( el ) aussieht liegt am Zeichensatz.
Naja. Das muÃ? ich jetzt einmal glauben. ;-) (Obwohl: 1 I )

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

Gut. Du hast also ins "Blaue" geschrieben. ;-)
Das Buch ist leider nicht mehr Up to Date.
Es gibt folgende Möglichkeit, wie das ganze funzen mu�:
Du legst ein Byte-Array an und legst Dort die Routine ab.
Dann rufst Du die Funktion mem.getMemAddrByte(byte data[]) auf.
Als Rückgabewert erhälst Du die Startadresse des Arrays. Diese mu� gerade sein.
(Wenn nicht, vorher einfach noch eine Byte-Var definieren.)
Die Startadresse wäre nun gleichzeitig Deine Einsprungadresse.
Die Adresse zum speichern für Daten übergibst Du am besten über den Stack.(zweites Array)

In C2 sieht das dann so aus:
 inline function xy(byte data[], byte segment, byte code[])
{//  data ist das Datenarray
 // segment muÃ? 8 sein
 // code wäre das Bytearray mit den ASM-Code
 inline vmcodes.VM_SYSCALL;
}
...
byte asm[1024];
byte Daten[48000];
...
xy(Daten,8,asm);
..


In den ASM-Routinen kannst Du nun auf das Daten-Array zugreifen, indem Du Dir
die Startadresse vo Stack holst:

OSsegment       EQU     0
POP_R4          EQU     0765AH
PUSH_R12        EQU     075D6H
...
getxy   proc far
        CALLS   OSsegment,POP_R4        ;hole Array-Adresse vom Stack
        MOV     R2, R4
Loop1:
        MOV     R4, P1H
        AND     R4, #080h
        SHR     R4, #7
        ADD     R4, #030h
        EXTS    #8. #1
        MOVB    [R2], RL4
        CMPI1   R2, #48000
        JMPR    cc_NE, Loop1
        POP     R1
        POP     R1
        RETS                          
getxy   endp


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