2010-02-08 3 views
8

Ich nehme einen Kurs über Mikroprozessor-Programmierung als Teil meines Electronic Engineering-Abschlusses. Leider müssen wir in den Labs mit MASM in DOS arbeiten.Einen Assembly-Kurs machen, in DOS stecken!

Nun, ich finde DOS nicht wirklich hinderlich, aber ich habe es einfach nicht auf einem Computer zu Hause (und keinen der Computer, die ich habe Diskettenlaufwerke), so kann ich nicht üben zu schreiben Programme. Ich habe es unter Windows versucht, aber es ist einfach nicht zusammenzusetzen (ich vermute, das liegt am Protected Mode).

Irgendwelche Ratschläge, was soll ich tun? Sollte ich gerade im geschützten Modus programmieren lernen? Wird mir das bei dem Kurs helfen? Der Kurs ist auf die 8086 konzentriert.

Vielleicht könnte eine virtuelle Maschine helfen? Wenn ja, wo bekomme ich DOS und MASM dafür?

+1

Um ein bisschen Gefühl für die Assemblersprache zu bekommen, ist es besser, sich auf 8086 zu konzentrieren. 80386 und darüber hinaus (Pentium etc.) erfordern viel mehr Wissen über die Speicherverwaltung und verwenden hauptsächlich größere Register (32 oder 64 Bit statt 8 oder 16) -Bit). Es gibt viele Emulatoren (siehe Antworten unten) zur Verfügung. – Roalt

+0

MASM macht Spaß zu sagen. –

+1

@ Roalt: Dieser Rat ist lächerlich, Einfachheit allein sollte nicht bedeuten, pragmatisches Wissen wegzuwerfen. Die "ax bx cx dx" 16-Bit-Register sind alle in 386+ enthalten, und niemand ist gezwungen, im geschützten Modus zu sein. Ein moderner x86-Prozessor im 16-Bit-Real-Modus ist einfach genug. Sie beginnen mit den Grundlagen und integrieren sich langsam in die zusätzlichen Funktionen. – TechZilla

Antwort

3

ich aussehen würde, in Suns VirtualBox (Free) läuft ein DOS-VM auf jede Plattform (Windows, Mac, Linux, ...)

0

Wenn Sie COMMMAND aus dem Startmenü statt CMD eingeben, um laufen, und wählen Sie laufen Sie werden in DOS sein.

+0

Verwenden Sie diese Links und Sie erhalten Tipps, wie Sie beginnen können. http://website.masm32.com/ und http://www.microsoft.com/downloads/details.aspx?FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64&displaylang=en –

+0

Interessant. Wie kompatibel ist das mit alter Software? Wie zum Beispiel .. Tetris? –

+1

Ich empfehle dringend, dies zum Zwecke des Lernens zu tun. Es gibt viele Macken im virtuellen 8086-Modus zu laufen, die einen Lerner irreführen können. auf Assembly Language Level - und es ist sowieso nicht auf x64 verfügbar. –

1

Eine virtuelle Maschine würde tun. Ich bin mir ziemlich sicher, dass DOS auf MSDNAA frei verfügbar ist, wenn Ihre akademische Institution Zugang dazu bietet. Wenn Sie Windows verwenden, empfehle ich, den Microsoft Virtual PC für DOS-VMs zu verwenden. Während ich persönlich VMware als VM-Host bevorzuge, scheint Virtual PC bei der Emulation besser zu funktionieren.

+1

FreeDOS ist 100% kostenlos und kompatibel http://www.freedos.org/ –

+0

Ich habe FreeDOS nicht wirklich ausprobiert und kann nichts über die Kompatibilität sagen. Ich bezweifle sehr, dass es zu 100% kompatibel mit allen Bugs von MS-DOS ist. 100% Kompatibilität mit * jeder * Software ist nahezu unerreichbar. –

+1

FreeDOS ist außergewöhnlich kompatibel. Ich würde nicht sehr viele Menschen erwarten, Unterschiede zu finden, die tatsächliche Probleme verursachen. –

8

FreeDOS eine weitere Option ist, und es in Virtualbox

http://www.freedos.org/

BTW, freies DOS kann auch von einer CD gebootet ausgeführt werden. Ich denke, Sie können es sogar auf einem USB-Stick installieren, wenn Sie so wollen.

+2

Ich frage mich, wie es DosBox gehen würde ... es ist darauf ausgerichtet, alte DOS-Spiele laufen zu lassen, aber ich weiß, dass ich es dazu gebracht habe, einige wirklich alte GW-BASIC-Programme laufen zu lassen, die ich in den Jahren 1993 und 1994 geschrieben habe! –

2

ich verwendet, um dieses Emulator bochs vor einiger Zeit zusammen mit freiem dos ist ziemlich gut, wenn man nur grundlegende dos brauchen

+0

'qemu' hat generell' bochs' ersetzt, es hat auch ausgereifte Virtualisierungsunterstützung. – TechZilla

0

Inline::ASM - schreiben Perl Subroutinen in Assembler.

SYNTAX

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

ich eine virtuelle Maschine mit wie die freien VirtualBox würde vorschlagen, oder qemu, x86 (+ andere) Emulator. Ich würde vorschlagen, MS-DOS als das Gastbetriebssystem zu verwenden, da meine vorherigen Versuche, einige grundlegende Versammlung unter FreeDOS unter VirtualBox zu versuchen, unzuverlässig waren.

MASM v8 kann von Microsoft heruntergeladen werden - aber ich erinnere mich nicht, wenn das einen 16-Bit-Assembler enthält oder nicht. Lesen Sie auch Randall Hyde blurb auf MASM. Die Website Art of Assembly ist eine Anlaufstelle zum Lernen der Montage. Natürlich hat Wikipedia eine comparison of assemblers. Sie wollen eine, die MASM-kompatibel ist und unter DOS (d. H. 16-Bit) läuft.

hinzugefügt Hinweis: Ältere Versionen von MS-Windows vor Windows XP enthalten MS-DOS, einschließlich Windows 95 und 98. Wenn Sie oder eine alte Kopie auf CD finden, sonst werden die Leute die CD wahrscheinlich geben frei, wenn sie eine - Freunde, lokale Computergeschäfte, Familie fragen, und Sie sollten in der Lage sein, sie in einer virtuellen Maschine mit wenig oder ohne Aufwand zu installieren.

0

VMWare würde tun. Suchen Sie einfach das DOS-Image (.iso oder Floppy) und installieren Sie es auf der VMWare. Sie können damit machen, was Sie wollen, ohne Ihren Hostcomputer zu beschädigen. Sie können sogar mit int13 interrupt spielen, wenn Sie wollen;). Oh, ich vermisse die Zeit, als ich habe die „resident“ Anwendungen Einhaken Interrupt-Subroutinen unter DOS auf meinem i386 :)

Viel Glück und viel Spaß mit nh.