Dyskusja:Inkrementacja i dekrementacja liczb wielobajtowych

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 14:36, 4 wrz 2011
Mono (Dyskusja | wkład)
(rekurencyjny dec)
← Previous diff
Wersja z dnia 14:37, 4 wrz 2011
Mono (Dyskusja | wkład)
(formatowanie)
Next diff →
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)
Nieco inaczej z dec: Nieco inaczej z dec:
- ldx #-n-1+ ldx #-n-1
-?dec:+ ?dec:
- inx+ inx
- beq ?ret+ beq ?ret
- lda data-$100+n,x+ lda data-$100+n,x
- sne+ sne
- jsr ?dec+ jsr ?dec
- dec data-$100+n,x+ dec data-$100+n,x
- dex+ dex
-?ret:+ ?ret:
- rts+ 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) 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)

Wersja z dnia 14:37, 4 wrz 2011

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) 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)