Dyskusja:Inkrementacja i dekrementacja liczb wielobajtowych
From Atariki
(Różnice między wersjami)
| 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)
