Dyskusja:Inkrementacja i dekrementacja liczb wielobajtowych
From Atariki
(Różnice między wersjami)
| Wersja z dnia 14:33, 4 wrz 2011 Mono (Dyskusja | wkład) (nieprzemyslane) ← Previous diff |
Wersja z dnia 14:36, 4 wrz 2011 Mono (Dyskusja | wkład) (rekurencyjny dec) Next diff → |
||
| Linia 8: | Linia 8: | ||
| ?ret: | ?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. [[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: | ||
| + | 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). [[Użytkownik:Mono|Mono]] 16:36, 4 wrz 2011 (CEST) | ||
Wersja z dnia 14:36, 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)
