muhasebe programi

18 replies · 20,390 views

muhasebe programi
a += (j << 2);

bunu unutmuşum
lda Rj
       asl
       asl
       clc
       adc Ra
       sta Ra
muhasebe programi
Bu arada Endo bir uyarıda bulundu. Aşağıdaki kodda işaretlenen SEC komutuna gerek yok çünkü carry flag zaten set orda
[LEFT]loop   lda Ri
      cmp Rj
      beq out
      lda Ri
      cmp Rj
      bcs lighter
      [B][COLOR=red]sec[/COLOR][/B]
      sbc Rj
      sta Ri
      jmp loop
lighter
      lda Rj
      sec
      sbc Ri
      sta Rj
      jmp loop
out[/LEFT]

ışaretli satırı uçurabilirsiniz. Kalsa da problem değil, 1 byte uzatır yalnızca 🙂
muhasebe programi
ellerinine (ellerinize) saglik.. yine tahminimden daha kucuk code'lar cikti.. niyeyse daha uzun bisi bekliyordum ve c64'u kucumsedigim icin utandim 🙂
muhasebe programi
64'de asm kodları çok uzun olmaz. 256b falan kasılabilir kolayca.
8086'ya göre kod uzunluğu açısından en büyük dezavantajı tek bir komutla (mov) load/store yapılamamasıdır. Bu tür işlemler için lda,sta ldx,stx, ldy,sty gibi iki komut gerekir.
Bir de sonradan eklenen "shr ax,2" gibi birden fazla shiftingi tek komutla halletme özelliği de yok ancak yanlış bilmiyorsam eskiden 8086 standartlarında da bu yoktu sonradan eklendi.
Kıyaslama tabii ki kod uzunluğu açısından. Yoksa MMX, FPU v.s. olayına hiç girmeyelim commodore assemblerında mul, div v.s. bile yok bırakın fsin'i cartı curtu.