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 22:10 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 22:10
       
      Czy kombinacje %01 i %11 też występują?
      • 3: CommentAuthorxxl
      • CommentTime2 Oct 2014 23:10
       
      Jesli tylko kombinacje 10 na 01 to w dwoch bajtach:

      ALR #%10101010
      • 4:
         
        CommentAuthorxeen
      • CommentTime2 Oct 2014 23:10
       
      nie występuję
      to w praktyce zamiana koloru w bajcie "jednokolorowym".
      • 5: CommentAuthormono
      • CommentTime2 Oct 2014 23:10 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 23:10 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 23:10 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 09:10
       
      albo krocej:

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

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