atarionline.pl ASM, Proste pytane o algorytm zamiany dwójek bitów - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1:
       
      CommentAuthorxeen
    • CommentTime2 Oct 2014 zmieniony
     
    Ok, wydaje mi się, że ze zmęczenia zacząłem robić niepotrzebnie jakieś cuda na kiju (brakuje mi kilku bajtów w planowanym rozmiarze procki) a rozwiązanie musi być mega banalne w tym banalnym przypadku.

    Jak najprościej, najkrócej (nie najszybciej!) i bez tablic prekalkulacyjnych zamienilibyście w bajcie pary bitów.

    Przykład:

    %10100000 na %01010000
    %10001000 na %01000100

    itp.

    czyli jak mam parę 10 to zamieniam ją na 01, 00 nie ruszam a w bajtach "podlegających obróbce" 00 występują.
    • 2: CommentAuthormono
    • CommentTime2 Oct 2014
     
    Czy kombinacje %01 i %11 też występują?
    • 3: CommentAuthorxxl
    • CommentTime2 Oct 2014
     
    Jesli tylko kombinacje 10 na 01 to w dwoch bajtach:

    ALR #%10101010
    • 4:
       
      CommentAuthorxeen
    • CommentTime2 Oct 2014
     
    nie występuję
    to w praktyce zamiana koloru w bajcie "jednokolorowym".
    • 5: CommentAuthormono
    • CommentTime2 Oct 2014 zmieniony
     
    jsr     *+3
    jsr *+3

    sta tmp
    and #%11
    beq do
    eor #%11
    beq do
    lda #%11
    tmp = *+1
    do:
    eor #0
    cmp #$80
    rol
    cmp #$80
    rol
    rts

    .A jest konwertowany, wartość N,Z,C jest zacierana. D może być dowolny.


    Edit: Hahaha. Xeeen - a:
    lsr a

    nie wystarczy?
    • 6:
       
      CommentAuthorxeen
    • CommentTime2 Oct 2014 zmieniony
     
    hahaha - człek zmęczony nie widzi oczywistości

    dla tego case wystarczy ;))))))


    dzięki XXL i Mono (ALR chyba bardziej pod Pina jako przykład ;)
    • 7: CommentAuthormono
    • CommentTime2 Oct 2014 zmieniony
     
    Nie ma za co :) Ale uniwersalny da się zapisać prościej:
    swp:
    pha
    and #%01010101
    asl
    sta tmp
    pla
    and #%10101010
    lsr
    tmp = *+1
    ora #0
    rts
    • 8: CommentAuthorxxl
    • CommentTime3 Oct 2014
     
    albo krocej:

    swp
    ldx #$55
    sax temp
    alr #$aa
    aso temp
    rts

    :D
    • 9: CommentAuthor0xF
    • CommentTime3 Oct 2014
     
    3x undocumented instruction combo!
    • 10: CommentAuthormono
    • CommentTime3 Oct 2014
     
    Niesamowite! I to jest świetny przykład na sensowne użycie nielegali. xxl mistrz!
    • 11:
       
      CommentAuthorjhusak
    • CommentTime3 Oct 2014
     
    Nie mam więcej pytań.
    • 12: CommentAuthorwegi
    • CommentTime10 Dec 2014
     
    OMG