Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > 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: <asm> 1 I </asm>) > > > 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 <code>mem.getMemAddrByte(byte data[])</code> 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: > <code> 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); > ..</code> > > In den ASM-Routinen kannst Du nun auf das Daten-Array zugreifen, indem Du Dir > die Startadresse vo Stack holst: > <asm> > 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 > </asm> > > MfG André H.