Forum: Mikrocontroller und Digitale Elektronik ma=2^(7-(x and 7)) in ASM für 6502 ?


von Peter Bierbach (Gast)


Lesenswert?

Hallo, guten Tag.
Ich brauche bitte Hilfe für eine Umwandlung für den 6502 in ASM:

ma=2^(7-(x and 7))

Wer kann mir Helfen , das bitte umzusetzen in ASM?

Danke.
Gruss

: Verschoben durch Admin
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist eine Zweierpotenz.

Sieh mal in Deinem Assemblerhandbuch nach, was der Befehl ASL macht.

von MaWin (Gast)


Lesenswert?

So ungefähr. Es ist egal ob erst subtrahiert und dann maskiert, da der 
6502 keinen barrel shifter hat muss eine Schleife um 1 bit zu einer Zeit 
schieben. Dabei schiebt man 1 mal mehr damit man zumindest 1 x durch die 
Schleife muss und schiebt das 1 bit aus dem carry in den A. Ergebnis in 
A.

LDA #$07
CLC
SBC x
AND #$07
TAX
INX
LDA #$00
STC
loop: ROL
DEX
BNE loop

von Yalu X. (yalu) (Moderator)


Lesenswert?

Oder mit Tabelle (es sind ja nur 8 verschiedene Werte möglich):

1
      lda x
2
      and #$07
3
      tax
4
      lda tab,x  ; in A steht nun das Ergebnis
5
6
tab:  .byte $80, $40, $20, $10, $08, $04, $02, $01


Oder MaWins Vorschlag etwas gestrafft:
1
      lda x
2
      and #$07
3
      tax
4
      lda #$00
5
      sec
6
loop: ror
7
      dex
8
      bmi loop

: Bearbeitet durch Moderator
von Peter Bierbach (Gast)


Lesenswert?

Danke.
Es funktioniert beides.

Gruss

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.