Assembly 8086 on linux
Inviato: lun 10 mag 2010, 2:54
Esiste un modo per compilare assembly 8086 su linux con sintassi intel?
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
ENDAh, 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
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
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': zeroingErrori 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
Codice: Seleziona tutto
mov word [var], 0caro jimmy_page_89,jimmy_page_89 ha scritto:Esiste un modo per compilare assembly 8086 su linux con sintassi intel?
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 ...
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 direivar dw 0 ; riserva 1 WORD a var
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 direivar dw 0 ; riserva 1 WORD a var...