mov ax, bx
significa assegnare al registro AX il valore del registro BX.add ax, bx
significa sommare al valore contenuto in AX il valore contenuto in BX.Innanzitutto grazie per la celerità, e scusami per l'imprecisione.Ciao.
Non si tratta di "comandi basilari", ma di istruzioni. Ciascuna di quelle istruzioni ha un codice particolare, chiamato opcodes.
Non hai specificato l'architettura però, suppongo sia 8086 (le stesse considerazioni valgono per x86 e x64 comunque).
MOV è l'assegnamento.
mov ax, bx
significa assegnare al registro AX il valore del registro BX.
ADD è la somma.
add ax, bx
significa sommare al valore contenuto in AX il valore contenuto in BX.
Il discorso è analogo per SUB (sottrazione) e le altre istruzioni con due operandi.
Alcune istruzioni accettano un solo operando, come INC e DEC e sono rispettivamente l'incremento ed il decremento di 1 unità. E' difficile farti un elenco completo, ma se guardi sul sito di giobe2000 (tanto per citarne uno) trovi tutte le istruzioni della CPU 8086.
Un registro è una piccolissima memoria, e fa parte della CPU. Si tratta di memorie molto piccole: AX e gli altri registri sono a 16bit. Le architetture a 32bit hanno registri a 32bit (AX è stato esteso, ed ha preso il nome di EAX, così gli altri in maniera analoga) e quelle a 64bit hanno registri a 64bit.
Le istruzioni accettano operandi di tipo registro, memoria e di tipo immediato (un valore, direttamente).
Scrissi un articolo sul linguaggio macchina; la prima parte penso ti possa essere d'aiuto: https://forum.tomshw.it/threads/il-linguaggio-macchina-del-8086.580474/
Ps. sono andato un pò spedito, non ho tempo ora; se hai domande specifiche rispondo più tardi.
Guarda, non c'è molto da capire perché si tratta di operazioni davvero semplici ed elementari, prese in sé.Salve ragazzi, non riesco proprio a comprendere i comandi più basilari di Assembly (MOV,SUB,DEC,ADD,ecc.) tantomeno i vari registri.
Qualcuno di voi può aiutarmi con un elenco delle varie funzioni?
Ad esempio, perché se metto un'informazione in Al, va in AH?Guarda, non c'è molto da capire perché si tratta di operazioni davvero semplici ed elementari, prese in sé.
Ciò che invece è difficile è entrare nel paradigma, completamente diverso rispetto ad un linguaggio di alto livello: quelle "istruzioni" infatti, servono per costruire "comandi"
Inviato dal mio Nexus 5 utilizzando Tapatalk
Ad esempio, perché se metto un'informazione in Al, va in AH?
Perché si usa DX?
Salve ragazzi, non riesco proprio a comprendere i comandi più basilari di Assembly (MOV,SUB,DEC,ADD,ecc.) tantomeno i vari registri.
Qualcuno di voi può aiutarmi con un elenco delle varie funzioni?
Ne stiamo parlando in queste settimane.Conosci già l'architettura del microprocessore 8086/88 ? :skept:
Sai quali sono le modalità di funzionamento di un microcomputer a 16/32 bit ? ;)
Ne stiamo parlando in queste settimane.
Grazie mille.Allora se hai dubbi, domande o vuoi chiarimenti... chiedi. ;)
Sì, parlo al plurale perché lo stiamo studiando a scuola.Ma stai parlando di scuola? Perché usi il plurale?
E poi: hai dubbi sulle istruzioni, ma non ti è stato spiegato ancora nulla, non ti sembra un po' prestino per chiedere in un forum?
Inviato dal mio Nexus 5 utilizzando Tapatalk
Ti ringrazio per la precisione!Se non si conosce l'architettura hardware di un microprocessore non è possibile affrontare lo studio del "software" del microprocessore stesso in quanto le caratteristiche e, diciamo, la complessità del "set" di istruzioni a disposizione del sistema riflettono l'architettura dell'unità centrale e le potenzialità dei suoi "circuiti di calcolo" :sisi:
Tra l'altro da questo punto di vista esiste un'enorme differenza tra i sistemi a 8-bit e quelli a 16/32/64-bit, previsti per elaborazioni più complesse :sisi:
Vedremo in seguito l'architettura di un microprocessore a 8-bit: quello che per ora possiamo dire è che a ciascuna istruzione corrisponde univocamente un'operazione e in particolare le istruzioni di calcolo devono definire le variabili su cui operano :sisi:
Ogni variabile viene identificata da una cella di memoria che la contiene, ciò significa che la "selezione" di una variabile viene effettuata definendo l'indirizzo della locazione di memoria a cui tale variabile appartiene :D
Cosa significa tutto questo ? :look:
Significa che il "contenuto informativo" di un'istruzione è definito da due, per così dire, "strutture": il codice operativo, specifico per ciascuna operazione, e l'identificatore dell'operando (o degli operandi) coinvolto ;)
Generalmente le limitazioni dei circuiti di decodifica impongono l'utilizzo di un registro, di solito "l'accumulatore", come operando (ma anche come "destinatario" del risultato) in modo da ridurre il numero di operandi in memoria ad uno :asd:
Per farti un esempio, anche una semplice somma di due variabili implica la definizione di tre indirizzi delle variabili (i due addendi più la variabile "somma"), ciò che comporterebbe un "formato" abbastanza lungo :sisi:
Conviene "smembrare" l'operazione in tre istruzioni elementari: 1) carica il registro accumulatore con var1 (il primo addendo); 2) somma l'accumulatore con var2 (il secondo addendo); 3) memorizza il risultato var3 (variabile "somma") nell'accumulatore :D
Tutto ciò che ho scritto viene visto in un'ottica molto "semplificata" e del resto non è questa la sede adatta per poter affrontare questi argomenti: ne parlerò, tempo permettendo, più in dettaglio nei miei articoli dedicati alla Cibernetica, diciamo, "generale" :asd:
Per concludere vorrei ricordare che è importante conoscere le diverse modalità di indirizzamento delle istruzioni che, tra l'altro, determinano il "formato" di tali istruzioni e la lunghezza degli operandi ;)
A presto :)