Istituto Tecnico Industriale "Enrico Fermi"

Help On Chat

[Ritorna all'elenco sessioni]

Chat del 14 Maggio 2021 dalle 18:29:36 alle 19:13:12

Stefano SALVI
Eccoci qua...
Riccardo SEGALA
Buonasera
Aurora Maria GUERRERA
buonasera
Gabriele MASOTTO
Salve
Thomas BADIALI
Buonasera
Francesca ROSA
salve
Stefano SALVI
Buona sera. Cominciamo pure con le domande.
Gabriele MASOTTO
Partiamo dal presupposto che non ho capito nulla di nulla del nulla of the nulla of the NULL constant
Gaganpreet SINGH
Buona sera
Gabriele MASOTTO
Ok no scherzo
Stefano SALVI
Ma dai, Masotto...!
Mirko LANA
Buonasera
Riccardo SEGALA
allora, io volevo chiederle, se nel nostro modello lo stack parte dall\'alto e va verso il basso, l\'heap dove parte?
Aurora Maria GUERRERA
prof ma dopo i label, quando scriviamo il nome della variabile (VARIABILE: ) dopo i due punti mettiamo l\'indirizzo (es 33) ?
Ivan BERNARDI
Buonasera professore
Diego GRAZIATI
Buongiorgio
Stefano SALVI
Guerrera: Per definire una variabile potresti utilizzare una pseudoistruzione che sposti avanti il puntatore corrente di 1 posizione (se la variabile è di un byte, semplice).
Mattia CHINAGLIA
Salve prof
Aurora Maria GUERRERA
quindi ad esempio con EQU ?
Stefano SALVI
Quidni dopo la label metti la pseudoistruzione e la label prende come valore l\'indirizzo della variabile.
Gabriele MASOTTO
Io non ho capito come fa a sapere quale sia l\'indirizzo della variabile però
Diego GRAZIATI
Prof, lo stack, prima che possiamo "giocarci" con POPA e PUSHA, dobbiamo inizializzarlo al valore del PC, oppure deve essere caricato un valore dalla memoria, oppure entrambi, a nostra discrezione?
Riccardo SEGALA
Io volevo chiederle, se nel nostro modello lo stack parte dall\'alto e va verso il basso, l\'heap, per crescere farà il contrario, cioè va verso l\'alto, ma da dove parte?
Stefano SALVI
In altri casi potresti avere deciso la posizione della variabile (ad esempio per le "variabili" di I/O che dicevo in laboratorio stamattina) allora invece di usare una label, la variabile la definisci con un "=" o una "equ", perché l\'indirizzo è prederterminato.
Gabriele MASOTTO
Cioè se io scrivo VAR: 33 cosa vuol dire?
Aurora Maria GUERRERA
aahh ok va bene, sono due cose circa diverse va bene
Gabriele MASOTTO
O non vuol dire nulla?
Ed è sbagliato?
Ivan BERNARDI
quindi var= dice in che cella metto la var, var:.db la inizializza con un valore, var.blkb serve per metterla nella cella corrente?
Stefano SALVI
Masotto: ipotizziamo che tu metta le variabili alla fine dle programma. Quindi, la prima variabile è al primo indirizzo libelro dopo le istruzioni assembler. Tu usi la pseudoistruzione che "libera" una cella, quindi meti la nuova label e definsci al scecopnda variabile, e così viia.
Graziati: prima di PUSH e POP lo stack va inizializzato, am non la valor edel PC, ma alla fine di un\'area libera della memoria. Spesso all\'iultima cella di memoria installata.
Diego GRAZIATI
ok
Gabriele MASOTTO
Quindi sostanzialmente dopo i : cosa dovrei metterci?
Stefano SALVI
Andandf a rispondere un po\' a caso..
Diego GRAZIATI
Quindi poi decrementiamo con POPA o incrementiamo con PUSHA a nostro piacere
Stefano SALVI
Segala: se lo stack parte dall\'alto, diciamo dalla fine della mmemoria installata, e se le variabili statiche (definite con un nome nel programma, con le label) sono dopo l\'ultima istruzione, l\'heap parte dopo l\'ulitma variabile statica defintta.
Riccardo SEGALA
ahhh okok, è automatico, non devo inizializzarlo..
Diego GRAZIATI
Mi sfugge l\'effettiva utilità dello stack...
Riccardo SEGALA
Prof, poi volevo chiederle, per esercizio, io e dei compagni abbiamo scritto del microcodice che salva il valore di flags nello stack, se lo copio e incollo qui potrebbe dirmi se è giusto..?
Diego GRAZIATI
Si tratta di un PC, inizializzato all\'indirizzo dell\'ultima cella di memoria, nel nostro caso, che può sia incrementare che decrementare il proprio valore: questo, effettivamente, a cosa ci è utile?
Stefano SALVI
Guerrera: di solito prima della "equ" non ci sono i \':\'; al post della "equ" potrei avere "=" e i : ci starebbero male. Usare una \'=\' per definire lindirizo di ujna variabile è uno dei modi. In questo caso devo decidere l\'indirizzo esatto delle variabili ed ha senso solo per variabili particolari.
Aurora Maria GUERRERA
va bene prof, grazie ora ho capito
Gabriele MASOTTO
Facciamo così, può farci un esempio dove lei scrive una label e ci dice cosa fa?
Ivan BERNARDI
io non ho capito quando devo usare SetCARRY e ClrCARRY
Stefano SALVI
Masotto: VAR EQU 33 crea una costante di nome "var" e valore 33. Potei usarla come indirizzo di variabile, ma in questo caso dovrei aver deviso che la variabile la metto nella cella 33 ed essere sicuro che quella cella sia libera.
Gabriele MASOTTO
Ahhhh
Quindi sostanzialmente VAR EQU 33 vuol dire che va nella cella che contiene VAR (che penso a questo punto che sia specificata prima) e ci metto dentro 33?
Il valore
*
Stefano SALVI
Masotto: no. "VAR EQU 33" potrebbe siginficare (se 33 non è un numeor a caso) che ho deciso di creare una variabile VAR e ho deciso di metterla nella locazione 33 dlela memoria. Il valore ce lo metto o con un\'istruzione (ad esempio STA VAR) oppure con una peudoistruzione (ad esempio DB 33 ; define byte value)
Gabriele MASOTTO
Ah ok ora ho capito meglio
Riccardo SEGALA
Prof, poi volevo chiederle, per esercizio, io e dei compagni abbiamo scritto del microcodice che salva il valore di flags nello stack, se lo copio e incollo qui potrebbe dirmi se è giusto..?
Stefano SALVI
Per definire una variabile tramite una label mi serve una pseudoistuszione che metta un preciso valore in una cella di memporia (la inizializza) come .db oppure una pseudoistruizione che riservi solo lo spazio - ma lasciatemi un attimo che devo trovare il nome giusto dle nostro assembler.
Riccardo ARTONI
Tra gli argomenti c\'è "Categorie di istruzioni". Comprende anche le istruzioni di altre categorie?
Stefano SALVI
Le categorie di sitruzioni sono sempre quelle 5: trasferimento dati; aritmetico/logiche; Inpiut/otput; trasferimentod el controlle e controllo CPU
Ivan BERNARDI
io non ho capito quando devo usare SetCARRY e ClrCARRY
Stefano SALVI
La mpseudoistruzione che serve per "allocare" la variabile è .blkb <n> che sta per "blocco di byte" dove <n> è il numeor di byte da allocare
Gabriele MASOTTO
Ma io non ho capito, ci da da fare un esercizio dove dobbiamo scrivere istruzioni in assembly O NO?
La prego
Non faccia follie
Riccardo SEGALA
ha detto di no tipo 6 volte ahah
Gabriele MASOTTO
Ok
Non abbiamo un terrorista come prof
Grazie prof
Stefano SALVI
Bernardi: ad esempio potrebbe servirti una ClrCARRY priam di una somma dove vuoi essere sicuro che non i sia ujn riporto precedente (almeno ti servirebbe se non ci fosse una somma che già non lo considera) oppure nele oprazioni di shift con il carry, per decidrere che bit vuoi fare entreare (ma questa non so se la capisci senza spiegartela megio).
Riccardo SEGALA
Prof, poi volevo chiederle, per esercizio, io e dei compagni abbiamo scritto del microcodice che salva il valore di flags nello stack, se lo copio e incollo qui potrebbe dirmi se è giusto..?
Edoardo POLTRONIERI
prof quanti sono i metodi di indirizzamnto ?
Ivan BERNARDI
ok penso di aver capito grazie
Stefano SALVI
Masotto: non metto un esercizio di programmazione assemble, dove devi tradurre un algoritmi in instruzioni assembli (opcodes). C\'è un esercizio dove devi scriver il microcodice di un\'istruzione che ti descriverò, come abbiamo già fatto più volt ein classe e come ti ho fatto anche fare per casa.
Gabriele MASOTTO
Quindi non ci chiederà di scaldare il caffè in assembly
Buono
Stefano SALVI
Segala: cosa intendi per "non la salva"?
Poltornieri: dipende dal processore; intinseco, immediato, diretto, indiretto, indicizzato, registro e stack sono i più comuni; relativo e (da stamattina) pagina zero sono altri meno cimuni.
Masotto: direi proprio di no. Quello lo lacio per le prossime lezioni di laboratorio.
Edoardo POLTRONIERI
grazie prof
Riccardo SEGALA
Prof, poi volevo chiederle, per esercizio, io e dei compagni abbiamo scritto del microcodice che salva il valore di flags nello stack, se lo copio e incollo qui potrebbe dirmi se è giusto..?
Stefano SALVI
Tu prova...
Riccardo SEGALA
ok, allora per piacere non scrivete per 1 secondo
//Instruction fetch
PC=>AB
RD
WR(IR) INC(PC)
PC/=>AB /RD /WR(IR) /INC(PC)
SP=>AB FLAGS=>DB
WR
SP/=>AB FLAGS/=>DB /WR DEC(SP)
/DEC(SP)
non ho scritto dove finisce la instruction fetch, ma finisce al quarto ciclo..
comunque ho finito
Stefano SALVI
Quasi giusta. Dato che DEC(SP) lavora sul fronte di disccesa, lo puoi anticipare al ciclo prima (ma non è proprio un erore, è un warning...)
Riccardo SEGALA
aah va bene, grazie
Mirko LANA
Prof, se non ricordo male lo stack e l\'heap hanno uno spazio dedicato a loro diviso tra i due. Ma se lo stack cresce (quindi l\'indirizzo della cella viene decrementato) lo spazio dedicato all\'heap diminuisce o rimane lo stesso? La risposta che ha dato prima a Segala mi ha confuso e non poco visto che io avevo capito che la memoria affidata allo stack e all\'heap veniva spartito all\'inizio e non più modificato
Stefano SALVI
Lana: la memoria di stack e heap è condivisa. All\'inizio viene allocata e mai più modificata, ma non è DIVISA tra i due, benì CONDIVISA, qundi ognuno la usa partendo dalla sua parte e si deve stare attenti che non si incontrino...
Mirko LANA
Ah ok, grazie prof
Riccardo SEGALA
gg per me che confondo
Gabriele MASOTTO
Quindi sostanzialmente se lo Stack Pointer ciuccia più memoria rispetto all\'heap l\'heap ne avrà di meno mentre l\'altro tizio di più?
Stefano SALVI
Masotto: esattamente!!!
Gabriele MASOTTO
Sono forte :D
Stefano SALVI
Proviamo con l\'esempio di definizione di variabili?
Aurora Maria GUERRERA
in che senso?
Riccardo SEGALA
esatto ahah
Stefano SALVI
variabile1 = 3 ; variabile 1 "abita" nella cella 3 (probabilemnte è una cella di I/O mappato)
Aurora Maria GUERRERA
ah ok, quello che aveva detto prima giusto?
Stefano SALVI
variabile2: .db 33 ; variabile2 sta nella posizione corrente, è stata inizializzata a 33
Riccardo SEGALA
.db?
Aurora Maria GUERRERA
define byte value
Stefano SALVI
variabile3: .blkb 1 ; variabile3 sta alla posizione corrente (quella dopo variabile 2, se le ho scrite coì) enon è inizializzata
Gabriele MASOTTO
E 33 (variabile2: .db 33;) è Hex o Dec?
Stefano SALVI
array1: .blkb 4 ; array1 è un array non inizializzato di quattor celle, che comincia all\'insdirizzo corrente.
Riccardo SEGALA
ahhhh
io dico .blkb e un numero, che dice all\'assebler salta n celle?
quindi ho una label che punta a n spazi vuoti?
Gabriele MASOTTO
Quindi blkb serve a definire quante celle di fila prende una variabile ? (array di 4 celle consecutive)
Stefano SALVI
Masotto: probabilmente dec. L\'assemblatore ha le sue convenzioni per le basi dei numero, ma se metto un numero e vasta, è decimale per tutti.
Masotto: esattamente. Le celle sono "riservate" (allocate) ma non inizializzate.
Gabriele MASOTTO
ah ora ho capito
Stefano SALVI
Segala: certo, una label che punta an N spazi vuoti, come il nome diu un array in C, mi dicono...
Riccardo SEGALA
e .db a cosa serve?
Gabriele MASOTTO
Serve per mettere dentro alla var il valore
variabile: .db 33 -> dentro a variabile ci va 33?
Stefano SALVI
Segala: .db serve per inserire in memoria (nel programma) un byte con un certo valore, potrebbe essere ad esempio quello di una variabile inizializzata.
Gabriele MASOTTO
Alla cella allocata a variabile
Riccardo SEGALA
ahh
però prof
se faccio variabile: .db 33, l\'assembler salta quella parte?
Stefano SALVI
Segala:no, l\'assembler mette nell\'eseguibile il numero 33 in quella cella (variabile inzializzata) e si segna la label "variabile" con l\'indirizzo di quella cella.
Riccardo SEGALA
quindi non è un problema se poi arrivato lì non la salva?
Stefano SALVI
Seguardate il mio "programmone" trovate alla fine una serie di ".db" (anche se forse ho scritto solo i vvalori) che inseriscono uìin memopria una tabella costante di conversione tra numero e sua rappresentazione sul display.
Riccardo SEGALA
ahhh okok
quindi semplicemente non arriverò mai alla parte del programma con.db, a meno che non lo voglio?
Stefano SALVI
Bernardi: direi che è un buon riassunto.
Riccardo SEGALA
c\'è intendoi
se faccio var: .db
quando arrivo con il pc a quel punto
Stefano SALVI
Che, si è piantata?
Riccardo SEGALA
non è un problema se l\'assembler non fa in modo che salvi?

[Ritorna all'elenco sessioni]