Содержание
Введение
1. Виртуальный лабораторный практикум в инженерном образовании
1.1 Особенности лабораторного практикума для естественнонаучных дисциплин
1.2 Роль технологии виртуальных приборов обучения в техническом вузе
2. Программный эмулятор (виртуальный ПК) Emu8086
2.1 Использование эмулятора Emu8086
2.2 Компиляция кода Ассемблера
2.3 Редактор исходного кода
2.4 Ассемблер
Лабораторная работа № 1
Лабораторная работа № 2
Лабораторная работа № 3
Лабораторная работа № 4
3. Вывод значения байта в десятеричной системе счисления
3.1 Методика выполнения
Лабораторная работа № 5, 6
Заключение
Список использованных источников
Сегодня наше государство взяло курс на строительство постиндустриального общества - ступени экономического развития, следующей за периодом индустриализации и характеризующейся опережающим развитием и ростом доли сферы услуг в общей структуре экономики.
Одним из ярких примеров этому является Программа снижения информационного неравенства в Республике Казахстан на 2007-2009 годы разработана в целях реализации Указа Президента Республики Казахстан от 10 ноября 2004 года N 1471 "О Государственной программе формирования "электронного правительства" в Республике Казахстан на 2005-2007 годы".
Концепцией постиндустриального общества является информационное общество - новая историческая фаза развития цивилизации, в которой главными продуктами производства являются информация и знания. Отличительными чертами информационного общества являются:
увеличение роли информации и знаний в жизни общества;
возрастание доли информационных коммуникаций, продуктов и услуг в валовом внутреннем продукте;
создание глобального информационного пространства, обеспечивающего:
а) эффективное информационное взаимодействие людей;
б) их доступ к мировым информационным ресурсам;
в) удовлетворение их потребностей в информационных продуктах и услугах.
Неприятие цифровых технологий, слабое их развитие означает поражение во всемирной гонке за экономическим процветанием и политическим доминированием в будущем информационном обществе. Виртуальная реальность коренным образом меняет производство, образование и жизнь людей, создавая безграничное информационное пространство во всем мире.
Реализация задач "Программы снижения информационного неравенства в Республике Казахстан" обеспечивается выполнением следующих мероприятий… "Методическое обеспечение процесса обучения населения компьютерной грамотности по дистанционной и очной формам обучения".
Методическое обеспечение процесса обучения населения компьютерной грамотности по дистанционным и очным формам обучения - владение навыками пользования компьютером и другими информационными технологиями становятся неотъемлемой частью современной жизни.
В этой связи будет уделено внимание развитию методического обеспечения процесса обучения населения компьютерной грамотности, включающего разработку учебно-методического пособия, электронных учебников (для дистанционного и автономного обучения) на государственном и русском языках, а также тестов и программного обеспечения по контролю знаний.
Лабораторный практикум является обязательным компонентом обучения во всех инженерных курсах, принимаемых в обучении. Во время практикума студенты закрепляют теоретические знания практической работой с микропроцессором, учатся работать с контрольно-измерительной аппаратурой, приобретают исследовательские навыки. В связи с динамическим изменением элементной базы электроники, измерительной аппаратуры, электронный практикум должен своевременно обновляться и совершенствоваться. Дело это трудоемкое и достаточно дорогое, особенно в нынешних условиях.
При всех несомненных достоинствах существующего практикума имеется довольно много замечаний, которые в силу объективных и субъективных трудностей практической реализации не решены на сегодня:
1) Современная полупроводниковая и интегральная элементная база очень чувствительна к перегреву, перенапряжению, статическому электричеству, имеет миниатюрные размеры и поэтому требует сложной, дорогой технологической оснастки для реальной работы с современными электронными схемами. Использование вредных химических веществ при монтаже требует соответствующего оборудования помещения (тоже не дешевого).
2) Работа с современными быстродействующими компонентами требует постоянного обновления дорогой и сложной контрольно-измерительной аппаратуры. Современная аппаратура сложна, требует высокой квалификации исследователя и мало приспособлена для студенческого практикума.
3) Целый ряд исследований невозможно выполнить из-за уникальности необходимой аппаратуры (исследование фазовых характеристик, спектральных характеристик, нелинейных характеристик, исследование влияния температуры на работу электронного устройства и т.д.).
4) В существующем практикуме отсутствует возможность диагностики неисправности электронного устройства, обучения навыкам ремонта электронных схем, пуско-наладочных работ, то есть тех обязательных навыков, которыми обязан владеть электронщик при разработке и эксплуатации электронной аппаратуры.
5) В разработке современной электронной аппаратуры все шире используется вычислительная техника, системы автоматического проектирования, интеллектуальная диагностика работоспособности устройств. Это направление совершенно не представлено в существующем практикуме.
Перечисленные замечания конечно не полностью описывают проблему. Поэтому актуально стоит поиск альтернативных методических направлений обучения электронным дисциплинам.
Одно из таких направлений рассмотрено в данной работе - использование в лабораторном практикуме компьютерного моделирования на базе программного пакета Emu8086.
У этого пакета имеется целый ряд достоинств, привлекающих внимание:
1. Большая библиотека современных электронных компонент, дискретных, интегральных аналоговых, цифровых и смешанных аналогово-цифровых. Библиотека открытая, легко может пополняться новыми элементами, в том числе и отечественными.
2. Богатая библиотека электронных схем, позволяющая использовать готовые практические разработки и легко модернизировать под конкретную задачу. Библиотека открытая, позволяет пополнение как за счет новых разработок, так и за счет подключения библиотек более ранних версий.
Можно получить исчерпывающую информацию о процессах в данном узле.
3. Большие возможности документирования исследования, получение твердой копии как электрической схемы, параметров моделирования, информации с экрана измерительной аппаратуры, хорошо оформленных графических результатов исследования.
4. Не требует знаний по программированию. Требуется лишь знакомство со средой Windows. Интуитивный интерфейс позволяет быстро даже неподготовленному пользователю (буквально за полчаса) познакомится с основами и приступить непосредственно к электронным исследованиям.
5. Нельзя не упомянуть обширный, тщательно подготовленный Help, обеспечивающий как контекстную помощь по меню, компонентам, опциям моделирования, так и общие вопросы моделирования, возможные ошибки.
Достоинств в этом пакете больше, чем перечислено и о них еще будет говориться в процессе разработки лабораторного практикума. Однако то, что перечислено, позволило среди множества известных пакетов электронных выбрать именно Emu8086 как наиболее подходящий для использования в лабораторном практикуме.
До настоящего времени, студенты выполняли лабораторные работы на Лабораторной установке, которая состоит из учебного микропроцессорного комплекта /УМК/, выпускаемого рижским заводом "ВЭФ", набора модулей, подключаемых к ее системной шине и различных периферийных устройств УМК представляет собой учебную микро-ЭВМ, предназначенную для изучения программирования, проектирования и настройки микропроцессорных устройств и систем, выполненных на МП KP580.
Как уже понятно, рижский завод "ВЭФ", уже находиться в другом государстве, морально и физически устарел (уже не выпускается). Микропроцессор МП KP580В уже давно снят с производства, не выпускается, весь мир давно перешел на микропроцессоры фирмы Intel, AMD, Motorolla и т.д.
Последние пять лет - лабораторный практикум выполнялся на эмуляторе МП086, но он был выполнен под операционную систему ДОС, еще современные операционные системы поддерживают эмуляцию ДОС, но следующие ОС перестают поддерживать ДОС.
Поэтому возникла потребность выбора программного продукта, работающего под Windows.
К тому же, необходимой литературы не имеется, нашел ссылки, но они только в общем рассказывают про работу эмулятора Emu8086. Это своего рода - первая работа про данный продукт. Может применяться для проведения лабораторных работ по дисциплине "Основы микропроцессорной техники", "Организация ЭВМ" и т.д.
В своей дипломной работе провожу разработку моделирования лабораторных работ средствами проектирования Emu8086 (под Windows), тем более что программное обеспечение позволяют сделать это моделирование не менее наглядным чем работа на реальных стендах, и ориентированных на инженерные специальности высших учебных заведений.
В учебных планах Казахской Академии транспорта и коммуникаций им. Тынышпаева (КазАТК) время, отводимое под лабораторный практикум, составляет 15-25% от общего объема аудиторных занятий. Примерно такой же по количеству часов (15-27%) лабораторный практикум предусмотрен и в учебных планах Алматинского энергетического. Данные цифры свидетельствуют, что в инженерном образовании лабораторный практикум является важным элементом, без которого немыслима подготовка полноценного специалиста.
Развитие информационных технологий привело к появлению понятия "виртуальный лабораторный практикум" (ВЛП), в основе которого лежит имитационное компьютерное моделирование. Основные способы использования ВЛП в учебном процессе:
в качестве компьютерного "тренажера" для подготовки к выполнению практикума в реальной лаборатории (при этом программы компьютерного и физического экспериментов, как правило, одинаковы);
как дополнение к реальному практикуму, предусматривающее такие компьютерные эксперименты, которые по различным причинам (техническим, финансовым, организационным и т.п.) не могут быть реализованы на физическом оборудовании.
Использование ВЛП в качестве компьютерного "тренажера" позволяет обучающемуся лучше подготовиться к проведению физического эксперимента, глубже уяснить исследуемые эффекты, приобрести навыки работы с измерительными приборами (в случае, если виртуальный практикум включает компьютерные модели измерительных приборов, близкие по своим свойствам к свойствам реальных приборов). Обычно такой подход можно рекомендовать для студентов заочно-дистанционной формы обучения, поскольку он не только способствует лучшему усвоению изучаемого материала, но и позволяет сократить продолжительность выполнения практикума в реальной лаборатории в период пребывания в стенах учебного заведения.
Если ВЛП используется как дополнение к реальному практикуму, то он должен быть ориентирован на проведение исследований повышенного уровня сложности или исследований, требующих дорогостоящего оборудования, которым не располагает университет.
По технологиям создания ВЛП можно выделить следующие основные варианты.
1. ВЛП на основе универсальных пакетов программ, обеспечивающих возможность применения в широком спектре предметных областей. Примером может служить система LabVIEW фирмы National Instruments. Универсальные пакеты содержат обширные библиотеки элементов, предназначенных для разработки виртуальных интерфейсов физических приборов и лабораторных установок.
2. ВЛП на основе специализированных предметно-ориентированных пакетов программ, предназначенных для сравнительно ограниченного набора предметных областей. В качестве примера отметим систему Multisim фирмы Electronics Workbench, созданную для моделирования электронных схем, систему ChemOffice фирмы CambridgeSoft, предназначенную для моделирования и анализа химических процессов и т.п. Так же как и в предыдущем случае, программное обеспечение данного класса представляет собой универсальную среду, предназначенную для решения прикладных задач пользователя.
3. ВЛП на основе Java-апплетов. В отличие от предыдущих случаев, где пользователь (преподаватель) обычно работает в режиме графического программирования, процесс создания Java-апплетов является гораздо более трудоемким и требует программирования в кодах. Тем не менее, данная технология имеет и определенные достоинства, особенно когда речь заходит о ВЛП, предназначенном для сетевого применения. Так, например, приложения, создаваемые в системе LabVIEW, занимают примерно 2,5-3 Мбайт памяти, а типичный размер виртуальной лабораторной работы на основе Java-апплета - десятки-сотни килобайт.
Развитие сетевых компьютерных технологий привело к появлению лабораторного практикума, реализуемого в режиме удаленного доступа к реальному оборудованию. Учитывая, что реализация удаленного доступа к реальному оборудованию связана с решением ряда проблем (необходимостью сопряжения лабораторного макета с ПК, обеспечением надежной защиты оборудования от возникновения аварийных режимов, низкой эффективностью использования оборудования из-за невозможности в ряде случаев реализовать коллективный доступ и т.д.), данная технология имеет достаточно много оппонентов. Тем не менее, она тоже имеет свое право на существование, а в ряде случаев имеет очевидные преимущества перед ВЛП.
Важным является вопрос, не является ли ВЛП альтернативой реальному лабораторному практикуму. С одной стороны, современные компьютерные технологии имитационного моделирования позволяют создавать виртуальные интерфейсы реального лабораторного оборудования, воспроизводящие и внешний вид, и его параметры с очень высокой точностью. С другой стороны, поддержание в рабочем состоянии и своевременное обновление лабораторного оборудования, включая и измерительные приборы, требует немалых финансовых средств.
Тем не менее, любой, даже сколь угодно высококлассный ВЛП, в большинстве случаев не заменит по своему обучающему воздействию, оказываемому на студента, работу с реальным оборудованием.
Это осознают и сами студенты, что подтверждается результатами анкетирования, проводившегося на кафедре АТС КазАТК в рамках педагогического эксперимента по апробации ВЛП по дисциплине "Схемотехника аналоговых электронных устройств". В целом, дав положительную оценку новому ВЛП (84% опрошенных), 54% студентов, участвовавших в опросе, ответили, что считают работу с реальным лабораторным оборудованием более полезной по сравнению с виртуальными лабораторными работами.
1.1 Особенности лабораторного практикума для естественнонаучных дисциплинНа мой взгляд, основная проблема заключается в различии способов подачи информации, преобладающих в системе естественнонаучного и гуманитарного образования.
В соответствии с одной из существующих концепций, информация воспринимается человеком, проходя следующие этапы: сенсорно-моторный, символьный, логический и лингвистический.
На первом этапе происходит чувственное восприятие информации, на втором осуществляется ее преобразование в образы, на третьем - ее осмысление, на четвертом - информация фиксируется в сознании через "слово-образ".
В преподавании же естественнонаучных дисциплин всегда присутствовал сенсорно-моторный этап. В этом большую роль играют лабораторные практикумы и учебные эксперименты.
Учебный эксперимент является одним из важнейших методов обучения, источником знаний и средством наглядности одновременно. Он может использоваться в качестве введения к той или иной теме курса (мотивация), как иллюстрация к объяснению нового материала (восприятие и осмысление), как повторение или обобщение пройденного (интериоризация) или как контроль приобретенных знаний, умений, навыков, т.е. на всех этапах процесса обучения.
Различают следующие виды учебного эксперимента:
Демонстрационный эксперимент. (Проводится в ходе объяснения для иллюстрации законов и явлений и их применения, демонстрации принципов действия технических установок, а также для знакомства учащихся с фундаментальными опытами. Готовится и выполняется только преподавателем).
Фронтальные лабораторные работы, опыты и наблюдения. (Выполняются на уроке всеми учащимися одновременно на однотипном оборудовании, под непосредственным руководством преподавателя).
Практикум. (Является формой самостоятельной работы учащихся, готовится учащимися заранее и выполняется по письменной инструкции).
Внеурочные опыты и наблюдения. (Разновидность домашнего задания. Используется для актуализации теоретических знаний или как мотивация к изучению нового материала).
Методически грамотно организованный эксперимент способствует как формированию практических умений, так и активизации теоретических знаний, полученных ранее. В процесс обучения вовлекаются различные каналы восприятия (слух, зрение, осязание, обоняние и т.д.). Это позволяет организовать полученную информацию, как систему ярких образов, и заложить ее в долговременную память.
С другой стороны, подготовка и проведение лабораторных работ являются довольно непростым делом и требуют от учителя знания некоторых методических особенностей, в значительной степени зависит от наличия тех или иных приборов и инструментов.
Частично эти и другие проблемы можно решить, используя при обучении компьютерный эксперимент. Под данным термином мы понимаем лабораторную работу, проводимую полностью на компьютере, без использования других технических средств обучения.
Некоторые эксперименты, проводимые в области компьютеризации учебного процесса, показывают, что применение компьютерного эксперимента позволяет существенно сократить время, которое тратится на рутинную работу (варьирование параметров эксперимента путем изменения схемы установки, расчета результатов измерения и т.д.), тем самым, высвобождая время для более серьезного уяснения целей и задач проводимого эксперимента.
Кроме того, появляется возможность продемонстрировать опыты, которые невозможно провести в условиях учебного кабинета.
Отметим характерные особенности компьютерного эксперимента.
Формой работы является диалог учащегося с компьютером. При этом в функции компьютера входит:
Реализация программными средствами модели изучаемого объекта, установки, процесса или ситуации
Имитация средств измерения и выполнение рутинной части обработки измерений.
Оценка действий учащегося.
Функции учащегося (несколько отличаются от его функций в традиционном эксперименте):
Анализ информации, которую программа выдает на экран дисплея.
Выбор условий эксперимента.
Проведение серий экспериментов для достижения цели, сформулированной в начале работы.
Корректировка последующих шагов с целью получения более высокой оценки и решения задачи более рациональным способом.
Разумеется, что возможна реализация эксперимента только в его компьютерном варианте. Однако при всей привлекательности и несомненной дидактической выгоде компьютерного эксперимента в обучении остаются нерешенными некоторые проблемы.
Во-первых, восприятие информации учащимся уже существенным образом отличается от того, как это происходит при выполнении традиционной лабораторной работы. В частности, сенсорно-моторный этап практически отсутствует. Без данного этапа восприятие не может быть полноценным. Следовательно, неполноценным может оказаться и преподавание соответствующей дисциплины.
Во-вторых, возникает проблема получения политехнических навыков работы с реальными приборами и установками.
Очень важна и все еще мало исследована проблема формирования адекватного представления о мире при работе с нереальными объектами. Возможно, эту проблему можно решить, используя в процессе обучения программные продукты, максимально точно отображающие процессы и явления, происходящие в реальном мире. В этом смысле особое внимание стоит обратить на средства виртуальной реальности.
Таким образом, одной из основных проблем преподавания предметов естественнонаучного цикла является отсутствие возможности реальной постановки учебного, и лабораторного эксперимента.
Хотя в настоящее время имеются разработки виртуальных лабораторных практикумов, однако окончательно решение проблемы требует пристального внимания специалистов различных профилей, в том числе и психолого-педагогического.
1.2 Роль технологии виртуальных приборов обучения в техническом вузеЛабораторная н экспериментальная база вуза достаточно консервативна в силу финансовых и материальных ограничений. Поэтому она практически не успевает отслеживать бурное развитие техники н неизбежно морально устаревает. В современных быстро изменяющихся условиях, в которых сетка специальностей и специализаций должна быстро и непрерывно адаптироваться к запросам промышленности, реальная лабораторная и экспериментальная база вуза не в состоянии поддерживать учебный процесс на должном уровне.
Следует также отмстить, что отставание материальной базы от требований жизни является не только вузовской проблемой, но и обшей проблемой в промышленности и для различных организаций и фирм, занимающихся разработками ноной техники.
Современная технология виртуальных приборов позволяет существенно сократить этот разрыв и сэкономить значительные финансовые ресурсы, не снижая качества обучения. Мировая вузовская практика подтверждает устойчивую и усиливающуюся тенденцию продвижения виртуальных технологий в учебном процессе.
Программная среда Emu8086, поддерживающая технологию виртуальных приборов, и соответствующее аппаратное обеспечение позволяют модернизировать учебные лаборатории гибким, программно перестраиваемым измерительным оборудованием или модернизировать имеющиеся средства измерений практически любой сложности, а также внедрять автоматизированные измерительные системы и станции для учебного процесса и комплексных исследований н вузовской науке.
Для практической реализации технологии виртуальных приборов и систем измерения в учебном процессе достаточно приобрести недорогую стандартную плату аналогового ввода-вывода, основными составляющими которой являются многоканальный коммутатор и аналого-цифровой преобразователь.
Технико-экономические оценки показывают, что рабочее место, включающее минимальный типовой набор традиционных измерительных приборов (осциллограф, импульсный и низкочастотный генераторы, частотомер, цифровой тестер), по текущим каталогам цен обходится в три раза дороже по сравнению с затратами на виртуальный эквивалент, включая приобретение современной персональной ЭВМ типа Pentium IV.
Поскольку компьютеры так или иначе приобретаются, а также с учетом того, что па кафедрах уже имеется парк компьютеров, модернизация оборудования лабораторий на базе виртуальных технологий будет стоить в 5-10 раз дешевле.
Так, оценочные расчеты, проведенные для общетехнической кафедры, показывают, что для полной модернизации приборного оборудования пяти учебных лабораторий, в каждой из которых организовано по 5 рабочих мест, необходимо затратить около 8,0 млн. тг. (цены на 2006 г), если модернизацию осуществлять традиционное покупкой необходимых "реальных" приборов.
При использовании технологии виртуальных приборов, с учетом уже имеющихся на кафедре компьютеров, модернизация обойдется примерно в 8 раз дешевле - в 1 000 млн. тг. Последние цифры уже приемлемы и подъемны, особенно при поэтапном подходе к модернизации.
Например, при ежегодном вложении по 400 тыс. тг, полное переоснащение лабораторий можно завершить в течение 2.5-3 лет.
Все для изучения ассемблера в одном пакете! Emu8086 сочетает в себе мощный редактор исходного кода, ассемблер, дизассемблер, программный эмулятор (виртуальный ПК) с отладчиком и поэтапное обучение.
Эта программа чрезвычайно полезна для тех, кто только начинает изучать ассемблер. Она компилирует исходный код и выполняет его с помощью эмулятора шаг за шагом.
Визуальный интерфейс очень прост в работе. Вы можете наблюдать регистры, флаги и память во время выполнения вашей программы.
Арифметико-логическое устройство (АЛУ) показывает внутреннюю работу центрального процессора (CPU).
Эмулятор выполняет программы на виртуальном ПК, который полностью исключает возможность доступа из вашей программы к реальным аппаратным средствам, таким как жесткие диски и память. Так как ваш код ассемблера выполняется на виртуальной машине, то отладка становится более легкой.
Машинный код 8086 полностью совместим со всеми последовавшими за ним поколениями микропроцессоров Intel, включая Pentium II и Pentium 4, и я уверен, что Pentium 5 будет также поддерживать команды 8086. Это делает код 8086 очень привлекательным, так как он выполняется как на старых, так и на современных компьютерных системах. Другим преимуществом является то, что набор команд 8086 сравнительно невелик, и поэтому изучить его будет легче.
Emu8086 имеет более легкий синтаксис, чем любые другие ассемблеры, но будет генерировать программу, которая сможет быть выполнена на любом компьютере, поддерживающем машинный код 8086. Это большой плюс для начинающих! Примечание: Если вы не используете Emu8086 для компиляции кода, вы не сможете выполнить ваш исходный код в пошаговом режиме.
Примечание: Если при попытке запустить вашу программу, вам выдаются сообщения о том, что те или иные команды не поддерживаются, то вы не сможете выполнить эту программу в отладочном режиме. Однако ее можно просто откомпилировать и запустить обычным образом (не под управлением Emu8086).
Как начать?
Запустите Emu8086, выбрав ее значок в меню "Пуск", или непосредственно запустите приложение Emu8086. exe.
Выберите "Samples (примеры)" из меню "File".
Щелкните кнопку [Compile and Emulate] (или нажмите клавишу F5).
Щелкните кнопку [Single Step] (пошаговый режим) (или нажмите клавишу F8), и наблюдайте за выполнением кода.
Попытайтесь открыть другие примеры. Все примеры имеют подробные комментарии, так что для обучения они весьма полезны.
2.1 Использование эмулятора Emu8086Напечатайте ваш код внутри текстовой области, и после щелчка кнопки [Compile]. Вас спросят о месте, где сохранить компилируемый файл.
После успешной компиляции Вы можете щелкать кнопку [Emulate], чтобы загрузить компилируемый файл в эмуляторе.
Если Вы хотите загрузить ваш код в эмулятор, только щелкните кнопку "Emulate".
Но Вы также можете использовать эмулятор, чтобы загрузить executables, даже если Вы не имеете первоначального исходного текста. Выберите " Show Emulator", меню "Emulator".
Попытка, загружающая файлы от папки "MyBuild". Если не имеется никаких файлов в "MyBuild" папке, возвращают исходному редактору, выбирают Samples от меню File, загружают любой образец, выбирают и затем загружаются в эмулятор.
2) произвести исследование области памяти согласно варианта задания. В результате исследования необходимо заполнить табл.1.1;
В памяти перечисляют первую строку - смещение, вторая строка - значение hexadecimal, третья строка - десятичное значение, и последняя строка - значение символа ASCII.
Кнопка [Single Step] выполняет команды, один за другим останавливающие после каждой команды.
[Run] кнопка выполняет команды один за другим с задержкой, установленной задержкой шага между командами.
Дважды щелкните на текстовых полях регистра, открывается окно "Extended Viewer " со значением того регистра, преобразованного ко всем возможным формам. Вы можете изменять значение регистра непосредственно в этом окне.
Дважды щелкните на элементе списка памяти, открывается " Extended Viewer" со значением WORD, загруженным со списка памяти в выбранном местоположении. Менее существенный байт - в младшем адресе: LOW BYTE загружен от выбранной позиции и HIGH BYTE от следующего адреса памяти. Вы можете изменять значение слова памяти непосредственно в окне " Extended Viewer",
Вы можете изменять значения регистров во времени выполнения, печатая по существующим значениям.
Кнопка [Flags] позволяет Вам рассматривать и изменять флажки на времени выполнения.
2.2 Компиляция кода АссемблераНапечатайте ваш код внутри текстовой области и щелкните кнопку [Compile]. Вас спросят, где сохранить откомпилированный файл. После завершения компиляции вы можете щелкнуть кнопку [Emulate] для загрузки откомпилированного файла в эмулятор.
Директивы, определяющие тип исполнимого файла:
#MAKE_COM#
#MAKE_BIN#
#MAKE_BOOT#
#MAKE_EXE#
Вы можете вставить эти директивы в исходный код для определения нужного вам типа исполнимого файла. В том случае, если компилятор не найдет ни одной из этих директив, он спросит у вас тип файла перед его созданием.
Описание типов исполнимых файлов:
#MAKE_COM# - самый старый и самый простой формат исполнимого файла. Такие файлы загружаются с префиксом 100h (256 байтов). Выберите СОМ Template из меню New, если вы планируете компилировать COM-файл. Директива компилятора ORG 100h должна быть добавлена перед кодом. Выполнение всегда начинается с первого байта файла. Поддерживается командной строкой DOS и Windows.
#MAKE_EXE# - более "продвинутый" формат исполнимого файла. Не ограничены размер и количество сегментов. Сегмент стека должен быть определен в программе. Вы можете выбрать EXE Template из меню New для создания простой ЕХЕ-программы с определенными сегментмами Данных, Стека и Кода. Точка входа (где начинается выполнение) определяется программистом. Поддерживается командной строкой DOS и Windows.
#MAKE_BIN# - простой исполнимый файл. Вы можете определить значения всех регистров, сегмент и смещение для области памяти, куда этот файл будет загружен. Если загрузить файл "MY. BIN" в эмулятор, он будет виден для файла - "MY. BINF" и загрузится файл "MY. BIN" в местоположение, определенное в файле "MY. BINF". Регистры также установятся с учетом информации из этого файла (откройте этот файл в редакторе для изменения или изучения). В том случае, если эмулятор не найдет файл "MY. BINF", будет использоваться текущие значения регистров и файл "MY. BIN" загрузится в текущий CS: IP.
Выполнение начинается со значения в CS: IP.
Этот тип файла уникален для Emu8086.
Файл ". BINF создается автоматически компилятором, если он находит директиву #MAKE_BIN#.
ПРЕДУПРЕЖДЕНИЕ! если файл ". binf" существует, то он будет перезаписан!
Значения должны быть шестнадцатиричными! Если эти значения не определены, то они устанавливаются по умолчанию:
LOAD_SEGMENT = 0100 LOAD_OFFSET = 0000 CS = ES = SS = DS = 0100 IP = 0000 Если LOAD_SEGMENT и LOAD_OFFSET не определены, то используются значения CS и IP, и наоборот.
Если значение Load to offset не равно нулю (0000), то ORG???? h должна быть добавлена в файл. BIN, где???? h - это смещение для загрузки. Это должно быть сделано для того, чтобы компилятор мог вычислить правильные адреса.
#MAKE_BOOT# - эта директива копирует первую дорожку дискеты (загрузочный сектор).
Вы можете записать загрузочный сектор виртуального дисковода (FLOPPY_0) через меню эмулятора:
[Virtual Drive] - > [Write 512 bytes at 7C00 to Boot Sector] Сначала вы должны откомпилировать ". boot"-файл, а затем загрузить его в эмулятор (см. "micro-os_loader. asm" и "micro-os_kernel. asm" в разделе "Samples").
Затем выберите в меню [Virtual Drive] - > [Boot from Floppy], чтобы загрузить эмулятор с виртуального дисковода.
Затем, если вам любопытно, вы можете записать виртуальную дискету на реальную дискету и загрузить с нее ваш компьютер. Я рекомендую использовать "RawWrite for Windows" с: http://uranus. it. swin.edu. au/~jn/linux/rawwrite. htm (учтите, что "micro-os_loader. asm" не использует MS-DOS-совместимый загрузочный сектор, так что лучше использовать чистую дискету, хотя она должна быть отформатирована IBM (MS-DOS)).
Директива компилятора ORG 7C00h должна быть добавлена перед кодом, если компьютер начинает загружаться с первой дорожки дискеты в адрес 0000: 7C00.
Размер. BOOT-файла должен быть менее 512 байтов (ограничен размером сектора дискеты).
Выполнение всегда начинается с первого байта файла. Этот тип файла уникален для эмулятора Emu8086.
Обработка ошибок
Компилятор выводит отчет об ошибках в отдельном окне:
MOV DS, 100 - это недопустимая команда, потому что в сегментный регистр нельзя устанавливать непосредственное значение - должны использоваться регистры общего назначения:
MOV AX, 100 MOV DS, AX MOV AL, 300 - это недопустимая команда, т.к регистр AL имеет только 8 битов, и его максимальное значение 255 (или 11111111b), а минимальное - 128.
Компилятор делает несколько проходов перед генерацией правильного машинного кода. Если он находит ошибку и не выполняет требуемое количество проходов, он может выдать неправильное сообщение об ошибке. Например:
#make_COM#
ORG 100h
MOV AX, 0
MOV CX, 5
m1: INC AX
LOOP m1; это не настоящая ошибка!
MOV AL, 0FFFFh; ошибка здесь.
RET
Список генерируемых ошибок:
(7) Condition Jump out of range (Условие перехода за пределами диапазона) !: LOOP m1 (9) Wrong parameters (Неправильнве параметры): MOV AL, 0FFFFh (9) Operands do not match (Операнды не соответствуют): Second operand is over 8 bits (Второй операнд более 8 битов) ! Первое сообщение (7) - неправильное. Компилятор не закончил вычисление смещений для меток, поэтому он думает, что смещение метки m1 - это 0000. Этот адрес лежит за пределами диапазона, т.к мы начинаем со смещения 100h.
Внесите исправления в эту строку: MOV AL, 0FFFFh (AL не может содержать значение 0FFFFh). Это устранит обе ошибки! Например:
#make_COM#
ORG 100h
MOV AX, 0
MOV CX, 5
m1: INC AX
LOOP m1; тот же самый код без ошибки!
MOV AL, 0FFh; все!
RET
При сохранении компилируемого файла, компилятор также сохраняет 2 других файла, которые используются эмулятором для отображения фактического исходного кода при его исполнении и выборе соответствующей строки.
asm - этот файл содержит оригинальный исходный код, который был использован для создания исполнимого файла.
debug - этот файл содержит информацию, которая позволяет эмулятору выбирать строки оригинального исходного кода во время выполнения машинного кода.
symbol - Таблица символов. Она содержит информацию, которая позволяет отображать окно "Variables" (Переменные). Это текстовый файл, так что вы можете посмотреть его из текстового редактора.
binf - этот файл содержит информацию, которая используется эмулятором для загрузки BIN-файла в указанное местоположение, и установки значений регистров предшествующих выполнению (создается только в том случае, если исполнимый файл - это BIN-файл).
2.3 Редактор исходного кодаИспользование мыши Редактор поддерживает следующие действия мыши:
Горячие клавиши редактора:
Допустимые правила синтаксиса выражений для поиска и замены
Если появятся проблемы с редактором исходного кода, вы можете вручную скопировать файл "cmax20. ocx" из каталога, где установлена программа, в папку Windows\System или Windows\System32, заменив существующую версию этого файла (после этого может потребоваться перезагрузка компьютера
2.4 Ассемблер
Что такое ассемблер? Ассемблер - это программа, преобразовывающая исходный текст программы, написанной на языке ассемблера, в машинный код. Дополнительно ассемблер может создавать листинг программы с номерами строк, адресами переменных, операторами исходного языка и таблицей перекрестных ссылок символов и переменных, используемых в программе. Совместно с ассемблером используется программа, называемая компоновщиком (linker) или редактором связей (linkage editor). Она объединяет отдельные файлы, созданные ассемблером, в единую исполняемую программу. В блок базовых программ входит также отладчик (debugger) позволяющий программисту пошагово выполнять программу, проверять и изменять содержимое памяти.
Какие типы программ мы будем создавать? Мы будем писать два основных типа программ, которые перечислены ниже.
16-разрядные программы для реального режима адресации. Эти программы предназначены для выполнения в системе MS DOS либо в среде эмулятора DOS под Linux. Большинство примеров из этой книги можно адаптировать для выполнения в реальном режиме адресации. О программировании для реального режима адресации речь пойдет в многочисленных примечаниях книги. Кроме того, две главы полностью посвящены выводу текстовой и графической информации на экран монитора в режиме MS DOS.
32-разрядные программы для защищенного режима. Эти программы предназначены для запуска в окне текстового терминала (консоли) вереде операционной системы Microsoft Windows. С их помощью вы сможете отобразить на экране монитора как текстовые, так и графические данные.
Как язык ассемблера связан с машинным кодом? Во-первых, машинный код - это набор чисел, которые интерпретируются центральным процессором компьютера и определяют выполняемые им действия. Например, все процессоры Intel семейства IA-32 имеют совместимый между собой машинный код. Машинный код состоит исключительно из двоичных чисел. Во-вторых, язык ассемблера состоит из набора операторов, понятных человеку. Каждый оператор начинается с короткого мнемонического обозначения выполняемых процессором действий, например ADD (сложить), MOV (переслать), SUB (вычесть) или CALL (вызвать). Язык ассемблера однозначно связан с машинным кодом. Это значит, что каждый оператор языка ассемблера соответствует одной команде машинного кода.
Какое отношение имеет язык ассемблера к языкам высокого уровня, таким как C++ или Java? Языки высокого уровня, такие как C++ или Java, не имеют однозначного соответствия с языком ассемблера и, следовательно, с машинным кодом. Например, один оператор языка C++ транслируется в несколько операторов языка ассемблера или несколько машинных команд. Давайте посмотрим, как происходит процесс трансляции оператора языка C++ в машинный код. Поскольку анализировать двоичный машинный код очень трудно, вместо него мы рассмотрим эквивалентные операторы языка ассемблера. В приведенном ниже операторе языка C++ выполняются две арифметические операции и полученный результат присваивается переменной. Предположим, что существуют целочисленные переменные X и Y:
X = (У + 4) 3;
В результате трансляции получится приведенный ниже набор ассемблерных команд. Обратите внимание, что одному оператору языка высокого уровня соответствует несколько команд языка ассемблера, так как последний однозначно связан с машинным кодом:
mov еах, У; Загрузить значение переменной Y в регистр ЕАХ
add eax,4; Прибавить число 4 к регистру ЕАХ
mov ebx,3; Загрузить число 3 в регистр ЕВХ
imul ebx; Умножить содержимое регистра ЕАХ на содержимое ЕВХ
mov Х, еах; Переслать содержимое регистра ЕАХ в переменную X
С точки зрения программиста регистры - это обычные переменные, которым присвоены стандартные имена, находящиеся внутри центрального процессора. Обычно регистры используются в качестве одного из операндов при выполнении команд процессором.
С помощью этого примера мы вовсе не хотели показать, что язык C++ "лучше" или что он мощнее языка ассемблера. Нашей целью было продемонстрировать, как один оператор языка высокого уровня порождает несколько команд языка ассемблера. Как вы уже знаете, язык ассемблера однозначно связан с машинным кодом. Последний состоит из набора чисел, с помощью которых закодированы выполняемые процессором действия.
Являются ли программы на языке ассемблера переносимыми? Важным отличием языка ассемблера от языков высокого уровня является то, что написанные на нем программы не являются переносимыми. Говорят, что язык программирования является переносимым {portable), если написанные на нем программы можно скомпилировать и запустить на разных компьютерных платформах. Например, программы, написанные на языке C++, Moiyr быть скомпилированы и запушены практически на любом компьютере и п любой операционной системе при условии, что в них не используются вызовы библиотечных функций, характерные для конкретной операционной системы. Основным отличием языка Java является то, что написанные на нем программы после компиляции могут выполняться в любой компьютерной системе, для которой существует реализация виртуальной машины Java.
Учитывая изложенные выше моменты, язык ассемблера не может быть переносимым по определению, поскольку он тесно связан с архитектурой процессоров определенного семейства. Таким образом, на сегодняшний день существует несколько совершенно разных языков ассемблера. Каждый из них привязан либо к конкретному семейству процессоров, либо к конкретной архитектуре компьютера. Среди них можно выделить семейство процессоров Motorola 68x00, Intel IA-32, SUN Sparc, VAX и IBM-370. Команды в языке ассемблера соответствуют командам конкретного процессора. Например, язык ассемблера, рассмотренный в этой книге, предназначен для программирования только процессоров Intel, принадлежащих семейству 1А-32.
Зачем изучать язык ассемблера? А если взять хорошую книгу, в которой описана архитектура конкретного компьютера и структура его процессора? Неужели она не заменит это описание программирования на языке ассемблера?
Я уверен, что вы связаны с написанием программ для встраиваемых компьютерных систем. Подобные программы обычно пишут на языках С, Java или ассемблере, после чего полученный машинный код записывают в запоминающее устройство (постоянное или перепрограммируемое) микроконтроллера. Затем сам микроконтроллер устанавливают в управляемое им устройство. В качестве примера встраиваемых устройств можно привести системы питания и зажигания автомобилей, системы управления кондиционерами, охранные системы, системы управления полетами, электронные записные книжки, модемы, принтеры и другие "умные" устройства, содержащие встроенный микропроцессор.
В большинстве специализированных игровых приставок к программам предъявляются довольно жесткие требования к объему используемой в них памяти и к быстродействию самих программ. Все это требует высокой степени оптимизации этих программ как по скорости, так и по используемой ими памяти. Поэтому программисты, занимающиеся написанием кода для таких приставок, должны учитывать особенности их аппаратного обеспечения. В подобных ситуациях они часто в качестве средства разработки выбирают язык ассемблера, поскольку он позволяет им получить полный контроль над процессом создания машинного кода.
Для прикладного программиста язык ассемблера поможет преодолеть ограничения, накладываемые используемым ими языком высокого уровня в плане выполнения определенных типов операций. Например, в языке Microsoft Visual Basic обработка строковых данных выполняется крайне неэффективно. Поэтому для выполнения операций со строками, такими как шифрование данных и обработка битовых строк, программисты обычно используют подпрограммы, написанные на языке C++ или ассемблере и размешенные в DLL (Dynamic Link Libraries, или динамически загружаемые библиотеки).
Если вы связаны с разработкой специализированного оборудования, то наверняка вам придется написать драйвер устройства, управляющий работой того оборудования, которое выпускает ваша фирма. Драйверы устройств (device drivers) - это низкоуровневые системные программы, напрямую взаимодействующие с обслуживаемыми ими устройствами. В задачу драйвера входит преобразование обобщенных запросов, посылаемых операционной системой на конкретное устройство, в последовательность низкоуровневых команд, характерных для данного конкретного устройства. Например, производители принтеров комплектуют каждое выпускаемое ими устройство отдельными драйверами для каждой из поддерживаемых операционных систем, таких как Microsoft Windows, Mac OS, Linux и др.
Существуют ли какие-либо правила в языке ассемблера? Да, конечно, в языке ассемблера приняты несколько правил, обусловленные внутренней физической структурой самого процессора и его системой команд. Например, два операнда, используемые в одной команде, должны иметь одинаковый размер. Тем не менее, в языке ассемблера гораздо меньше правил, чем, например, вС++.
В программах на языке ассемблера можно легко обойти любые ограничения, принятые в языках высокого уровня. Например, в языке C++ не разрешается присваивать значение указателя одного типа указателю другого типа. Как правило, в этом ограничении нет ничего плохого, поскольку оно позволяет избежать логических ошибок в программах.
Опытный программист может найти способ, как преодолеть это ограничение, однако полученный в результате код будет слишком сложным. В отличие от C++, язык ассемблера не накладывает никаких ограничений относительно указателей. Здесь операции присваивания значений указателям целиком и полностью определяются программистом.
Естественно, что цена такой свободы чрезвычайно высока: программист тратит очень много времени на отладку ассемблерных программ на уровне машинного кода.
Лабораторная работа № 1
Ознакомление с работой эмулятора Emu8086
Цель работы: ознакомление со структурой учебной микроЭВМ (эмулятора Emu8086), органами управления и режимами ее работы.
0 комментариев