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 - 5.11.2004 13:21)
Als Antwort auf Re: Speicherzugriff, Code im Segment 8 von André H. - 5.11.2004 8:33
Ich nutze:
C-Control II Unit, C-Control II Station, CC2-Application-Board, OSOPT_V2
Hallo André,

das werde ich so mal ausprobieren, momentan komme ich allerdings nicht dazu weil ich noch an dem
Projekt "FS20 gehorcht aufs Wort - Sprachsteuerung mit PC und CC2" arbeite.

Huch, jetzt habe ich ja schon wieder was verraten ;-)

GruĂ? Hansi    ...und es funktioniert :-D


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


    Antwort schreiben


Antworten:

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)