Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Введение. Московский государственный университет путей сообщения (МИИТ)





ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

 

Московский государственный университет путей сообщения (МИИТ)

 

Кафедры «Управление и информатика в технических системах» и

«Энергоснабжение электрических железных дорог»

 

УПРАВЛЕНИЕ, ИНФОРМАТИКА И МИКРОПРОЦЕССОРНАЯ ТЕХНИКА

В ЭЛЕКТРОТЕХНИЧЕСКИХ УСТРОЙСТВАХ

СИСТЕМЫ ЭНЕРГОСНАБЖЕНИЯ.

ЯЗЫК АССЕМБЛЕРА (ДЛЯ INTEL P6)

 

 

Методические указания к лабораторным работам

по дисциплинам «Машинные языки программирования» и

«Микропроцессорные системы в электроснабжении»

 

Москва – 2008

 


ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

 

Московский государственный университет путей сообщения (МИИТ)

Кафедры «Управление и информатика в технических системах» и

«Энергоснабжение электрических железных дорог»

 

У т в е р ж д е н о

редакционно-издательским

советом университета

 

 

УПРАВЛЕНИЕ, ИНФОРМАТИКА И МИКРОПРОЦЕССОРНАЯ ТЕХНИКА

В ЭЛЕКТРОТЕХНИЧЕСКИХ УСТРОЙСТВАХ

СИСТЕМЫ ЭНЕРГОСНАБЖЕНИЯ.

ЯЗЫК АССЕМБЛЕРА (ДЛЯ INTEL P6)

 

 

Москва – 2008

УДК: 002: 621. 331: 621. 311: 681. 3

B24

Гречишников В.А., Воробьева Л.Н., Балакина Е. П. Управление, информатика и микропроцессорная техника в электротехнических устройствах системы энергоснабжения. Язык ассемблера (для Intel P6).: Методические указания к лабораторным работам. – М.: МИИТ, 2008. – 57 с.

Oacute; Московский государственный университет

Путей сообщения (МИИТ), 2008


Содержание

Введение.. 4

Порядок выполнения лабораторных работ. 8

Лабораторная работа №1. Регистры, данные и команды пересылки данных. 18

Лабораторная работа №2. Арифметические команды.. 29

Лабораторная работа №3. Команды передачи управления. 39

Лабораторная работа №4. Логические команды и команды манипулирования битами. 47

Список использованной и рекомендуемой литературы.. 55

Введение

 

После создания языков программирования высокого уровня, т.е. таких языков программирования, которые несколько приближенны к языку и мышлению человека (таких, как Fortran, Basic, Pascal, C++ и их современные объектно-ориентированные продолжатели Visual Basic, Delphi, C# и т.д.) постоянно задается вопрос, а зачем надо изучать язык Ассемблера, относящийся к машинным, низкоуровневым языкам? С тех же времен на этот вопрос дается традиционный ответ, который не только не утратил своей актуальности, но и может быть расширен.

На сегодняшний день промышленностью разных стран выпускается большое количество микропроцессоров и микроконтроллеров, которые представляют собой интегральные микросхемы. Микроконтроллер – это самостоятельный класс устройств, который содержит в себе, в едином корпусе, микропроцессорное ядро и набор периферийного оборудования, такого как таймер/счетчики, каналы ввода/вывода, широтно-импульсные модуляторы, аналого-цифровые и цифро-аналоговые преобразователи, сторожевой таймер, менеджер питания, тепловой сенсор и т.д., поэтому далее при разговоре про ассемблер будем употреблять слово микропроцессор, подразумевая под ним и микроконтроллер с его микропроцессорным ядром. И микропроцессор, и микроконтроллер представляют собой конечные автоматы с программным принципом управления, а значит, последовательность двоичных кодов позволяет управлять внутренним состоянием микропроцессора и микроконтроллера и всеми внутренними компонентами, заставляя их, в конечном итоге, приходить к состоянию, необходимому в данной задаче. Последовательность двоичных кодов и есть программа для микропроцессора или программа на машинном языке. Язык ассемблера – это переведенный на псевдочеловеческий язык машинный код. Т.е. ассемблер теснейшим образом связан с внутренним устройством, архитектурой и представлением информации в микропроцессоре. Значит, если Вы знаете язык ассемблера, то Вы однозначно знаете микропроцессор, а значит, Вы можете напрямую с ним «общаться» заставляя его эффективнее решать нужные Вам задачи. По аналогии можно сказать, что если Вы знаете какой-либо иностранный язык, то Вы можете эффективнее жить в государстве, где данный иностранный язык государственный, и не пользоваться переводчиками (людьми, разговорниками, электронными переводчиками), которые не всегда точно могут передать Вашу мысль собеседнику. Хотелось бы отметить, что языков Ассемблера множество, так как множество архитектур построения микропроцессоров. Фактически, для каждого семейства микропроцессоров есть свой ассемблер.

Зная о том, что язык Ассемблера – это машинный язык, а значит, с помощью его можно эффективнее управлять микропроцессором, профессиональные программисты используют его в самых критических по времени местах программ, даже если программируют на языках высокого уровня. Например, если посмотреть модуль System в Delphi, который выполняет все базовые функции и автоматически подключается ко всем проектам, то в нем можно увидеть множество ассемблерных вставок. Это понятно, так как, если этот модуль основной (т.е. в нем содержаться основные процедуры и функции, которые чаще всего выполняются), то нужно, чтобы они быстро и эффективно обрабатывались микропроцессором, а значит, их и реализуют на ассемблере. Все основные математические функции написаны на ассемблере. Вот, например, как выглядит реализация функции вычисления экспоненты:

function Exp(const X: Extended): Extended;

asm

FLD X

FLDL2E

FMUL

FLD ST(0)

FRNDINT

FSUB ST(1), ST

FXCH ST(1)

F2XM1

FLD1

FADD

FSCALE

FSTP ST(1)

end;

Также, все, что касается работы с памятью, тоже реализуется с помощью ассемблерных вставок, так как работа с памятью происходит постоянно, то здесь необходима самая высокая скорость и эффективность. Желающие могут посмотреть реализацию функции Move в модуле System, а также все, что касается реализации менеджера памяти.

Некоторые могут заметить, что компилятор и так занимается тем, что переводит с языка высокого уровня на машинный, а значит, и так понятно, что в конечном итоге все будет приведено к машинному коду. Это так, однако, ассемблерные вставки все равно используют. Почему? Дело в том, что язык высокого уровня строится на некотором базовом наборе функциональных возможностей или кирпичиков, с помощью которых реализуются все дальнейшие программные конструкции любой сложности. Поскольку набор таких кирпичиков, хоть и увеличивается с развитием языка, но до сих пор ограничен и обладает некоторым универсализмом, позволяющим использовать их в любых ситуациях и допустимых сочетаниях. Это приводит к тому, что при компилировании для каждого кирпичика формируется универсальный ассемблерный блок, который будет пригоден для любых ситуаций, но обладает некоторой избыточностью, как плата за универсальность, а значит, менее эффективен. В современных языках высокого уровня избыточность выходного машинного кода небольшая и ее стараются постоянно уменьшить, но избавиться совсем от нее невозможно.

Мы уже отмечали, что знание ассемблера означает знание микропроцессора, а каждый микропроцессор обладает своими особенностями. Быстродействие каждого микропроцессора зависит не только от тактовой частоты и объема кеш-памяти. На сегодняшний день разработано большое количество инженерных ухищрений, которые позволяют повысить быстродействие микропроцессора. К таким ухищрениям относятся суперскалярная конвейерная архитектура, блок предсказания ветвления, несколько исполнительных блоков (целочисленные вычисления, вычисления с плавающей точкой, выполнение инструкций мультимедийного расширения, потоковых команд и т.д.), внутренняя переадресация регистров, изменение очередности выполнения микрокоманд и т.д. Ситуация усложняется выходом на рынок многоядерных микропроцессоров, где архитектура еще сложнее. Все это приводит к тому, что реализация одних и тех же алгоритмов разными наборами машинных кодов на одном микропроцессоре, так же как и реализация одних и тех же алгоритмов одними и теми же наборами команд на разных микропроцессорах одного класса при прочих равных условиях, будут выполняться с разными скоростями! Это происходит из-за того, например, что внутренняя архитектура одного микропроцессора на одном ядре позволяет выполнять параллельно несколько команд в определенном сочетании, а у другого микропроцессора не позволяет. При этом, языки высокого уровня разрабатываются универсальными для разных типов процессоров, а значит, редко используют внутренние особенности архитектуры микропроцессоров, а значит, могут создавать не очень эффективный код для любых микропроцессоров или для одного более эффективный, а для другого менее эффективный. Если же программировать на ассемблере под конкретный микропроцессор, зная все особенности его внутреннего построения, то машинный код можно будет всегда сделать эффективнее.

Если речь идет о встраиваемых микропроцессорных системах, мобильных устройствах, промышленных компьютерах, интеллектуальных микропроцессорных датчиках, измерителях и регистраторах и т.д., то вопрос об эффективности многократно возрастает, так как все подобные системы для уменьшения стоимости, энергопотребления, габаритных показателей производятся с ограниченными объемами памяти и производительностью, но всегда функционально загруженными «под завязку», да еще и есть желание расширить его функциональный состав. Программирование таких систем, в которых необходимо выполнять математические вычисления, контролировать работу всех периферийных устройств, принимать и передавать информацию и т.д., не обходится и не может обойтись без использования ассемблера.

Некоторые могут заметить, что они не собираются быть профессиональными программистами, тем более программировать мобильные системы или промышленные микропроцессорные контроллеры, а значит, знания об ассемблере им не нужны. Да, с этим можно отчасти согласиться. Но Вас никто на профессиональных программистов не готовит. Вы обучаетесь в университете, а значит, получаете академическое инженерное образование с широким кругозором в лучших традициях советской высшей школы. На сегодняшний день человечество вступило в век информации, а подавляющее большинство информационных процессов зиждется на цифровых технологиях с применением микропроцессорной техники, и теперь уже сложно представить рабочее место человека без персонального компьютера, а самого человека без мобильного телефона. Значит, современный инженер должен понимать основы функционирования современных микропроцессорных систем, знать их лучше, чем обыватель, ибо просто работать на компьютере может уже и первоклассник. А, поскольку, функционирование микропроцессорной техники основано на программном принципе управления, поскольку есть множество принципов построения архитектур микропроцессоров и микропроцессорных систем, поскольку есть множество видов представления информации в микропроцессорных системах (а знания о представлении информации позволяет более глубоко понимать работу всех вычислительных и не только программ, таких как MS Excel, СУБД, программы обработки изображений, векторной графики, инженерных программ, например, MatLab, MathCad, все языки программирования и т.д.), то знание низкоуровневого языка программирования ассемблера, изучение которого теснейшим образом связано с обозначенными вопросами, несомненно, является обязательным!

 


Date: 2015-10-19; view: 452; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию