Assembly 8086 on linux
Moderatore: Staff
Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
- Blallo
- Packager
- Messaggi: 3302
- Iscritto il: ven 12 ott 2007, 11:37
- Nome Cognome: Savino Liguori
- Slackware: 14.2 / 12.2
- Kernel: 4.4.14-smp
- Desktop: DWM
- Località: Torino / Torremaggiore (FG)
- Contatta:
Assembly 8086 on linux
Esiste un modo per compilare assembly 8086 su linux con sintassi intel?
Github: https://github.com/8lall0
- lennynero
- Linux 3.x
- Messaggi: 641
- Iscritto il: lun 3 mag 2004, 0:00
- Nome Cognome: Luigi Picaro
- Slackware: 15.0-x64
- Kernel: 6.1
- Desktop: Xfce-4.16
- Località: Salerno
Re: Assembly 8086 on linux
as e as86 sono compilatori assembly già presenti in slackware, penso che con opportuni flag si potrebbe ottimizzare la compilazione per intel, anche se non sono molto ferrato sull'argomento. Facendo una rapida ricerca ho trovato questo: http://www.niksula.cs.hut.fi/~mtiihone/intel2gas/, potrebbe esseeti utile...
- 414N
- Iper Master
- Messaggi: 2922
- Iscritto il: mer 13 feb 2008, 16:19
- Slackware: 15.0
- Kernel: 5.15.19
- Desktop: KDE5
- Località: Bulagna
- Contatta:
Re: Assembly 8086 on linux
Ci sono anche NASM e YASM, con una sintassi simile a quella Intel.
- Blallo
- Packager
- Messaggi: 3302
- Iscritto il: ven 12 ott 2007, 11:37
- Nome Cognome: Savino Liguori
- Slackware: 14.2 / 12.2
- Kernel: 4.4.14-smp
- Desktop: DWM
- Località: Torino / Torremaggiore (FG)
- Contatta:
Re: Assembly 8086 on linux
ho provato a dare in pasto a nasm questo414N ha scritto:Ci sono anche NASM e YASM, con una sintassi simile a quella Intel.
Codice: Seleziona tutto
.MODEL small
.STACK
.DATA
VAR DW ?
.CODE
.STARTUP
MOV VAR, 0
.EXIT
END
Github: https://github.com/8lall0
- 414N
- Iper Master
- Messaggi: 2922
- Iscritto il: mer 13 feb 2008, 16:19
- Slackware: 15.0
- Kernel: 5.15.19
- Desktop: KDE5
- Località: Bulagna
- Contatta:
Re: Assembly 8086 on linux
Ah, che nostalgia l'ASM!jimmy_page_89 ha scritto:ho provato a dare in pasto a nasm questo414N ha scritto:Ci sono anche NASM e YASM, con una sintassi simile a quella Intel.ma non ne vuole sapere di compilareCodice: Seleziona tutto
.MODEL small .STACK .DATA VAR DW ? .CODE .STARTUP MOV VAR, 0 .EXIT END
Avevo detto che supportano una sintassi simile Intel. Quelle macro che usi sinceramente non so da quale "standard" derivino.
Qui trovi qualche esempio di applicaizioni al livello di hello world per nasm: http://www.csee.umbc.edu/portal/help/nasm/sample.shtml
- phobos3576
- Staff
- Messaggi: 2980
- Iscritto il: dom 17 apr 2005, 0:00
- Slackware: 13.1
- Kernel: 2.6.37-smp
- Desktop: KDE 4.5.3
Re: Assembly 8086 on linux
Prova:jimmy_page_89 ha scritto:ho provato a dare in pasto a nasm questoma non ne vuole sapere di compilareCodice: Seleziona tutto
.MODEL small .STACK .DATA VAR DW ? .CODE .STARTUP MOV VAR, 0 .EXIT END
Codice: Seleziona tutto
section .text
global _start ; dichiara l'entry point
_start: ; entry point
mov var, 0
mov eax,1 ; system call (sys_exit)
int 0x80 ; chiama il kernel per l'uscita
section .data
var resw 1 ; riserva 1 WORD a var
- Blallo
- Packager
- Messaggi: 3302
- Iscritto il: ven 12 ott 2007, 11:37
- Nome Cognome: Savino Liguori
- Slackware: 14.2 / 12.2
- Kernel: 4.4.14-smp
- Desktop: DWM
- Località: Torino / Torremaggiore (FG)
- Contatta:
Re: Assembly 8086 on linux
phobos3576 ha scritto:Prova:Codice: Seleziona tutto
section .text global _start ; dichiara l'entry point _start: ; entry point mov var, 0 mov eax,1 ; system call (sys_exit) int 0x80 ; chiama il kernel per l'uscita section .data var resw 1 ; riserva 1 WORD a var
Codice: Seleziona tutto
6: error: invalid combination of opcode and operands
13: warning: uninitialized spacedeclared in non-BSS section `.data': zeroing
Github: https://github.com/8lall0
- phobos3576
- Staff
- Messaggi: 2980
- Iscritto il: dom 17 apr 2005, 0:00
- Slackware: 13.1
- Kernel: 2.6.37-smp
- Desktop: KDE 4.5.3
Re: Assembly 8086 on linux
Errori madornali dovuti alla fretta di rispondere.jimmy_page_89 ha scritto:Codice: Seleziona tutto
6: error: invalid combination of opcode and operands 13: warning: uninitialized spacedeclared in non-BSS section `.data': zeroing
1) In NASM, var è l'indirizzo della variabile, mentre [var] è il suo contenuto; quindi, bisogna scrivere:
Codice: Seleziona tutto
mov word [var], 0
2) In Linux, la section .data è per i dati inizializzati; per i dati non inizializzati bisogna usare section .bss
- Blallo
- Packager
- Messaggi: 3302
- Iscritto il: ven 12 ott 2007, 11:37
- Nome Cognome: Savino Liguori
- Slackware: 14.2 / 12.2
- Kernel: 4.4.14-smp
- Desktop: DWM
- Località: Torino / Torremaggiore (FG)
- Contatta:
Re: Assembly 8086 on linux
grazie mille, ora funziona
ma ciò comunque non risolve il mio problema...
ma oggi il prof ci ha detto che quel codice va su MASM
al massimo chiederò lumi domani
ma ciò comunque non risolve il mio problema...
ma oggi il prof ci ha detto che quel codice va su MASM
al massimo chiederò lumi domani
Github: https://github.com/8lall0
- phobos3576
- Staff
- Messaggi: 2980
- Iscritto il: dom 17 apr 2005, 0:00
- Slackware: 13.1
- Kernel: 2.6.37-smp
- Desktop: KDE 4.5.3
Re: Assembly 8086 on linux
Si ma, attenzione a non confondere la struttura del programma con il suo contenuto.
La struttura di un programma Assembly varia a seconda del sistema operativo; ad esempio, quando programmi sotto Linux devi usare apposite sezioni per codice e dati che sono differenti da quelle usate sotto Windows.
Il contenuto del programma invece lo puoi scrivere seguendo la sintassi Intel che viene pienamente supportata da NASM e YASM.
La struttura di un programma Assembly varia a seconda del sistema operativo; ad esempio, quando programmi sotto Linux devi usare apposite sezioni per codice e dati che sono differenti da quelle usate sotto Windows.
Il contenuto del programma invece lo puoi scrivere seguendo la sintassi Intel che viene pienamente supportata da NASM e YASM.
- zoros
- Linux 4.x
- Messaggi: 1361
- Iscritto il: lun 28 mag 2007, 22:51
- Nome Cognome: Fabio`Zorba`
- Slackware: 14.1
- Kernel: 3.10.30-smp
- Desktop: KDE-3.5(works!)
- Località: Gorizia
- Contatta:
Re: Assembly 8086 on linux
caro jimmy_page_89,jimmy_page_89 ha scritto:Esiste un modo per compilare assembly 8086 su linux con sintassi intel?
ti consiglio anch'io nasm, ci sono delle differenze ma si sta poco a trasformare un listato masm in nasm ...
non capisco perché usi "var" ... per allocare uno spazio ram basta un db, dw, ecc. ...
se invece vuoi usare l'originale MASM c'è sempre dosbox ...
vorrei riavere le mie firme ...
- phobos3576
- Staff
- Messaggi: 2980
- Iscritto il: dom 17 apr 2005, 0:00
- Slackware: 13.1
- Kernel: 2.6.37-smp
- Desktop: KDE 4.5.3
Re: Assembly 8086 on linux
In questo caso var è un nome di variabile e non una keyword.zoros ha scritto:non capisco perché usi "var" ... per allocare uno spazio ram basta un db, dw, ecc. ...
Infatti, sotto DosBox o DosEmu girano MASM, TASM e praticamente tutti i programmi destinati al DOS.zoros ha scritto:se invece vuoi usare l'originale MASM c'è sempre dosbox ...
In epoca preistorica avevo scritto un tutorial sull'Assembly dove ci sono anche istruzioni sulla sintassi NASM, MASM, TASM e su come installare ed usare DosEmu sotto Linux.
http://xoomer.virgilio.it/ramsoft/
- zoros
- Linux 4.x
- Messaggi: 1361
- Iscritto il: lun 28 mag 2007, 22:51
- Nome Cognome: Fabio`Zorba`
- Slackware: 14.1
- Kernel: 3.10.30-smp
- Desktop: KDE-3.5(works!)
- Località: Gorizia
- Contatta:
Re: Assembly 8086 on linux
sì, ho letto frettolosamente il codice ... mi suonava male il "resw" ... io avrei scritto:phobos3576 ha scritto:In questo caso var è un nome di variabile e non una keyword.zoros ha scritto:non capisco perché usi "var" ... per allocare uno spazio ram basta un db, dw, ecc. ...
chiaro che var è un identificatore ... brutta scelta direi ...var dw 0 ; riserva 1 WORD a var
vorrei riavere le mie firme ...
- phobos3576
- Staff
- Messaggi: 2980
- Iscritto il: dom 17 apr 2005, 0:00
- Slackware: 13.1
- Kernel: 2.6.37-smp
- Desktop: KDE 4.5.3
Re: Assembly 8086 on linux
Se devi definire dati inizializzati devi appunto usare DB, DW e così via; siccome jimmy_page_89 voleva definire un dato non inizializzato, allora secondo la sintassi NASM bisogna usare RESB (reserve bytes), RESW (reserve words) e così via.zoros ha scritto: sì, ho letto frettolosamente il codice ... mi suonava male il "resw" ... io avrei scritto:
chiaro che var è un identificatore ... brutta scelta direi ...var dw 0 ; riserva 1 WORD a var