Per cortesia, prendi visione del
Regolamento, in particolare riguardo l'invio di immagini (art. 6). Sposto anche in Aiuto perché l'argomento si evolve verso le basi piuttosto che verso una produzione di codice (che è lo scopo della sezione Programmazione).
L'immagine che riporti, oltre a fare confusione tra operazioni di interi con segno e senza segno, non è corretta. La sottrazione 260-5=255 in binario viene scritta:
1 0000 0100 -
0000 0101 =
1111 1111
Torniamo all'esempio del puntatore in $FB (anche se poco realistico in questo caso). All'inizio hai
$FB: 04
$FC: 01
corrispondenti al byte basso e al byte alto di 260. Durante l'esecuzione di un blocco simile a quello di cui sopra si avrebbe:
LDA $FB ; A ora vale #$04
SEC ; imposta il flag carry
SBC #$05 ; ora A vale #$FF e il carry è resettato (prestito)
BCS noprest ; branch non eseguita, si passa alla DEC
DEC $FC ; ora il valore in $FC passa a #$00
.noprest
STA $FB ; e in $FB viene scritto #$FF
Se invece il valore in $FB fosse inizialmente #$08 (corrispondente alla sottrazione: 264-5=259), dopo la SBC nell'accumulatore sarebbe #$03, e il carry non sarebbe resettato (nessun prestito). Quindi la BCS eseguirebbe il salto alla STA, che scriverebbe #$03 in $FB, e la DEC non verrebbe eseguita, lasciando #$01 nella locazione $FC.