Linguaggio assembler: alcune domande

Messaggioda Bandit » 09/09/2005, 11:01

Ho da poco incominciato astudiare il linguaggio assembler per il motorola 68000.Per il momento vi pongo solo 2 domande, nonostante il titolo, però conoscendomi ed essendo all'inizio, ce ne saranno sicuramente delle altre.
Allora veniamo "ai punti":
1) La codifica dell'istruzione MOVE B,D2 è costituita da una stringa di quanti bit? come faccio a saperlo? quale è il ragionamento? il risultato riporta 48 bit: come ha fatto?



2) Le estensioni dei due indirizzi su 16 bit $2011 e $C044 su indirizzi a 32 bit generano rispettivamente gli indirizzi......quale indirizzi generano? il risultato è

$00002011 e $FFFFC044, perchè?
Bandit
Senior Member
Senior Member
 
Messaggio: 319 di 1662
Iscritto il: 01/02/2005, 12:27
Località: Italy

Messaggioda Bemipefe » 19/09/2005, 10:24

Guarda caro "Bandit"....io ho studiato l'Assembler MIPS ma sinceramente non mi hanno detto come poi ogni istruzione assembler viene tradotta in linguaggio binario.

Quindi non saprei ......quanti bit occupa un istruzione del genere. Tuttavia se sai quanto #232; largo il buffer dell'architettura 68000 motorola puoi affermare che sia quella l'entit#224; di un sitruzione generica. Ossia Ogni istruzione in una CPU occupa lo stesso spazio di un altra.....quindi non importa che istruzione sia ma l'entit#224; dell'istruzione supportato dalla macchina.


Per esempio mi sembra che i calcolatori moderni hanno istruzioni da 64 bit e quindi ogni istruzione ha quella entit#224;, poi come tu saprai una stringa binaria che #232; un istruzione si divide in varie parti......una parte serve per codificare gli indirizzi in memoria un altra parte per la codifica dei dati etc,,,fino a che ogni pezzo sommandosi forma la lunga stringa da 64 bit.

Un consiglio quindi studiati l'Architettura di un Calcolatore cos#236; capisci meglio cos'#232; un istruzione in linguaggio binario.

Per la seconda domanda non s#242; rispondere perch#232; non conosco il significato di $2011e $C044......nell'assembler che ho studiato io il "dollaro" $ serviva per contrassegnare un registro interno alla CPU ad esempio registro $t0, registro $t1 etc....

CIAO!

<b><u>Bemipefe</u></b>
Avatar utente
Bemipefe
Average Member
Average Member
 
Messaggio: 208 di 538
Iscritto il: 12/06/2005, 19:03
Località: Italy

Messaggioda Rael » 25/09/2005, 09:04

Ciao, tuttora programmo in assembler 8086 (IA-32), però quello del motorola credo sia un po' differente.
Ora iniziando dalla fine, i tuoi due indirizzi sono scritti in esadecimale, ed utilizzato il complemento a 2 per memorizzare l'informazione sul segno. (-x = !(x)+1).
ora, dato che sono codificati in esadecimale, per iniziare dovresti tradurli in binario per capirci davveroqualcosa
(2011)hex=(0010000000010001)bin
(c044)hex=(1100000001000100)bin
vediamo subito che il bit di segno dei due numeri (il bit più significativo, alias bit più sulla sinistra) è opposto, 0 nel primo caso, 1 nel secondo (quindi il secondo numero è negativo)
ora il gioco è fatto, per l'estensione, l'indirizzo in sè occuperà i 16 bit meno significativi, mentre gli altri 16 verranno riempiti tutti con il bit di segno dell'indirizzo che si vuole estendere
da cui
ext((2011)hex)=(00000000000000000010000000010001)bin
ext((c044)hex)=(11111111111111111100000001000100)bin
ricodificando indietro in esadecimale ottieni proprio i due numeri che ti vengono forniti come risultato.


per la codifica della move dovresti invece vedere proprio la documentazione per l'assembly del processore con cui lavori, altrimenti non hai modo di saperlo, ogni processore, codifica i comandi secondo una propria logica, il MIPS è diverso dall 8086, che è diverso dal motorola 68000

P.s. non capisco perchè nelle università italiane si ostinino a studiare il mips, che poi effettivamente non viene usato se non in alcune macchine dedicate esclusivamente per fare della grafica ... mah ...
Rael
New Member
New Member
 
Messaggio: 74 di 87
Iscritto il: 08/10/2004, 21:23
Località: Italy

Messaggioda tony » 18/11/2005, 10:45

Bemipefe ha scritto:... Ossia Ogni istruzione in una CPU occupa lo stesso spazio di un altra.....


scusa, ma ho l'impressione che questa affermazione sia decisamente errata,
anche per il processor 68000 (che non conosco)
tony
tony
Average Member
Average Member
 
Messaggio: 781 di 873
Iscritto il: 10/11/2005, 23:47
Località: milano


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite