Autore Topic: comprendere il mnemonico inc  (Letto 174 volte)

giuseppe

  • Neo-iscritto
  • *
  • Post: 9
  • Gioco Preferito: Dragon's Lair
comprendere il mnemonico inc
« il: 31 Luglio 2017, 13:32:36 »
Buongiorno, aono un nuovo iscritto da circa sei mesi, e questa e la prima volta che cerco di postare un argomento, a me interessante, poiche ho sempre desiderato programmare in linguaggio assembler  6502-6510 , e grazie a questo eccezionale  sito, dove ho potuto scaricare materiale utile al mio scopo .adesso chiedo lumi  su come risolvere  un problema in assembler:
 questo e il codice di cui non riesco a venirne fuori:
*=1000
Lda #$00   carico accumulatore con carattere @   (A=0)
Inc $0400   aggiungi 1 al valore contenuto nella locazione di memoria  $400
Sta$0400   scarico nell’accumulatore A il valore (poke1024,0+1 ) mi dovrebbe dare se ben ho capito
                  Poke1024,1 e stampare la lettera a, ma mi da sempre @
             Dove è l’errore , non andrò vanti, se prima non capisco questo problema
Rts   restituisce controllo al monitor
scusate se sono stato lungo, è grazie anticipatamente

percoco2000

  • Neo-iscritto
  • *
  • Post: 11
  • Gioco Preferito: Flimbo's Quest
Re:comprendere il mnemonico inc
« Risposta #1 il: 31 Luglio 2017, 17:29:51 »
Buongiorno, aono un nuovo iscritto da circa sei mesi, e questa e la prima volta che cerco di postare un argomento, a me interessante, poiche ho sempre desiderato programmare in linguaggio assembler  6502-6510 , e grazie a questo eccezionale  sito, dove ho potuto scaricare materiale utile al mio scopo .adesso chiedo lumi  su come risolvere  un problema in assembler:
 questo e il codice di cui non riesco a venirne fuori:
*=1000
Lda #$00   carico accumulatore con carattere @   (A=0)
Inc $0400   aggiungi 1 al valore contenuto nella locazione di memoria  $400
Sta$0400   scarico nell’accumulatore A il valore (poke1024,0+1 ) mi dovrebbe dare se ben ho capito
                  Poke1024,1 e stampare la lettera a, ma mi da sempre @
             Dove è l’errore , non andrò vanti, se prima non capisco questo problema
Rts   restituisce controllo al monitor
scusate se sono stato lungo, è grazie anticipatamente


Se leggo bene, tu incrementi il valore alla locazione $400, ma l'accumulatore resta al valore precedente. Il successivo STA mette il valore dell'accumulatore in $400 (poke1024,0).
Se, non ricordo male , non puoi incrementare l'accumulatore, ma devi sommare con una locazione di memoria..

giuseppe

  • Neo-iscritto
  • *
  • Post: 9
  • Gioco Preferito: Dragon's Lair
Re:comprendere il mnemonico inc
« Risposta #2 il: 31 Luglio 2017, 21:17:28 »
ancora ahime non ne vengo a capo, ma la logica e chiara ma il monitor , mi da sempre (@ - 1024,0) e non ( 1024,1) che 1 sarebbe l'incremeto.

io vorrei aggiungere 1 al contenuto della loc.1024  ) pertanto se prima era 1024,0,  dopo l'incremento dovrebbe darmi 1025,1

 leggo nell'istruzione del libro,  " Commodore 64 i segreti del linguaggio macchina  pagina 47 ultimo rigi" puttroppo non fa alcun esempio, le testuale parole:
inc$   aggiunge uno al valore contenuto in una determinata locazionen di memoria,   non mi dice di incrementare la locazione
 
chiedo

eregil

  • Administrator
  • Utente
  • *****
  • Post: 640
  • Gioco Preferito: Impossible Mission
Re:comprendere il mnemonico inc
« Risposta #3 il: 31 Luglio 2017, 22:43:54 »
A parte la macchinosità logica, come minimo dovresti notare che è errato l'ordine delle operazioni. Per intenderci, è come se in BASIC scrivessi:

Codice: [Seleziona]
LDA #$00  ; 10 A=0
INC $0400 ; 20 POKE 1024,(PEEK(1024)+1) AND 255
STA $0400 ; 30 POKE 1024,A
RTS       ; 40 END

per cui l'ultima POKE (in cui A vale ancora 0) sovrascrive il valore precedentemente incrementato di 1 (senza sapere cosa ci fosse, peraltro).

Se inverti la STA e la INC ottieni che il valore finale è 1 (perché incrementi lo 0 dopo averlo memorizzato).
Non rispondo a richieste private, di qualunque genere esse siano.
Per domande tecniche leggete le FAQ e usate l'apposito forum.
Per questioni amministrative contattate lo staff tramite il form Contatti sul sito.

giuseppe

  • Neo-iscritto
  • *
  • Post: 9
  • Gioco Preferito: Dragon's Lair
Re:comprendere il mnemonico inc
« Risposta #4 il: 01 Agosto 2017, 00:07:17 »
funziona perfettamente, invertendo lo sta con inc come gentilmente da te consigliato.
, pero adesso sono un po confuso. perche
  pensavo che inc  non avesse effetto su sta in quanto inc è l'ultimo mnemonico ad
essere eseguito.  puoi per favore delucidarmi su questo
grazie molto . devo studiare  di piu  :)

percoco2000

  • Neo-iscritto
  • *
  • Post: 11
  • Gioco Preferito: Flimbo's Quest
Re:comprendere il mnemonico inc
« Risposta #5 il: 01 Agosto 2017, 08:32:55 »

io vorrei aggiungere 1 al contenuto della loc.1024  ) pertanto se prima era 1024,0,  dopo l'incremento dovrebbe darmi 1025,1
 

Non capisco bene, vuoi incrementare il contenuto o anche la locazione? Hai scritto :
1024,0 e dopo 1025,1..........

Se vuoi incrementare solo il contenuto di $400, basta INC $400, STA $400, non serve.

giuseppe

  • Neo-iscritto
  • *
  • Post: 9
  • Gioco Preferito: Dragon's Lair
Re:comprendere il mnemonico inc
« Risposta #6 il: 02 Agosto 2017, 19:50:42 »
chiedo scusa   :) erroneamente scritta  1025,1 -  volevo scrivere 1024,1-
Si volevo solo incrementare il contenuto. e come mi aveva consogliato eregil,
funziona perfettamente. comunque rileggendo quello che eregil ha scritto, ho capito il meccanismo, grazie lo stesso