Пройдя курс сборки, застрял в DOS!

Я изучаю курс программирования микропроцессоров в рамках моей степени по электронике. К сожалению, в лабораторных условиях нам приходится работать в DOS с использованием MASM.

Я не считаю DOS помехой, но у меня ее просто нет на компьютере дома (и ни на одном из компьютеров, которые у меня есть, нет дисковода для гибких дисков), поэтому я не могу практиковаться в написании программ. Я пробовал под Windows, но он просто не собирается (я предполагаю, что это из-за защищенного режима).

Любой совет, что мне делать? Стоит ли мне просто научиться программировать в защищенном режиме? Это поможет мне с курсом? Курс ориентирован на 8086.

Может быть, виртуальная машина может помочь? Если да, то где взять для него DOS и MASM?


person Saad    schedule 08.02.2010    source источник
comment
Чтобы немного почувствовать язык ассемблера, лучше сосредоточиться на 8086. 80386 и выше (Pentium и т. Д.) Требуют гораздо больше знаний об управлении памятью и в основном используют регистры большего размера (32 или 64 бит вместо 8 или 16 бит) . Доступно множество эмуляторов (см. Ответы ниже).   -  person Roalt    schedule 08.02.2010
comment
@Roalt: Этот совет смехотворен, простота сама по себе не должна означать отбрасывание прагматических знаний. ax bx cx dx 16-битные регистры все включены в 386+, и никого не заставляют находиться в защищенном режиме. Современный процессор x86 в 16-битном реальном режиме достаточно прост. Вы начинаете с основ и постепенно интегрируете дополнительные функции.   -  person J. M. Becker    schedule 21.02.2012


Ответы (8)


FreeDOS - еще один вариант, и запуск его в виртуальном боксе

http://www.freedos.org/

Кстати, Free DOS также можно загрузить с компакт-диска. Думаю, можно даже на флешку установить, если так хочется.

person Mech Software    schedule 08.02.2010
comment
Интересно, как будет себя вести DosBox ... он предназначен для запуска старых игр DOS, но я знаю, что получил его для запуска некоторых действительно старых программ GW-BASIC, которые я написал еще в 93 и 94 годах! - person Vivin Paliath; 09.02.2010

Я бы посоветовал использовать виртуальную машину, такую ​​как бесплатный VirtualBox или qemu, эмулятор x86 (+ другие). Я бы предложил использовать MS-DOS в качестве гостевой ОС, поскольку мои предыдущие попытки попробовать какую-то базовую сборку под FreeDOS под VirtualBox были ненадежными.

MASM v8 доступен для скачать с Microsoft - но я не помню, включает ли он 16-битный ассемблер или нет. Также прочтите рекламное объявление Рэндалла Хайда о MASM. Веб-сайт Art of Assembly - это идеальное место для изучения сборки. Конечно, в Википедии есть сравнение ассемблеров. Вам понадобится тот, который совместим с MASM и работает под DOS (т.е. 16-бит).

Добавлено примечание: старые версии MS-Windows до Windows XP включали MS-DOS, включая Windows 95 и 98. Если у вас есть или вы можете найти старую копию на компакт-диске, в противном случае люди, скорее всего, отдайте компакт-диск бесплатно, если он у них есть - спросите у друзей, в местных компьютерных магазинах, у семьи, и вы сможете установить их на виртуальную машину с минимальными усилиями или без них.

person mctylr    schedule 08.02.2010

Я бы посмотрел на запуск VirtualBox от Sun (бесплатно) для запуска виртуальной машины DOS на любой платформе (Windows, Mac, Linux, ...)

person Bill K    schedule 08.02.2010

Я использовал этот эмулятор bochs, в то время как обратно вместе с бесплатными DOS довольно хорош, если вам просто нужны базовые DOS.

person Anycorn    schedule 08.02.2010
comment
qemu обычно заменяет bochs, но также имеет развитую поддержку виртуализации. - person J. M. Becker; 21.02.2012

Подойдет виртуальная машина. Я почти уверен, что DOS находится в свободном доступе на MSDNAA, если ваш академический институт предоставляет к ней доступ. Если вы используете Windows, я предлагаю использовать Microsoft Virtual PC для виртуальных машин DOS. Хотя я лично предпочитаю VMware в качестве хоста виртуальной машины, конкретно для DOS Virtual PC, похоже, лучше справляется с эмуляцией.

person mmx    schedule 08.02.2010
comment
Я особо не пробовал FreeDOS и ничего не могу сказать о совместимости. Я очень сомневаюсь, что он на 100% совместим со всеми ошибками MS-DOS. 100% совместимость с любым программным обеспечением практически недостижима. - person mmx; 09.02.2010
comment
FreeDOS исключительно совместима. Я бы не ожидал, что очень многие люди обнаружат различия, которые вызывают реальные проблемы. - person Brian Knoblauch; 09.02.2010
comment
Если это так, он тоже должен работать. Получить доступ к актуальной MSDOS тоже не должно быть очень сложно. Тем не менее, виртуальная машина - лучший вариант. НТВДМ точно нет. - person mmx; 09.02.2010
comment
Как правило, мне удавалось запускать все в FreeDOS без особых проблем. MSDOS действительно содержит особенности, и может быть проблематичным, если кто-то специально для них кодировал. Так что, если вы будете следовать «разумным» методам кодирования, все будет в порядке. - person J. M. Becker; 21.02.2012

Если вы наберете COMMMAND вместо CMD в меню «Пуск» и выберете «Выполнить», вы попадете в DOS.

person Keith Adler    schedule 08.02.2010
comment
Воспользуйтесь этими ссылками, и вы получите советы о том, как начать работу. website.masm32.com и microsoft.com/downloads/ - person Keith Adler; 08.02.2010
comment
Интересный. Насколько это совместимо со старым программным обеспечением? Как .. тетрис например? - person ; 08.02.2010
comment
Я настоятельно не рекомендую делать это с целью обучения. При работе в виртуальном режиме 8086 существует множество причуд, которые могут ввести в заблуждение учащегося, особенно. на уровне языка ассемблера - и в любом случае он недоступен на x64. - person mmx; 08.02.2010
comment
Я согласен с Махрдадом Афшари, это не обеспечивает 16-битную среду, а masm32 предназначен для 32-битной (защищенный режим) среды, что очень отличается от инструкций Саада в школе. - person mctylr; 08.02.2010
comment
Если вы используете 64-битную Windows 7, вы можете загрузить режим Windows XP, который позволит вам это сделать. Я не против виртуальной машины, но если он должен, то я выберу Sun VirtualBox с FreeDos. freedos.org - person Keith Adler; 09.02.2010
comment
Я думал, что COMMAND и CMD были синонимами, когда вы перешли на XP. Я также не уверен, насколько хорошо он сможет ткнуть фактические регистры, которые являются частью памяти защищенного режима Windows или прямой записи на диск. В реальной DOS вы можете сделать гораздо больше, чем в самой Windows. Я бы пошел с FreeDOS на виртуальную машину с меньшими проблемами. Мне не хотелось бы видеть, как он отлаживает проблему, связанную с Windows, защищающей ОС. - person Mech Software; 09.02.2010
comment
Они не. COMMAND - это 16-разрядный эмулятор Windows, а CMD - это командная оболочка Windows XP. Не имеет значения, в какой из них вы находитесь, поскольку у вас никогда не будет доступа к прямому оборудованию (за исключением некоторых редких случаев с подписанными драйверами) в любой Windows выше, чем Windows Me, поскольку ядро ​​абстрагирует это от вас. - person Keith Adler; 09.02.2010

Inline :: ASM - написание подпрограмм Perl на ассемблере.

ОБЗОР

   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
person Anonymous    schedule 08.02.2010

VMWare подойдет. Просто найдите образ DOS (.iso или дискету) и установите его на VMWare. Вы можете делать с ним все, что хотите, без вреда для вашей хост-машины. Вы даже можете поиграться с прерыванием int13, если хотите;). О, я скучаю по тому моменту, когда я делал "резидентные" приложения, перехватывающие подпрограммы прерывания под DOS на моем i386 :)

Удачи и получайте удовольствие от asm.

person opal    schedule 08.02.2010