2010-02-08 13 views
8

Sto frequentando un corso sulla programmazione di microprocessori come parte della mia laurea in ingegneria elettronica. Sfortunatamente, nei laboratori, dobbiamo lavorare in DOS usando MASM.Prendere un corso di assemblaggio, bloccato nel DOS!

Ora, in realtà non trovo il DOS un ostacolo, ma semplicemente non ce l'ho su un computer a casa (e nessuno dei computer in cui ho dischi floppy), quindi non sono in grado di esercitarmi a scrivere programmi. Ho provato sotto Windows, ma semplicemente non si assembla (credo che questo sia dovuto alla modalità protetta).

Qualche consiglio su cosa devo fare? Dovrei semplicemente imparare a programmare in modalità protetta? Questo mi aiuterà con il corso? Il corso si concentra su 8086.

Forse una macchina virtuale potrebbe aiutare? In tal caso, dove posso trovare DOS e MASM?

+1

Per avere un po 'di feeling con il linguaggio assembly è meglio concentrarsi su 8086. 80386 e oltre (Pentium ecc.) Richiedono molta più conoscenza sulla gestione della memoria e utilizzano principalmente registri di dimensioni maggiori (32 o 64 bit anziché 8 o 16 -po). Ci sono molti emulatori (vedi le risposte sotto) disponibili. – Roalt

+0

MASM è divertente da dire. –

+1

@Roalt: Quel consiglio è ridicolo, la semplicità da sola non dovrebbe significare buttare via la conoscenza pragmatica. I registri di 'ax bx cx dx' 16 bit sono tutti inclusi in 386+ e nessuno è forzato ad essere in modalità protetta. Un moderno processore x86 in realmode a 16 bit, è abbastanza semplice. Si inizia con le basi e si integra lentamente nelle funzionalità aggiuntive. – TechZilla

risposta

3

Vorrei guardare in esecuzione di Sun VirtualBox (Free) per eseguire una macchina virtuale DOS su qualsiasi piattaforma (Windows, Mac, Linux, ...)

0

Se si digita COMMMAND anziché CMD dal menu Start e selezionare correte sarete in DOS.

+0

Utilizza questi collegamenti e otterrai suggerimenti su come iniziare. http://website.masm32.com/ e http://www.microsoft.com/downloads/details.aspx?FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64&displaylang=en –

+0

Interessante. Quanto è compatibile con il vecchio software? Ad esempio ... tetris? –

+1

Consiglio vivamente di non farlo a scopo di apprendimento. Ci sono un sacco di stranezze in esecuzione in modalità 8086 virtuale che può indurre in errore un esp alunno. a livello di linguaggio assembly - e comunque non è disponibile su x64. –

1

Una macchina virtuale farebbe. Sono abbastanza sicuro che DOS sia disponibile gratuitamente su MSDNAA se il tuo istituto accademico fornisce l'accesso ad esso. Se utilizzi Windows, ti suggerisco di utilizzare Microsoft Virtual PC per VM DOS. Mentre personalmente preferisco VMware come host di macchine virtuali, in particolare per DOS, Virtual PC sembra fare un lavoro migliore in emulazione.

+1

FreeDOS è al 100% gratuito e compatibile http://www.freedos.org/ –

+0

Non ho mai provato FreeDOS e non posso dire nulla sulla compatibilità. Dubito fortemente che sia compatibile al 100% con tutti i bug di MS-DOS. La compatibilità al 100% con * qualsiasi * software è quasi irraggiungibile. –

+1

FreeDOS è eccezionalmente compatibile. Non mi aspetterei che molte persone trovino differenze che hanno causato problemi reali. –

8

FreeDOS è un'altra opzione, e in esecuzione in virtualbox

http://www.freedos.org/

BTW, Free DOS può anche essere avviato da un CD. Penso che puoi persino installarlo su una chiavetta USB, se così propenso.

+2

Mi chiedo come andrà a finire DosBox ... è orientato verso l'esecuzione di vecchi giochi DOS, ma so che ho ottenuto di eseguire alcuni vecchi programmi GW-BASIC che ho scritto nel lontano '93 e '94! –

2

Ho usato questo emulatore bochs po 'indietro con dos liberi è abbastanza buono se avete solo bisogno di base dos

+0

'qemu' ha generalmente sostituito' bochs', ha anche un supporto di virtualizzazione maturo. – TechZilla

0

Inline::ASM - Scrivi Perl subroutine in assembler.

SINOSSI

print "9 + 16 = ", add(9, 16), "\n"; 
    print "9 - 16 = ", subtract(9, 16), "\n"; 

    use Inline ASM => 'DATA', 
       AS => 'as', 
       PROTO => {add => 'int(int,int)'}; 

    use Inline ASM => 'DATA', 
       AS => 'nasm', 
       ASFLAGS => '-f elf', 
       PROTO => {subtract => 'int(int,int)'}; 

    __END__ 
    __ASM__ 

    .text 
    .globl add 

    add:  movl 4(%esp),%eax 
      addl 8(%esp),%eax 
      ret 
    __ASM__ 
      GLOBAL subtract 
      SECTION .text 

    subtract: mov eax,[esp+4] 
      sub eax,[esp+8] 
      ret 
5

Io suggerirei di usare una macchina virtuale come ad esempio la libera VirtualBox, o qemu, un sistema x86 (+ altri) emulatore. Suggerirei di utilizzare MS-DOS come sistema operativo guest, poiché i miei precedenti tentativi di provare alcuni assembly di base sotto FreeDOS sotto VirtualBox erano inaffidabili.

MASM v8 è disponibile per il download da Microsoft, ma non ricordo se questo include un assemblatore a 16 bit o meno. Leggi anche Randall Hyde's blurb su MASM. Il sito Web Art of Assembly è un punto di riferimento per l'apprendimento dell'assemblaggio. Ovviamente Wikipedia ha un comparison of assemblers. Ne vuoi uno compatibile con MASM e funziona sotto DOS (cioè a 16 bit).

Aggiunto Nota: Le vecchie versioni di MS-Windows precedenti a Windows XP incluso MS-DOS, tra cui Windows 95 e 98. Se avete o può trovare una vecchia copia su CD, altrimenti la gente sarà probabilmente darà il CD liberamente se ne hanno uno - chiedi ad amici, negozi di computer locali, famiglia, e dovresti essere in grado di installarli in una macchina virtuale con poco o nessuno sforzo.

0

VMWare farebbe. Basta trovare l'immagine DOS (.iso o floppy) e installarla su VMWare. Puoi fare tutto ciò che vuoi senza alcun danno alla tua macchina host. Puoi anche giocare con l'interrupt int13 se vuoi;). Oh, mi manca il tempo in cui ho fatto le applicazioni "residenti" agganciando subroutine di interrupt sotto DOS sul mio i386 :)

Buona fortuna e divertirsi con asm.

Problemi correlati