Dyskusja:Inkrementacja i dekrementacja liczb wielobajtowych

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 14:31, 4 wrz 2011
Mono (Dyskusja | wkład)

← Previous diff
Aktualna wersja
KMK (Dyskusja | wkład)

Linia 9: Linia 9:
gdzie n to ilość bajtów w liczbie LSB..MSB, analogicznie oczywiście można zastępując inx na dex potraktować liczby MSB..LSB. Dla ZPG obcinamy -$100. [[Użytkownik:Mono|Mono]] 16:26, 4 wrz 2011 (CEST) gdzie n to ilość bajtów w liczbie LSB..MSB, analogicznie oczywiście można zastępując inx na dex potraktować liczby MSB..LSB. Dla ZPG obcinamy -$100. [[Użytkownik:Mono|Mono]] 16:26, 4 wrz 2011 (CEST)
-Analogicznie dekrementacja:+::No, to ładne, nie pomyślałem o tym. Chyba można wkleić :) [[Użytkownik:KMK|KMK]] 06:31, 5 wrz 2011 (CEST)
 + 
 +Nieco inaczej z dec:
ldx #-n-1 ldx #-n-1
- ?chk:+ ?dec:
inx inx
 + beq ?ret
lda data-$100+n,x lda data-$100+n,x
- beq ?chk+ sne
- ?dec:+ jsr ?dec
dec data-$100+n,x dec data-$100+n,x
dex dex
- bne ?dec+ ?ret:
-[[Użytkownik:Mono|Mono]] 16:31, 4 wrz 2011 (CEST)+ rts
 +Niestety angażuje stos :/ (mając tę procedurkę myślałem, jak ją przerobić na iteracyjną, ale zrobiłem to za szybko - dlatego usunąłem poprzednie przemyślenia). [[Użytkownik:Mono|Mono]] 16:36, 4 wrz 2011 (CEST)
 + 
 +::To że stos angażuje, to jest drobiazg - gorzej, że zajmuje aż 18 bajtów. A pętla pokazana w haśle - tylko 14. [[Użytkownik:KMK|KMK]] 06:31, 5 wrz 2011 (CEST)

Aktualna wersja

A co myślałbyś o takim fragmencie:

  ldx #-n-1
?loop:
  inx
  beq ?ret
  inc data-$100+n,x
  beq ?loop
?ret:

gdzie n to ilość bajtów w liczbie LSB..MSB, analogicznie oczywiście można zastępując inx na dex potraktować liczby MSB..LSB. Dla ZPG obcinamy -$100. Mono 16:26, 4 wrz 2011 (CEST)

No, to ładne, nie pomyślałem o tym. Chyba można wkleić :) KMK 06:31, 5 wrz 2011 (CEST)

Nieco inaczej z dec:

  ldx #-n-1
?dec:
  inx
  beq ?ret
  lda data-$100+n,x
  sne
  jsr ?dec
  dec data-$100+n,x
  dex
?ret:
  rts

Niestety angażuje stos :/ (mając tę procedurkę myślałem, jak ją przerobić na iteracyjną, ale zrobiłem to za szybko - dlatego usunąłem poprzednie przemyślenia). Mono 16:36, 4 wrz 2011 (CEST)

To że stos angażuje, to jest drobiazg - gorzej, że zajmuje aż 18 bajtów. A pętla pokazana w haśle - tylko 14. KMK 06:31, 5 wrz 2011 (CEST)
Personal tools