Sistemi integrati - linguaggio assembly

I linguaggi Assembly sono stati sviluppati per fornire mnemonicso simboli per le istruzioni del codice a livello macchina. I programmi in linguaggio Assembly sono costituiti da mnemonici, quindi dovrebbero essere tradotti in codice macchina. Un programma responsabile di questa conversione è noto comeassembler. Il linguaggio assembly è spesso definito come un linguaggio di basso livello perché funziona direttamente con la struttura interna della CPU. Per programmare in linguaggio assembly, un programmatore deve conoscere tutti i registri della CPU.

Diversi linguaggi di programmazione come C, C ++, Java e vari altri linguaggi sono chiamati linguaggi di alto livello perché non si occupano dei dettagli interni di una CPU. Al contrario, un assemblatore viene utilizzato per tradurre un programma in linguaggio assembly in codice macchina (a volte chiamato ancheobject code o opcode). Allo stesso modo, un compilatore traduce un linguaggio di alto livello in codice macchina. Ad esempio, per scrivere un programma in linguaggio C, è necessario utilizzare un compilatore C per tradurre il programma in linguaggio macchina.

Struttura del linguaggio assembly

Un programma in linguaggio assembly è una serie di istruzioni, che sono istruzioni in linguaggio assembly come ADD e MOV o istruzioni chiamate directives.

Un instruction dice alla CPU cosa fare, mentre un file directive (chiamato anche pseudo-instructions) dà istruzioni all'assemblatore. Ad esempio, le istruzioni ADD e MOV sono comandi che la CPU esegue, mentre ORG e END sono direttive assembler. L'assembler posiziona il codice operativo nella posizione di memoria 0 quando viene utilizzata la direttiva ORG, mentre END indica la fine del codice sorgente. Un'istruzione nel linguaggio del programma è composta dai seguenti quattro campi:

[ label: ]   mnemonics  [ operands ]   [;comment ]

Una parentesi quadra ([]) indica che il campo è facoltativo.

  • Il label fieldconsente al programma di fare riferimento a una riga di codice in base al nome. I campi dell'etichetta non possono superare un certo numero di caratteri.

  • Il mnemonics e operands fieldsinsieme svolgono il vero lavoro del programma e portano a termine i compiti. Dichiarazioni come ADD A, C & MOV C, # 68 dove ADD e MOV sono gli mnemonici, che producono opcode; "A, C" e "C, # 68" sono operandi. Questi due campi potrebbero contenere direttive. Le direttive non generano codice macchina e sono usate solo dall'assemblatore, mentre le istruzioni sono tradotte in codice macchina per l'esecuzione della CPU.

1.0000         ORG  0H            ;start (origin) at location 0 
2 0000 7D25    MOV  R5,#25H       ;load 25H into R5 
3.0002 7F34    MOV  R7,#34H       ;load 34H into  R7 
4.0004 7400    MOV  A,#0          ;load 0 into A 
5.0006 2D      ADD  A,R5          ;add contents of R5 to A 
6.0007 2F      ADD  A,R7          ;add contents of R7 to A
7.0008 2412    ADD  A,#12H        ;add to A value 12 H 
8.000A 80FE    HERE: SJMP HERE    ;stay in this loop 
9.000C END                        ;end of asm source file
  • Il comment field inizia con un punto e virgola che è un indicatore di commento.

  • Notare l'etichetta "QUI" nel programma. Qualsiasi etichetta che fa riferimento a un'istruzione deve essere seguita da due punti.

Assemblaggio ed esecuzione di un programma 8051

Qui discuteremo della forma di base di un linguaggio assembly. I passaggi per creare, assemblare ed eseguire un programma in linguaggio assembly sono i seguenti:

  • Innanzitutto, utilizziamo un editor per digitare un programma simile al programma sopra. Editor come il programma MS-DOS EDIT fornito con tutti i sistemi operativi Microsoft possono essere utilizzati per creare o modificare un programma. L'editor deve essere in grado di produrre un file ASCII. L'estensione "asm" per il file sorgente viene utilizzata da un assemblatore nel passaggio successivo.

  • Il file sorgente "asm" contiene il codice del programma creato nel passaggio 1. Viene fornito a un assemblatore 8051. L'assembler converte quindi le istruzioni in linguaggio assembly in istruzioni in codice macchina e produce un file.obj file (file oggetto) e un file .lst file(file di elenco). È anche chiamato comesource file, ecco perché alcuni assemblatori richiedono che questo file abbia le estensioni "src". Il file "lst" è facoltativo. È molto utile per il programma perché elenca tutti i codici operativi e gli indirizzi nonché gli errori rilevati dagli assemblatori.

  • Gli assemblatori richiedono un terzo passaggio chiamato linking. Il programma di collegamento accetta uno o più file oggetto e produce un file oggetto assoluto con estensione "abs".

  • Successivamente, il file "abs" viene inviato a un programma chiamato "OH" (convertitore da oggetto a esadecimale), che crea un file con estensione "hex" pronto per essere masterizzato nella ROM.

Tipo di dati

Il microcontrollore 8051 contiene un singolo tipo di dati di 8 bit e ogni registro ha anche una dimensione di 8 bit. Il programmatore deve scomporre i dati più grandi di 8 bit (da 00 a FFH o a 255 in decimale) in modo che possano essere elaborati dalla CPU.

DB (Definisci byte)

La direttiva DB è la direttiva dati più ampiamente utilizzata nell'assembler. Viene utilizzato per definire i dati a 8 bit. Può anche essere utilizzato per definire i dati in formato decimale, binario, esadecimale o ASCII. Per i decimali, la "D" dopo il numero decimale è facoltativa, ma è necessaria per "B" (binario) e "Hl" (esadecimale).

Per indicare ASCII, è sufficiente inserire i caratteri tra virgolette ("come questo"). L'assemblatore genera automaticamente il codice ASCII per i numeri / caratteri. La direttiva DB è l'unica direttiva che può essere utilizzata per definire stringhe ASCII più grandi di due caratteri; pertanto, dovrebbe essere utilizzato per tutte le definizioni di dati ASCII. Di seguito vengono forniti alcuni esempi di DB:

ORG  500H 
DATA1:  DB   28                     ;DECIMAL (1C in hex) 
DATA2:  DB   00110101B              ;BINARY  (35 in hex) 
DATA3:  DB   39H                    ;HEX 
        ORG  510H 
DATA4:  DB   "2591"                 ;ASCII  NUMBERS 
        ORG  520H                         
DATA6:  DA   "MY NAME IS Michael"   ;ASCII CHARACTERS

Intorno alle stringhe ASCII è possibile utilizzare virgolette singole o doppie. DB viene utilizzato anche per allocare la memoria in blocchi di dimensioni di byte.

Direttive dell'assemblatore

Alcune delle direttive dell'8051 sono le seguenti:

  • ORG (origin)- La direttiva origine viene utilizzata per indicare l'inizio dell'indirizzo. Prende i numeri in formato esadecimale o decimale. Se H viene fornito dopo il numero, il numero viene considerato esadecimale, altrimenti decimale. L'assembler converte il numero decimale in hexa.

  • EQU (equate)- Viene utilizzato per definire una costante senza occupare una posizione di memoria. EQU associa un valore costante a un'etichetta dati in modo che l'etichetta appaia nel programma, il suo valore costante verrà sostituito dall'etichetta. Durante l'esecuzione dell'istruzione "MOV R3, #COUNT", il registro R3 verrà caricato con il valore 25 (notare il segno #). Il vantaggio di usare EQU è che il programmatore può cambiarlo una volta e l'assemblatore cambierà tutte le sue occorrenze; il programmatore non deve cercare l'intero programma.

  • END directive- Indica la fine del file sorgente (asm). La direttiva END è l'ultima riga del programma; qualsiasi cosa dopo la direttiva END viene ignorata dall'assembler.

Etichette in linguaggio Assembly

Tutte le etichette in linguaggio assembly devono seguire le regole riportate di seguito:

  • Ogni nome di etichetta deve essere univoco. I nomi utilizzati per le etichette nella programmazione in linguaggio assembly sono costituiti da lettere alfabetiche sia maiuscole che minuscole, numeri da 0 a 9 e caratteri speciali come punto interrogativo (?), Punto (.), Al tasso @, trattino basso (_), e dollaro ($).

  • Il primo carattere dovrebbe essere in carattere alfabetico; non può essere un numero.

  • Le parole riservate non possono essere utilizzate come etichetta nel programma. Ad esempio, le parole ADD e MOV sono le parole riservate, poiché sono mnemonici di istruzioni.