ma=2^(7-(x and 7)) in ASM für 6502 ?

Gast #5881006
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
Moderator #5881041
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren