Autore Topic: aiuto assembly  (Letto 2633 volte)

input

  • Neo-iscritto
  • *
  • Post: 35
  • Gioco Preferito: arkanoid
aiuto assembly
« il: 02 Gennaio 2020, 10:56:55 »
salve ragazzi, sono un nuovo, poiche ho voglia di imparare l assembly , e sono alle prime armi,
chiedevo per favore qualche delucidazione sul perche
scrivendo questo piccolissimo programma in basic e in  assembly funziona , ma in codice macchina no,
(poiche secondo il mio  modesto parere, anche se laborioso fa capire come si programma in assembly.)
volevo sapere  dove sta l errore, perche sono bloccato , se non capisco non vado avanti
.  per una chiara comprensione  elenco i tre listati

grazie

BASIC 
10 for x=1 to 1000
20 poke 53280,x
30 next

ASSEMBLY
A2000 INC$ d020
A2003 JMP$ 2000
G2000

LM 
10 for l=49152 to 49156
20 read a
30 pokel,a: next
40 data 238,32,208,76,96
ready.
run
ready.
sys49152

0scur0

  • Neo-iscritto
  • *
  • Post: 35
  • Gioco Preferito: -
Re:aiuto assembly
« Risposta #1 il: 02 Gennaio 2020, 12:01:45 »
Punto primo: non puoi mettere valori maggiori di 255 in locazioni di memoria a 8 bit.
Punto secondo: la JMP prende 3 bytes, quindi il codice macchina e l'assembly relativo non corrispondono.
Punto terzo: per chiarezza, le prossime volte racchiudi il codice tra i tag code.

input

  • Neo-iscritto
  • *
  • Post: 35
  • Gioco Preferito: arkanoid
Re:aiuto assembly
« Risposta #2 il: 02 Gennaio 2020, 14:25:37 »
scusa la mia ignoranza,
ma per il primo punto , non riesco a seguirti, vuoi per favore farmi  notare dove ho messo questo valore superiore a 255 perche non ci arrivo .
per il secondo punto, vuoi farmi un esempio come si scrive il codice il LM
il terzo punto ho capito e non si ripetera piu
grazie
« Ultima modifica: 02 Gennaio 2020, 14:29:16 da input »

0scur0

  • Neo-iscritto
  • *
  • Post: 35
  • Gioco Preferito: -
Re:aiuto assembly
« Risposta #3 il: 02 Gennaio 2020, 14:44:27 »
per il primo punto , non riesco a seguirti, vuoi per favore farmi  notare dove ho messo questo valore superiore a 255 perche non ci arrivo .
grazie
Nel ciclo FOR del programma BASIC usi una variabile che assume tutti i valori interi da 1 a 1000, quindi...  :)
per il secondo punto, vuoi farmi un esempio come si scrive il codice il LM
Ogni istruzione assembly 65xx si traduce in un byte di opcode e un numero variabile di bytes (0,1 o 2) che rappresentano eventuali operandi. L'istruzione JMP prende un byte per l'opcode e 2 bytes per l'operando (l'indirizzo di salto a una locazione di memoria assoluta, nel formato basso/alto).

Detto questo non posso che rimandarti a un qualunque testo introduttivo sulla programmazione del C64 (personalmente consiglio la sempreverde "Commodore 64 Programmer's reference guide").
Un saluto

input

  • Neo-iscritto
  • *
  • Post: 35
  • Gioco Preferito: arkanoid
Re:aiuto assembly
« Risposta #4 il: 02 Gennaio 2020, 19:05:30 »
grazie molto per avermi aiutato,  sono riuscito nell intendo