IngleseFranceseSpagnolo

Ad


Favicon di OnWorks

as31 - Online nel cloud

Esegui as31 nel provider di hosting gratuito OnWorks su Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS

Questo è il comando as31 che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS

PROGRAMMA:

NOME


as31 - Un assemblatore Intel 8031/8051

SINOSSI


as31 [-h] [-l] [-s] [-v] [-Aarg] [-Ffmt] [-Ofile] infile.asm

DESCRIZIONE


As31 assembla infile.asm in uno dei diversi formati di output. L'output sarà
in un file chiamato infile.obj. L'estensione .asm è obbligatoria.

VERSIONI


Le opzioni devono apparire prima del nome del file di input. Entrambe le opzioni sono opzionali. Il testo di
ogni flag deve apparire sullo stesso argomento del flag. Ad esempio, "-Fod" è un valido
argomento, ma "-F od" non lo è.

-h Questo fa sì che l'assemblatore stampi un messaggio dettagliato che descrive le sue opzioni.
Il messaggio viene scritto nell'errore standard.

-l Questa opzione dice all'assemblatore di generare anche un file di elenco. Un elenco sarà
inserito nel file infile.lst. Dove 'infile' è il file che viene assemblato.
Questa opzione può apparire ovunque prima di infile.asm. L'opzione deve verificarsi isolata
sulla riga di comando.

Il file di elenco mostra il codice generato dall'assemblatore in formato esadecimale e fino a 60 caratteri
vengono mantenuti dal file di origine.

-s Ciò fa sì che l'assemblatore scriva l'output nell'output standard.

-v Ciò fa sì che l'assemblatore stampi un numero di versione sullo standard output.

-Arg Questa opzione specifica una stringa specifica per il formato che viene passata al formato
Generatore. Sia il formato "tdr" che i formati record utilizzano questa opzione.

-Fformato
Questa opzione specifica il formato di output che deve essere utilizzato.

Attualmente le uniche opzioni disponibili per questo sono:

hex Questo formato è il formato Intel HEX previsto da un certo numero di EPROM
programmatori e il debugger PAULMON. Per l'uso con alcuni programmatori, il
l'estensione del file di output potrebbe dover essere modificata in .HEX per essere riconosciuta da
il programmatore. Non viene utilizzata l'opzione -A. Questo formato dovrebbe essere quello predefinito se
non viene utilizzata l'opzione -F.

tdr Questo formato genera un file asci di cifre esadecimali formattate in questo modo, quindi
che possono essere letti dal debugger di tdr. È possibile specificare un argomento (vedi
-A opzione) che passerà una stringa specifica del formato al generatore di formato.
In questo caso, la stringa dell'argomento rappresenta un offset da aggiungere a
contatore di posizione. Questo offset è specificato in decimale e il valore predefinito è
64*1024 (0x10000). Per specificare un offset di 100, avresti bisogno di "-Ftdr
-A100" quando si invoca l'assemblatore.

byte Questo formato è semplicemente un indirizzo e un byte su ogni riga, in ascii. No -A
viene utilizzata l'opzione.

od Questo formato è simile all'output di od(1). Il formato è composto da an
indirizzo seguito da sedici byte esadecimali, seguito dall'equivalente
ASCII. Non viene utilizzata l'opzione -A.

srec2, srec3, srec4
Il generatore di record è in grado di generare output con uno qualsiasi di 2, 3,
o indirizzi a 4 byte. L'opzione -A può essere utilizzata per impostare l'indirizzo di base
offset, il valore predefinito qui è 0x0000 (a differenza di ToR).

NOTA: questo assemblatore consente di espandere i formati di output per includerne molti
diversi formati di output.

-Ofile Questa opzione dice all'assemblatore di scrivere l'output su un file.

ASSEMBLATORE ISTRUZIONI


Questo assemblatore accetta formati di istruzioni standard 8031/8051. Di seguito è riportato un elenco di
istruzioni e modalità di indirizzamento.

CICLI DI BYTE DI ISTRUZIONI
----------- ----- ------
ACALL indirizzo11 2 24
AGGIUNGI A, #data8 2 12
AGGIUNGI A, @Ri 1 12
AGGIUNGI A, Rn 1 12
AGGIUNGI A, diretto 2 12
ADDC A, #data8 2
ADDC A, @Ri 1 12
ADDC A, Rn 1 12
ADDC A, diretto 2 12
Indirizzo AJMP11 2 24
ANL A, #data8 2 12
ANL A, @Ri1
ANL A, Rn 1 12
ANL A, diretta 2 12
ANL C, /bit 2 24
ANL C, !bit 2 24
ANL C, bit 2 24
ANL diretta, #data8 3 24
ANL diretta, LA 2 12
CJNE @Ri, #data8, rel 3 24
CJNE A, #data8, rel 3 24
CJNE A, diretta, rel 3 24
CJNE Rn, #data8, rel 3 24
CLR A 1 12
CLR DO 1 12
CLR bit 2 12
CPL A1 12
CPL C1 12
CPL bit 2 12
DA LA 1 12
DIC @Ri 1 12
DIC A 1 12
DIC DPTR 1 12
DIC Rn 1 12
DIC diretto 2 12
DIV AB 1 48
DJNZ Rn, rel 2 24
DJNZ diretto, rel 3 24
INC @Ri1
INC A 1 12
INC DPTR 1 24
INC Rn 1 12
INC diretto 2 12
Punta JB, rel 3 24
Punta JBC, rel 3 24
JC relativo 2 24
JMP @A + DPTR 1 24
JMP @DPTR + LA 1 24
Bit JNB, rel 3 24
JNC relativo 2 24
JNZ relativo 2 24
JZ relativo 2 24
Indirizzo LCALL16 3 24
Indirizzo LJMP16 3 24
MOV @Ri, #data8 2
MOV @Ri, LA 1 12
MOV @Ri, diretta 2 24
MOV A, #data8 2
MOV A, @Ri1
MOV A, Rn 1 12
MOV A, diretto 2 12
MOV C, bit 2 12
MOV DPTR, #dati16 3 24
MOV Rn, #dati8 2 12
MOV Rn, LA 1 12
MOV Rn, diretto 2 24
Bit MOV, C 2 24
MOV diretto, #data8 3 24
MOV diretto, @Ri 2 24
MOV diretto, LA 2 12
MOV diretto, Rn 2 24
MOV diretto, diretto 3 24
MOVC A, @A + DPTR 1 24
MOVC A, @A + PC 1 24
MOVC LA, @DPTR + LA 1 24
MOVC LA, @PC + LA 1 24
MOVX @DPTR, LA 1 12
MOVX @Ri, A 1 24
MOVX A, @DPTR 1 24
MOVX A, @Ri1
MULAB1
NO 1 12
ORL A, #dati8 2 12
ORL A, @Ri 1 12
ORL A, Rn 1 12
ORL A, diretta 2 12
ORL C, /bit 2 24
ORL C, !bit 2 24
ORL C, bit 2 24
ORL diretto, #data8 3 24
ORL diretto, LA 2 12
POP diretto 2 24
PUSH diretto 2 24
RIT 1 24
RETI 1 24
RL A 1 12
RLC A 1 12
RR A 1 12
RRC A 1 12
SETB A 1 12
SETB bit 2 12
SJMP relativo 2 24
SUBB A, #data8 2 12
SUBB A, @Ri 1 12
SUBB LA, Rn 1 12
SUBB A, diretto 2 12
SCAMBIO A 1 12
XCH A, #dati8 2 12
XCH A, @Ri 1 12
XCH A, Rn 1 12
XCH A, diretto 2 12
XCHD A, #dati8 2 12
XCHD A, @Ri 1 12
XCHD A, Rn 1 12
XCHD A, diretto 2 12
XRL A, #dati8 2 12
XRL A, @Ri1
XRL A, Rn 1 12
XRL A, diretto 2 12
XRL diretto, #data8 3 12
XRL diretto, LA 2 12

ASSEMBLATORE DIRETTIVE


As31 include le seguenti direttive assembler:

Espressione .ORG
Avviare l'assemblaggio all'indirizzo specificato dall'espressione expr. Si verifica un errore
se l'assemblatore inizia ad assemblare su uno spazio di indirizzi che è stato precedentemente
assemblato in.

Simbolo .EQU, espressione
Imposta il simbolo al valore di espr. Il valore di expr deve essere noto durante il primo
pass, quando viene incontrata la riga contenente .EQU.

.BYTE espr, espr, ...
Assemblare i byte specificati dall'espressione in memoria. Una stringa può anche essere
specificato con questa direttiva.

.WORD espr, espr, ...
Assemblare in memoria le parole specificate dall'espressione. L'ordinamento dei byte
usato, è quello usato dall'8031.

.Simbolo BANDIERA1, simbolo.[0-7]
Imposta symbol1 all'indirizzo bit specificato dall'espressione symbol.[0-7]. Dove
[0-7] denota un carattere compreso tra 0 e 7. L'indirizzo bit risultante viene verificato per
vedere se è un indirizzo di bit valido.

.END Questa direttiva viene ignorata.

.SKIP espr
Aggiunge il valore di expr al contatore della posizione. Utilizzato per prenotare un blocco di
dati non inizializzati. Espr dovrebbe essere in byte.

LESSICALE CONVEGNI


- Tutti i caratteri che seguono un punto e virgola vengono ignorati fino a quando non viene incontrata una nuova riga.

- Tutti i numeri di default sono decimali, a meno che il numero non inizi con uno dei seguenti:

0x o 0X
Questo indica un numero esadecimale. cioè. 0x00ff

0b o 0B
Questo indica un numero binario. (1 e 0). cioè. 0b1100110010

0 Indica un numero ottale. cioè. 0377

- Tutti i numeri di default sono decimali, a meno che il numero non termini con uno dei seguenti
personaggi:

b o B Indica un numero binario. A meno che non sia stato usato 0x sopra. cioè. 1010101b

h o H Questo indica sempre un numero esadecimale, tuttavia se il primo carattere è
non numerico, quindi è necessario specificare 0x o 0. Questo evita confusione
l'assemblatore nel pensare che un numero esadecimale sia un simbolo. Ad esempio: 0ffh,
0xffh, 0XffH, 20h, 0x20 e 020h sono mezzi per specificare una cifra esadecimale valida. Ma
i seguenti non sono: ffh, 0ff.

d o D Questo forza un numero in decimale. A meno che non sia stato utilizzato 0X. cioè. 129d

o o O Questo fa sì che il numero venga interpretato come ottale. cioè. 377o

- Una costante di carattere può essere inserita come 'c' dove c è un carattere. \b, \n, \r,
\t, \' \0 sono validi anche. Una costante di caratteri può essere utilizzata ovunque che un numero intero
valore può.

- Una stringa viene immessa come un insieme di caratteri racchiusi tra virgolette "". Una stringa
è valido solo con la direttiva .BYTE. Anche \b, \n, \r, \t, \" sono escape validi.
Tuttavia \0 non lo è.

- Istruzioni, direttive e simboli: R0, R1, R2, R3, R4, R5, R6, R7, A, AB,
e C possono essere immessi in maiuscolo o minuscolo senza confusione con l'assemblatore. Queste
le parole tuttavia non possono essere definite come un simbolo utente. È possibile utilizzare qualsiasi simbolo utente e
caso sarà preservato. Quindi i simboli utente "pippo" e "pippo" sono diversi, ma
"addc" è lo stesso di "aDdC".

- Un simbolo può essere qualsiasi carattere alfanumerico più il carattere di sottolineatura ('_').

- Le espressioni sono accettate nella maggior parte dei luoghi in cui è necessario un valore o un simbolo. Un
espressione è costituita dai seguenti operatori. Tutti gli operatori valutano in intero
oggetti (operatori con priorità più alta elencati per primi):

- Meno unario

& AND bit per bit.

| OR bit per bit.

* Moltiplicazione intera.

/ Divisione intera

% intero modulo

+ Addizione intera.

- Sottrazione di interi.

- Oltre a questi operatori, un simbolo speciale '*' può essere utilizzato per rappresentare il
contatore della posizione attuale.

ESEMPI


Di seguito è riportato un esempio di programma di assemblaggio.

.org0
inizio: mov P3, #0xff ; usa fns alternativi su P3
; i led su P1 sono invertiti.
setb F0 ; salendo
mov A, #0x01 ; bit iniziale

scrivere: cpl A ; Scrivilo
mov P1, LA
compl A
un ritardo di chiamata
jb F0, salita ; salendo da che parte?

salito: rr A ; giù - sposta a destra
jnb ACC.0, scrivi ; indietro per di più
setb F0
ajmp scrivi

salita: rl A ; su - sposta a sinistra
jnb ACC.7, scrivi ; indietro per di più
clr F0
ajmp scrivi
.fine ; questa direttiva ignorata.

AUTORI


Ken Stauffer (Università di Calgary)[email protected]>
Martin Langer[email protected]>

AS31(1)

Usa as31 online utilizzando i servizi onworks.net


Server e workstation gratuiti

Scarica app per Windows e Linux

Comandi Linux

Ad