Vai al contenuto
Il server del mese è
Visita la nostra nuova lista server!

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

N1xx1

Dcpu Tutorial

Recommended Posts

Non ho capito una ceppa dalla guida (Senz'offesa)

Cioè, non capisco niene di quello che dite...

"SET A, 0" Che significa? cioè non capisco nulla dei comandi e dei numeri :mellow:

SET a, b : assegna ad a il valore di b

Cosa non hai capito?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Cosa cambia da

SET PC, NomeFunzione

a

JSR NomeFunzione

?

Edit:

Grazie mille n1, grazie al tuo programma delle linee, sono riuscito a creare questo piiiicccccooollo programma :D

http://0x10co.de/ebs5w

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Forse sono io che ti ho confuso.

Un conto è il numero. Un conto è il carattere che stampi.

0 è 0x0030 (colore a parte)

5 è 0x0035

Ma quelli sono i caratteri!

Tu stai facendo '0'+'5' non 0+5.

Quello che puoi fare è calcolarti il numero

SET A,0

ADD A,5

Ora A vale 5.

Come fai a stampare un numero?

Esempio generale: prendi B e lo setti al carattere 0

SET B,0xf030

Ora se sai che A è minore di 10 basta fare

ADD B,A

SET [0x8000], B

e sei a posto

Se A è maggiore di 10.. ma minore di 100

SET A, 0x000f;

SET C, A ; mi salvo il numero

DIV C, 10; divido per 10 (es. 94 /10 = 9)

;ora C contiene la prima cifra

MOD A, 10; prendo il resto della divisione (94 mod 10 = 4)

;ora A contiene la seconda cifra

;ora ho le singole cifre devo trasformarli in caratteri

SET B,0xf030

ADD C,B

ADD A,B

SET [0x8000],C

SET [0x8001],A

Per un numero generico non è molto più complicato basta fare i diversi casi usando ifg.. prova a faro tu :) (nota che al massimo si arriva a 65536)

Ma 0x000f che numero è?

Inoltre il primo programma (quello da una sola cifra) mi da sempre come output 0, ma per una frazione di secondo mi fa anche vedere il risultato (stessa cosa nel secondo), come mai???

Grazie per la pazienza ^_^

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Cosa cambia da

SET PC, NomeFunzione

a

JSR NomeFunzione

?

Edit:

Grazie mille n1, grazie al tuo programma delle linee, sono riuscito a creare questo piiiicccccooollo programma :D

http://0x10co.de/ebs5w

Poco.

SET PC, LABEL

sposta il pc a LABEL

Ma poi come fai a tornare indietro?

JSR LABEL

Sposta il pc a LABEL

ma prima fa SET PUSH, PC

in questo modo per tornare indietro sarà sufficiente fare

SET PC, POP

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ma 0x000f che numero è?

Inoltre il primo programma (quello da una sola cifra) mi da sempre come output 0, ma per una frazione di secondo mi fa anche vedere il risultato (stessa cosa nel secondo), come mai???

Grazie per la pazienza ^_^

Quello succede perchè il programma ricomincia dall'inizio, basta mettere un BRK alla fine e si interrompe.

0x000f è 15, https://www.google.c...000f+to+decimal

http://0x10co.de/skt8h questo converte e stampa un numero.

Si potrebbe ampliare per avere basi maggiori di 10..

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Semplicissimo.

Basta operare con la ram. Gli indirizzi da 0x8000 a 0x81FF corrispondono ognuno a un carattere nello schermo (in 0x10co.de vanno da 0x800 a 0x817F). Per stampare un carattere devi assegnare alla posizione una cosa del tipo:

hrgb hrgb h ccccccc

Dove il primo hrgb è il colore del carattere, il secondo hrgb è il colore dello sfondo, h è se il carattere deve lampeggiare e c è il valore ascii del carattere.

Per esempio:

SET [0x8000], 0xF030

Stamperà uno zero bianco su sfondo nero alla posizione 0.

Grazie! Mi inizia a piacere questo "linguaggio"

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ma... come fai a far lampeggiare il carattere? o.O comunque anche a me sta piacendo un casino, anche se sto facendo solo delle piccolissime cose xD

Edit. Altra cosa, come faccio a mettere un input scelto dall'utente? Cioè, io dalla console inserisco che so, un numero qualsiasi e poi lo uso per farci operazioni di vario genere. Che comando bisogna usare? Grazie ancora ^_^

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ma... come fai a far lampeggiare il carattere? o.O comunque anche a me sta piacendo un casino, anche se sto facendo solo delle piccolissime cose xD

Edit. Altra cosa, come faccio a mettere un input scelto dall'utente? Cioè, io dalla console inserisco che so, un numero qualsiasi e poi lo uso per farci operazioni di vario genere. Che comando bisogna usare? Grazie ancora ^_^

Sono nei registri 0x9000 fino a 0x900f

Se guardi nei post da qualche parte n1 spiega come leggere.. ora sono di fretta a dopo

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ma... come fai a far lampeggiare il carattere? o.O comunque anche a me sta piacendo un casino, anche se sto facendo solo delle piccolissime cose xD

Edit. Altra cosa, come faccio a mettere un input scelto dall'utente? Cioè, io dalla console inserisco che so, un numero qualsiasi e poi lo uso per farci operazioni di vario genere. Che comando bisogna usare? Grazie ancora ^_^

Non lo fai lampeggiare tu, lampeggia da solo. In pratica ogni carattere ha il suo corrispettivo lampeggiante.

Quello che vuoi fare è abbastanza complesso per iniziare...

Devi ascoltare tutti gli input e raccoglierli in una porzione di ram, poi i numeri li devi convertire dalla forma 0x35 a 0x5 (da ascii a numero) e poi ci puoi fare tutte le operazioni che vuoi.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

OMG troppo complesso, sono ancora al livello 0.5 io xD Qualcosa di semplice per esercitarsi?

Non lo fai lampeggiare tu, lampeggia da solo. In pratica ogni carattere ha il suo corrispettivo lampeggiante.

Quello che vuoi fare è abbastanza complesso per iniziare...

Devi ascoltare tutti gli input e raccoglierli in una porzione di ram, poi i numeri li devi convertire dalla forma 0x35 a 0x5 (da ascii a numero) e poi ci puoi fare tutte le operazioni che vuoi.

Ma... la funzione JSR a cosa serve (c'è in tutti i programmini fighi e voglio usarla xD)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

OMG troppo complesso, sono ancora al livello 0.5 io xD Qualcosa di semplice per esercitarsi?

Ma... la funzione JSR a cosa serve (c'è in tutti i programmini fighi e voglio usarla xD)

JSR X esegue:

SET PUSH, PC

SET PC, X

Cioè: salva la riga in cui ti trovi, e va alla riga che dici tu.

Per tornare indietro puoi quindi scrivere

SET PC, POP.

p.s.

http://0x10co.de/9ex66

75 cicli per convertire e stampare 255 in base 10, sfido a fare meno cicli (permettendo di avere basi >10)!

Vediamo chi ci riesce!

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Io non riesco a far fare il blink, come si fa? (Ho provato ad aggiungere 0x0080 ma niente)

(in modo automatico intendo)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Io non riesco a far fare il blink, come si fa? (Ho provato ad aggiungere 0x0080 ma niente)

(in modo automatico intendo)

faaabio senti, io vorrei imparare l'assembly e più che te non potevo contattare.

tu sei in poche parole il "programmatore" della community.

Ho letto questa discussione ma non capisco niente.

Ora, potresti linkarmi dei manuali o preferibilmente degli esercizi sia in inglese ma preferibilmente in italiano?

Con esercizi intendo cose come (esempio): 2+2=4, quanto fa 2+3 ? Ovviamente riguardanti l'assembly.

Grazie :D

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

no ragazzi, l'assembly è demoniaco come linguaggio... perchè non mette il C notch? D:

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Forse ho capito qualcosa.

Ho scritto "Ciao" mettendo questo:


SET [0x8000], 0xF043
SET [0x8001], 0xF069
SET [0x8002], 0xF061
SET [0x8003], 0xF06F

Ora, vorrei scrivere un'altra cosa andando a capo, però non so come andare sulla linea di sotto. Inoltre, se io scrivo qualcosa più lungo di nove lettere (Cioè fino a [0x8009]), come faccio a fare frasi più lunghe?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

no ragazzi, l'assembly è demoniaco come linguaggio... perchè non mette il C notch? D:

perchè il "C notch" è questo? :facepalm:

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Forse ho capito qualcosa.

Ho scritto "Ciao" mettendo questo:


SET [0x8000], 0xF043
SET [0x8001], 0xF069
SET [0x8002], 0xF061
SET [0x8003], 0xF06F

Ora, vorrei scrivere un'altra cosa andando a capo, però non so come andare sulla linea di sotto. Inoltre, se io scrivo qualcosa più lungo di nove lettere (Cioè fino a [0x8009]), come faccio a fare frasi più lunghe?

Da 0x8000 a 0x8020 è la prima riga.

Da 0x8021 a 0x8040 è la secondo, e così via.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Io non riesco a far fare il blink, come si fa? (Ho provato ad aggiungere 0x0080 ma niente)

(in modo automatico intendo)

Non devi aggiungere 0x0080, ma devi ORizzare.

Se sommi sballi tutto.

SET A, 0x0030 ;setto A come carattere 0

BOR A, 0x0080 ;or binario

ADD A, 0xF000 ;aggiungo info per stampare

Con i bit:

(0x30) 00110000 |

(0x80) 10000000 =

(0xB0) 10110000

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Da 0x8000 a 0x8020 è la prima riga.

Da 0x8021 a 0x8040 è la secondo, e così via.

Capito, grazie.

Però quando scrivo [0x8030] mi da la lettera a più della metà dello schermo.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Capito, grazie.

Però quando scrivo [0x8030] mi da la lettera a più della metà dello schermo.

0x sta per un numero esadecimale, la sequenza è:

0x8000

0x8001

0x8002

0x8003

0x8004

0x8005

0x8006

0x8007

0x8008

0x8009

0x800A

0x800B

0x800C

0x800D

0x800E

0x800F

0x8010

0x8011

Ecc ecc.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ora ho capito bene, grazie.

Ora, volevo fare una cosa del genere:


;Definisce le lettere
SET c, 0xF043
SET i, 0xF069
SET a, 0xF061
SET o, 0xF06F

;Definisce le posizioni
SET p1, [0x8000]

;Scrive le lettere
SET p1, c
SET [0x8001], i
SET [0x8002], a
SET [0x8003], o

Però mi da quest'errore:

Assembler error: Label p1 was not defined (address 9)

Why? èè

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Setti dove hai il tuo puntatore al carattere che vuoi blinkare, poi lo ORizzi con 0x80 e stampi.

Ma bisogna fare un loop!!

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ora ho capito bene, grazie.

Ora, volevo fare una cosa del genere:


;Definisce le lettere
SET c, 0xF043
SET i, 0xF069
SET a, 0xF061
SET o, 0xF06F

;Definisce le posizioni
SET p1, [0x8000]

;Scrive le lettere
SET p1, c
SET [0x8001], i
SET [0x8002], a
SET [0x8003], o

Però mi da quest'errore:

[/color]

Why? èè

Perché non puoi usare la variabile "p1". Hai solo i registri e le celle di ram.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ora ho capito bene, grazie.

Ora, volevo fare una cosa del genere:


;Definisce le lettere
SET c, 0xF043
SET i, 0xF069
SET a, 0xF061
SET o, 0xF06F

;Definisce le posizioni
SET p1, [0x8000]

;Scrive le lettere
SET p1, c
SET [0x8001], i
SET [0x8002], a
SET [0x8003], o

Però mi da quest'errore:

[/color]

Why? èè

puoi usare solo i registri

a,b,c,x,y,z,i,j

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ma bisogna fare un loop!!

Editato. Leggi ora.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

×
×
  • Crea Nuovo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.