Assembler Aufgabe



  • danke soweit, der nebel lichtet sich ein wenig .
    die letzte adresse ist $A006.

    wie setze ich nun diese befehle in maschinencode (opcode) um ?

    in dieser matrixartig aufgebauten befehlstabelle steht für

    LSR :

    Immediate
    Absolute .........4E
    Zero Page .........46
    Accumulator ......4A
    Implied.
    (Indexed,X)
    Indexed Y
    Zero Page, X......56
    Absolute, X.......5E
    Absolute Y
    Relative
    Indirect
    Zero Page,Y

    DEX:

    Implied..........CA

    BNE:

    Relative..........D0

    gruss und danke



  • Um die Sprungbefehle zu verstehen muss man wissen das der 6502 (und einige andere) noch "Seitenorientiert" sind.

    Eigendlich nichts anderes wie die Segmentierung beim 8086, nur das die Seiten 256 Byte gross sind.

    Standartmässig finden alle Zugriffe auf die aktuelle Seite stat.

    $A005 BNE $FC <- Ist bestimmt nicht Richtig.

    Muss mindestens

    $A006 BNE $FC heissen.

    FC ist unter anderem -4 . Dh. Der Befehl heisst
    A006BNE4oderA006 BNE -4 oder A006 BNE A004



  • postete ich bereits, dass es richtig:

    $A006 BNE $FC heisst.

    aber ( für mich die gretchen frage ) wie komme ich jetzt zum OpCode ?





  • und wie heisst der OpCode zu
    $A004 LSR A

    etwa : 4E 46 4A 56 5E

    oder muss ich das binär hinschreiben ?
    oder den Akkumulator Inhalt beachten ?

    oder ist es sogar richtig ?

    sonnniger tag und danke



  • Der OpCOde steht in der Tabelle.
    Du must nur hinschauen.



  • entweder lässt sich hier ein gefrusteter ab oder jemand geilt sich an der unwissenheit anderer auf.

    klare frage : richtig oder falsch ?

    wenn richtig ok, wenn falsch bitte erklären und nicht so ein scheiss wie : hinschauen !



  • Der OpCode für "LSR A" steht deutlich in der oberen Tabelle: 4A.

    (oder wenn du die unteren Tabellen auseinandernehmen kannst, findest du LSR im Abschnitt mit "cc=10" als "aaa=010" - dazu gehört für dich der Adressmodus "Akkumulator:bbb=010" -> zusammen 01001010 = 4A)



  • frage wie kann ich eine Interruptgesteuerte Aufnahme von Messwerten
    code-technisch realisieren ?

    ich brauch dafür den Timer0, soweit bin ich schon, der soll mir in Echtzeit Stunden/ Minuten + die Messergebnisse auf dem LCD ausgeben

    Ich hab AVR und nen AT90s2313, mein Sensor ist ein DS18s20 auf einer
    1-Wire Verbindung hab auch schon die serielle Schnittstelle zu
    meinem Rechner geschaffen fehlt mir halt nur noch der Timer

    danke schon mal für die hilfe



  • vielen dank , kurze zusammenfassung meinerseits :

    $A000 LDX #02........Opcode:A2(2Byte)02........Opcode : A2 (2Byte) A002 LDA #70........Opcode:A9(2Byte)70........Opcode : A9 (2Byte) A004 LSR A ..........Opcode : 4A (1Byte)
    A005DEX............Opcode:CA(1Byte)A005 DEX ............Opcode : CA (1Byte) A006 BNE $FC.........Opcode : D0 (2Byte)

    Das heisst, das ganze "programm" benötigt 8 Byte ?

    Gruss und Danke



  • Fast:

    $A000 LDX #02........Opcode:A2,02(2Byte)02........Opcode : A2,02 (2Byte) A002 LDA #70........Opcode:A9,70(2Byte)70........Opcode : A9,70 (2Byte) A004 LSR A ..........Opcode : 4A (1Byte)
    A005DEX............Opcode:CA(1Byte)A005 DEX ............Opcode : CA (1Byte) A006 BNE $FC.........Opcode : D0,FC (2Byte)



  • danke allen zusammen


Anmelden zum Antworten