рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ

СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ - Лекция, раздел Программирование, Министерство Образования Российской Федерации Самарский Государственный А...

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ

СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ
КУРС ЛЕКЦИЙ ДЛЯ СТУДЕНТОВ ЗАОЧНОГО ФАКУЛЬТЕТА

САМАРА
2002


 

УДК 681.3

 

Системное программирование: Курс лекций / О.П. Солдатова, С.В. Востокин. Самар. гос. аэрокосм. ун-т. Самара, 2002. С. 127.

 

ISBN 5-7883-0118-1

 

Дано описание архитектуры и системы команд реального режима работы микропроцессоров фирмы INTEL. Дано описание архитектуры и системы команд устройства с плавающей точкой (FPU). Приведены варианты заданий контрольных работ по курсу и примеры программ.

Курс лекций предназначен для студентов заочной формы обучения специальности 22.02 – «Автоматизированные системы обработки информации и управления». Данный курс лекций будет также полезен студентам других специальностей, знакомых с основами архитектуры микропроцессоров фирмы INTEL и занимающихся как по очной, так и заочной форме обучения. Работа подготовлена на кафедре ИСТ.

 

 

Печатается по решению редакционно-издательского совета Самарского государственного аэрокосмического университета имени академика С.П. Королева.

 

 

Рецензент канд. техн. наук, доц. Л.А. Ж а р и н о в а

ISBN 5-7883-0118-1Ó Солдатова О.П., Востокин С.В., 2002

Ó Самарский государственный

аэрокосмический университет, 2002


Содержание

1.ВВЕДЕНИЕ В АРХИТЕКТУРУ ЭВМ. 5

Структура персонального компьютера. 5

2.АРХИТЕКТУРА РЕАЛЬНОГО РЕЖИМА РАБОТЫ М/П СЕМЕЙСТВА 8086 18

2.1.Форматы данных микропроцессора. 18

2.1.1.Числа. 18

2.1.2.Символы.. 18

2.1.3.Указатели. 19

2.1.4.Цепочки. 19

2.2.Адресация памяти. 19

2.3.Внутренние регистры процессора. 20

2.4.Режимы адресации. 23

2.5.Система команд микропроцессора. 26

2.5.1.2. Команды PUSH и POP . 29

2.5.1.4. Адресные команды (пересылки адреса) 31

2.5.1.5. Флажковые команды (команды пересылки флагов). 33

2.5.2.2.Команды вычитания. 36

2.5.2.3.Команды умножения и деления. 36

2.5.2.4.Команды расширения знака. 39

2.5.3.1.Булевы команды. 44

2.5.3.2.Команды сдвигов. 45

2.5.3.3.Команды циклических сдвигов. 46

2.5.3.4.Команды двойного сдвига. 49

2.5.4.1.Команды безусловной передачи управления. 50

2.5.4.3.Команды SetCondition. 54

2.5.5.1.Команды пересылки цепочки. 57

2.5.5.2.Команды сравнения цепочек. 58

2.5.5.3.Команды сканирования цепочек. 59

2.5.5.4.Команды загрузки. 59

2.5.5.5.Команды ввода и вывода цепочек. 60

2.5.5.6.Замена сегмента. 60

2.5.6.1.Команды управления флагами. 61

2.5.6.2.Команды синхронизации. 61

2.5.6.3.Команда холостого хода. 62

2.5.6.4.Команды прерываний. 63

3.ДИРЕКТИВЫ И ОПЕРАТОРЫ АССЕМБЛЕРА.. 66

3.1.Структура программы.. 66

3.2.Организация программы. 69

3.2.1. Модели памяти. 69

3.2.2. Процедуры.. 71

3.2.3. Директивы задания набора допустимых команд. 71

3.3.Примеры использования директив в программах типа .EXE и .COM. 72

4.АРХИТЕКТУРА И СИСТЕМА КОМАНД АРИФМЕТИЧЕСКОГО СОПРОЦЕССОРА.. 75

4.1.Форматы чисел сопроцессора. 75

4.1.1.`Целые числа. 75

4.1.2. Вещественные числа. 76

4.1.3.Диапазоны вещественных чисел в х87. 78

4.2.Особые случаи вещественной арифметики. 78

4.3.Формирование специальных значений в особых случаях. 80

4.3.1. Случай неточного результата. 80

4.3.2.Численное антипереполнение. 81

4.3.3. Денормализованный операнд. 82

4.3.4. Деление на ноль. 83

4.3.5.Численное переполнение. 85

4.3.6.Недействительная операция. 86

4.4.Регистры математического сопроцессора. 88

4.4.1.Численные регистры (регистровый стек). 88

4.4.2.Регистр управления (cw) 89

4.4.3.Регистр состояния. 89

4.4.4. Регистр тэгов (признаков). 90

4.4.5.Указатели особого случая. 91

4.5.Система команд арифметического сопроцессора. 91

4.5.1.Команды передачи данных. 91

4.5.2.Арифметические команды.. 93

4.5.3.Дополнительные арифметические команды.. 94

4.5.4.Команды сравнений. 96

4.5.5.Трансцендентные команды.. 99

4.5.6.Административные команды.. 100

4.6.Совместная работа двух процессоров в системе. 103

4.6.1.Синхронизация по командам. 104

4.6.2.Синхронизация по данным. 105

5.ВАРИАНТЫ КОНТРОЛЬНЫХ РАБОТ.. 106

5.1.Контрольная работа №1. 106

5.2. Контрольная работа №2. 110

6.ПРИМЕРЫ ПРОГРАММ... 112

СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ... 118

 

 


 

ВВЕДЕНИЕ В АРХИТЕКТУРУ ЭВМ.

Структура персонального компьютера.

 

Под термином “Архитектура ЭВМ” - будем понимать представление о машине в терминах функциональных основных модулей, языка, структуры данных (без деталей их аппаратной реализации).

С точки зрения пользователя, можно выделить следующие группы характеристик, определяющие архитектуру ЭВМ:

Структура машинного кода и система команд, определяющие алгоритмические возможности процессора.

Технические и эксплуатационные характеристики ЭВМ: производительность, емкость памяти, тактовая частота, стоимость и т.д.

Состав и характеристики функциональных модулей базовой конфигурации ЭВМ, наличие возможности подключения дополнительных модулей.

Структура и состав системного программного обеспечения и принципы его взаимодействия с аппаратурой.

Структурная схема ПК приведена на рисунке 1.1.


 
 

 


Рисунок 1.1. Структурная схема ПК

 


Микропроцессор (МП) – центральный блок ПК, предназначенный для управления работой всех блоков машины и для преобразования информации, то есть. выполнения арифметических и логических операций над информацией. Микропроцессор состоит из следующих схем:

· Арифметико-логическое устройство (АЛУ) предназначено для выполнения всех арифметических и логических операций над числовой и символьной информацией, для ускорения операций с вещественными числами к АЛУ подключается математический сопроцессор.

· Внутренние регистры – служат для кратковременного хранения, записи и выдачи информации, непосредственно используемой в вычислениях в ближайшее время работы ПК. Регистры – быстродействующие ячейки памяти различной длины (8¸64 разрядов).

· Устройство управления (УУ) – формирует и подает на все блоки машины символы управления (управляющие символы); формирует адреса ячеек памяти и передает их для выполнения операции.

· Интерфейс МП – реализует сопряжение и связь с другими устройствами ПК; включает в себя связь между устройствами МП, буферные регистры, схемы управления портами ввода-вывода и системной шиной.

Интерфейс – совокупность средств сопряжения и связи устройств компьютера, обеспечивающая их эффективное взаимодействие. Порт ввода-вывода – аппаратура сопряжения, позволяющая подключить к микропроцессору другое устройство ПК.

Генератор тактовых импульсов генерирует последовательность электрических импульсов; синхронизирующих работу всех устройств ПК; частота генерируемых импульсов определяет тактовую частоту ПК, которая является одной из основных характеристик ПК.

Такт – промежуток времени между соседними импульсами.

Системная шина – основная интерфейсная система ПК.

Системная шина включает в себя:

· шину данных, содержащую провода и схемы сопряжения для параллельной передачи всех разрядов числового кода операнда;

· шину адреса, содержащую провода и схемы сопряжения для параллельной передачи всех разрядов числового кода адреса ячейки ОП или порта ввода-вывода внешнего устройства;

· шину управления, содержащую провода и схемы сопряжения для передачи управляющих сигналов во все блоки ПК;

· шину питания, имеющую провода и схемы сопряжения для подключения блоков ПК к системе электропитания.

Системная шина обеспечивает 3 направления передачи информации:

между МП и ОП;

между МК и портами ввода-вывода внешних устройств;

между ОП и портами ввода-вывода внешних устройств (в режиме прямого доступа к памяти).

Все блоки ПК (точнее их порты ввода-вывода) через соответствующие унифицированные разъемы подключаются к шине единообразно: непосредственно или через адаптеры.

Управление системной шиной осуществляется либо непосредственно, либо через контроллер шины. Обмен информацией между внешними устройствами и системной шиной выполняется с использованием ASCII-кодов.

Функции хранения информации выполняет память внутренняя и внешняя.

Основная память (ОП) – предназначена для хранения и оперативного обмена информацией с другими блоками ПК. ОП состоит из ПЗУ и ОЗУ. В последнее время в состав ОП входят также КЭШ-память и FLASH- память

ПЗУ – служит для хранения постоянной программной и справочной информации, позволяет оперативно только считывать хранящуюся в нем информацию (изменить информацию в ПЗУ нельзя).

ОЗУ – предназначено для оперативной записи, хранения и считывания информации (программ и данных), непосредственно участвующей в информационно-вычислительном процессе, выполняемом ПК в текущий период времени.

Внешняя память – используется для долговременного хранения любой информации, которая может когда-либо потребоваться. Во внешней памяти хранится все программное обеспечение ПК.

Источник питания – блок, содержащий системы автономного и сетевого энергопитания ПК.

Таймер – внутримашинные электронные часы, обеспечивающие автоматический съем значения текущего момента времени (год, месяц, день, часы, минуты, секунды и доли секунды).

Таймер подключается к автономному источнику питания – аккумулятору и при отключении ПК от сети продолжает работать.

Внешние устройства (ВУ) – обеспечивают взаимодействие ПК с окружающей средой: пользователями, объектами управления и другими ЭВМ.

ВУ разделяются на следующие классы:

· внешние запоминающие устройства (ВЗУ);

· устройства ввода информации;

· устройства вывода информации;

· средства связи и телекоммуникации.

Устройства ввода информации:

· клавиатура;

· графические планшеты (диджитайзеры) – ручной ввод графической информации путем перемещения по планшету специального указателя (пера);

· сканеры;

· манипуляторы (джойстик – рычаг, мышь, трекбол – шар в оправе, световое перо – для ввода графической информации на экран дисплея путем управления движением курсора по экрану);

· сенсорные экраны – для ввода отдельных элементов изображения, программ или команд в ПК;

· устройство речевого ввода-вывода – быстроразвивающиеся средства мультимедиа;

· видеомонитор – устройство для отображения вводимой и выводимой информации.

Устройства вывода информации:

· принтеры – печатающие устройства для регистрации информации на бумажный носитель.

· графопостроители (плоттеры) – устройства для вывода графической информации из ПК на бумажный носитель. Векторные плоттеры – вычерчивают изображение при помощи пера. Растровые бывают электростатические, струйные и лазерные. По конструкции плоттеры подразделяются на планшетные и барабанные.

Устройства связи и телекоммуникации используются для связи с другими приборами и подключения ПК к каналам связи и другим ЭВМ и вычислительным сетям (сетевые интерфейсные платы, мультиплексоры передачи данных, модемы).

Сетевой адаптер – служит для подключения ПК к каналу связи для работы в составе вычислительной сети. В глобальных сетях функции сетевого адаптера выполняет модулятор-демодулятор (модем).

Средства мультимедиа (multimedia – многосредовость ) – комплекс аппаратных и программных средств, позволяющих человеку общаться с ПК, используя самые разные , естественные для себя среды: звук, видео, графику, тексты, анимацию и др.

К средствам мультимедиа относятся: устройства речевого ввода-вывода, сканеры, высококачественные видео- и звуковые платы, платы видео-захвата (снимают изображения с видеомагнитофона или видеокамеры и вводят его в ПК), высококачественные акустические и видеовоспроизводящие системы с усилителями, звуковыми колонками, большими видео-экранами. К средствам мультимедиа относят также внешние запоминающие устройства большой емкости на оптических дисках, часто используемые для записи звуковой и видео информации.

Математический сопроцессор – используется для ускоренного выполнения операций над числами с плавающей запятой. Имеет свою систему команд и работает параллельно с основным МП, но под его управлением. Последние модели МП, начиная с МП 80486DX, включают сопроцессор в свой состав в качестве устройства с плавающей точкой (FPU).

Контроллер прямого доступа к памяти освобождает МП от прямого управления НМД, что существенно повышает эффективность ПК.

Сопроцессор ввода-вывода – за счет параллельной работы с МП значительно ускоряет выполнение процедур ввода-вывода при обслуживании нескольких внешних устройств, освобождая МП от обработки процедур ввода-вывода, в том числе реализует и режим прямого доступа к памяти.

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

Конструктивно ПК выполнены в виде центрального системного блока, к которому через разъемы подключаются ВУ: дополнительная память, клавиатура, дисплей, принтер и т.д.

Системный блок обычно включает в себя системную плату (материнскую плату), блок питания, накопители на дисках, разъемы для дополнительных устройств и платы расширения с контроллерами-адаптерами ВУ.

На системной плате размещаются:

· микропроцессор;

· математический сопроцессор;

· генератор тактовых импульсов;

· блоки (микросхемы) ОЗУ и ПЗУ;

· адаптеры клавиатуры, НЖМД, НГМД ;

· контроллер прерываний;

· таймер.

Микропроцессоры.

Микропроцессор (центральный процессор или CPU) – функционально законченное программно-управляемое устройство обработки информации, выполненное в виде одной или нескольких больших (БИС) или сверхбольших (СБИС) интегральных схем.

Функции МП.

Чтение и дешифрация команд из ОП.

Чтение данных из ОП и регистров адаптеров ВУ.

Прием и обработка запросов и команд от адаптеров на обслуживание ВУ.

Обработка данных и их запись в ОП и регистры адаптеров ВУ.

Выработка управляющих сигналов для всех узлов и блоков ПК.

Разрядность шины данных МП определяет разрядность ПК в целом; разрядность шины адреса МП – его адресное пространство.

Адресное пространство – это максимальное количество ячеек ОП, которое может быть непосредственно адресовано микропроцессором.

Первый МП был выпущен в США в 1971 году фирмой Intel – МП 4004. В настоящее время МП фирмы Intel и Intel-подобные являются наиболее популярными и распространенными.

Все МП можно разделить на 3 группы:

МП типа CISC (с полным набором команд);

МП типа RISC (с сокращенным набором команд);

МП типа MISC (с минимальным набором команд и весьма высоким быстродействием) – находятся в стадии разработки.

Большинство современных ПК типа IBM PC используют МП типа CISC.

Основные модели процессоров фирмы INTEL приведены в таблице.

Модель МП Разрядность, бит Тактовая частота, МГц Адресное пространство, байт Число команд Число эл-тов Год выпуска
  Данных Адреса          
4,77 4 ´10
4,77 64 ´10  
4,77 и 8 10
8, 16 4,77 и 8 10
8 и 10 10  
24 (20) 10-33 4´10(4´10)  
25-50 16´10(4´10)
33-100 16´10(4´10) 1,2´10
Pentium 50-150 4´10 3,1´10
Pentium Pro 66-200 4´10 5,5´10

Особенности некоторых процессоров:

Начиная с МП 80286 имеется возможность многозадачной работы и работы МП в вычислительной сети.

Начиная с МП 80386 используется конвейерное выполнение команд, что позволило увеличить быстродействие ПК в 2-3 раза, а также обеспечивается поддержка системы виртуальных машин, при которой в одном МП моделируется как бы несколько ПК, работающих параллельно и имеющих разные ОС.

МП Pentium – это МП 80586(P5), товарная марка Pentium запатентована фирмой Intel. Эти МП имеют пятиступенчатую конвейерную структуру и КЭШ-буфер для команд условной передачи управления, позволяющие предсказать направление ветвления программы; по эффективному быстродействию они приближаются к RISC МП. Обмен данными с системой может выполняться со скоростью 1 Гбайт/с. У всех МП Pentium имеется встроенная КЭШ -память, отдельно для команд, отдельно для данных; имеются специализированные конвейерные аппаратные блоки сложения, умножения и деления, значительно ускоряющие выполнение операций с плавающей запятой.

В качестве примера на рисунке 1.2 приведена упрощенная структурная схема микропроцессора i486.

.

 

 


 

Рисунок 1.2. Упрощенная структурная схема микропроцессора i486.


В состав микропроцессора входят девять внутренних функциональных устройств, которые работают параллельно:

шинный интерфейс;

внутренняя кэш-память;

устройство предвыборки (опережающей выборки) команд;

устройство дешифрирования команд;

устройство управления;

целочисленное устройство;

устройство с плавающей точкой;

устройство сегментации;

устройство страничного преобразования адреса.

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

Когда внутренние запросы данных или команд можно удовлетворить из кэш-памяти, обращение к внешней шине процессора не производится.

Дешифратор команд преобразует команды в управляющие сигналы низкого уровня и точки входа в микрокод.

Устройство управления выполняет микрокод и управляет целочисленным устройством, устройством с плавающей точкой и устройством сегментации. Результаты вычислений помещаются во внутренние регистры целочисленного устройства и устройства с плавающей точкой или кэш-память.

Формирование адреса производят устройства сегментации и страничного преобразования (используется только в защищенном режиме работы процессора). Логические адреса преобразуются устройством сегментации в физические адреса для реального режима работы или в линейные адреса для защищенного режима работы процессора. В свою очередь линейные адреса передаются в устройство страничного преобразования и кэш-память по 32-битной шине адреса. Устройство страничного преобразования превращает линейные адреса в физические, которые направляются в кэш-память по 20-битной шине.


2.АРХИТЕКТУРА РЕАЛЬНОГО РЕЖИМА РАБОТЫ М/П СЕМЕЙСТВА 8086

Форматы данных микропроцессора

Числа

Микропроцессор работает с двоичными числами со знаком и без знака, длиной 8 бит (1 байт), 16 бит (2 байта) или 32 бита (4 байта), с двоично-десятичными числами длиной 8 бит (BCD - числа) и с десятичными числами длиной 8 бит.

Байт - это число без знака в диапазоне от 0 до 255 или число со знаком в диапазоне от - 128 до +127.

Слово - это число без знака в диапазоне от 0 до 65535 или число со знаком, то от - 32768 до +32767.

Для 32-разрядных процессоров определены операции над двойными словами. Двойное слово - это число без знака в диапазоне от 0 до 4294967295, или число со знаком в диапазоне от -2147483648 до +2147483647.

Для чисел со знаком старший бит является знаковым: для положительных чисел он равен нулю, а для отрицательных чисел - единице.

Отрицательные числа представлены в дополнительном коде, который получается путем инвертирования всех разрядов положительного числа и суммирования полученного кода с единицей в младшем разряде.

Микропроцессор может выполнять арифметические операции над двоично-десятичными числами, хранящимися в упакованном (2 цифры в байте) формате, и над десятичными числами в неупакованном (1 цифра в байте) формате. Упакованный формат предполагает, что байт содержит две десятичные цифры, занимающие старший и младший полубайты. Диапазон представимых чисел составляет от 0 до 99. В неупакованном формате байт содержит одну десятичную цифру, которая обычно кодируется в символьном коде ASCII. Цифра 0 код ируется как 30Н, а цифра 9 - как 39Н.

Символы

Символьные данные хранятся в стандартном символьном коде ASCII, каждый символ занимает 1 байт. Микропроцессор ничего не знает об ASCII-коде и рассматривает символьные данные как цепочки произвольных байтов, то есть последовательность кодов символов.

Указатели

Далекий (FAR) межсегментный указатель применяется в тех случаях, когда программа осуществляет передачу управления в другой сегмент. Такой указатель…

Цепочки

Микропроцессоры семейства 8086 могут оперировать цепочками(строками) байт, слов и двойных слов (32-разрядные процессоры). Под цепочкой понимается последовательность взаимосвязанных элементов, хранящихся по соседним адресам. Длина цепочки не может превышать длину сегмента. Система команд процессора имеет набор цепочечных примитивов, позволяющих эффективно работать с цепочками.

Адресация памяти

Физический адрес образуется с помощью объединения 16 разрядного адреса сегмента и 16 разрядного смещения. Если адрес сегмента сдвинуть влево на 4… 2.3.Внутренние регистры процессора 2.3.1.Регистры общего назначения

Команды PUSH и POP .

! Стек растет по направлению уменьшения адресов ! PUSH начинается с уменьшения содержимого SP на 2, а команда POP завершается… Операндами команд PUSH и POP могут быть сегментный регистр, несегментный (шестнадцатиразрядный) ре­гистр или слово в…

Адресные команды (пересылки адреса)

LEA - загрузить смещение в регистр. Форматы команды: LEA LDS -загрузить полный адрес в DS и регистр;

Флажковые команды (команды пересылки флагов).

Команды LAHF (загрузить флаги в AH) и SAHF (запомнить AH во флагах). LAHF передает 5 флагов SF, ZF, AF, PF и CF в определенные биты регистра AH, а… Рисунок 2.1. Соответствие флагов разрядам регистра AH. Эти флаги выделены потому, что они были в микропроцессоре 8080. LAHF и SAHF предусмотрены в основ­ном, для…

Команды вычитания.

Команда CMP аналогична команде SUB, но результат не запоминается в приемнике, а устанавливаются только флаги в соответствии с результатом. CMP - это… Таблица 2.7. Состояние регистра флагов после выполнения команды CMP …  

Команды умножения и деления.

  При умножении двух байтов командой MUL произведение будет находиться в… Команда деления DIV делит 16-битовое число из регистра AX (или 32-битное число из регистров DX и AX, или 64-битное…

Команды расширения знака.

Новые команды расширения знака Начиная с микропроцессора 80386, существуют еще две команды расширения знака… 2.5.2.5.Десятичная арифметика.

Команды циклических сдвигов.

Примеры команд приведены в таблице 2.11. Таблица 2.11. Примеры команд циклических сдвигов. Операнд … КОП: SHR, SHL, SAL, SAR, ROR, ROL, RCR, RCL.

Команды двойного сдвига

SHLD, SHRD reg/ mem 16, reg, imn SHLD, SHRD reg/ mem 32, reg, imn, где imn - непосредственное значение, которое определяет число сдвигов.

Команды SetCondition

SETCC reg/ mem 8- если условияСС удовлетворяется, то в байт- операнд помещается код 01H, иначе - код 00Н. Команды управления циклами. Команды управления циклами обеспечивают передачи управления при организации циклов. У микропроцессора регистр СX…

Команды пересылки цепочки.

Дополнительные команды: MOVSB MOVSW

Команды сканирования цепочек.

Формат основной команды: SCAS цепочка-приёмник. Дополнительные команды: SCASB,

Команды загрузки.

Формат основной команды: LODS цепочка-источник. Дополнительные команды: LODSB,

Команды ввода и вывода цепочек.

INSB, INSW, INSD,

Замена сегмента.

LEA SI, ES : H1; копирует байт из строки H1 в строку H2. Обе строки в дополнительном сегменте LEA DI, H2 MOVSB

Команды управления флагами.

Таблица 2.16. Перечень команд управления процессором. Мнемоника Описание CLC сбросить флаг переноса 0 à… CLI микропроцессор игнорируют маскируемые прерывания, но обрабатывает…

Команды синхронизации.

В частности, когда основной процессор встречает специальную команду ESC, он передает ее на исполнение сопроцессору. Команда ESC показывает, какую… Если в многопроцессорной системе возникает проблема разделения общей памяти,…

Команда холостого хода.

Команда NOP (нет операции) - не выполняет никакой операции, она только увеличивает значение указателя команд IP. Эта команда находит много применений: удобна при тестировании в качестве точки останова трассиров­ки, используется для организации задержки и так далее.

Команды прерываний.

Когда внешнее устройство формирует сигнал на входе NMI, процессор прекращает свои действия (но не в середине команды) и реагирует на прерывание. По… Если катастрофических событий нет, внешнее устройство может прервать процессор… Кроме сигнала на входе INTR внешнее устройство должно сообщить процессору причину прерывания. По запросу процессора…

ДИРЕКТИВЫ И ОПЕРАТОРЫ АССЕМБЛЕРА

Каждая программа на языке ассемблера помимо команд процессора содержит еще и специальные инструкции, указывающие самому ассемблеру, как организовать специальные секции программы, где располагаются данные, а где команды, позволяющие выбирать тип системы команд, налаживать связи между процедурами и так далее. Разные ассемблеры используют разные наборы директив, но TASM и MASM (два самых популярных ассемблера для DOS и Windows) поддерживают общий набор директив. Все дальнейшие примеры директив приведены для этих ассемблеров (точнее, TASM поддерживает набор директив MASM наряду с собственным набором директив Ideal Mode).

Структура программы

Метка команда/директива операнды; комментарий. Все поля необязательны. Метка может быть любой комбинацией букв английского… Большие и маленькие буква по умолчанию не распознаются, но различие можно включить при помощи опций при вызове…

Организация программы.

Модели памяти

model модель, язык, модификатор, где модель – одно из следующих слов: TINY – код, данные и стек размещаются в одном и том же сегменте размером до 64… SMALL – код размещается в одном сегменте, а данные и стек – в другом (для их описания могут применяться разные…

Процедуры

Метка proc язык тип USES регистры … ret

Директивы задания набора допустимых команд

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

.8086- используется по умолчанию. Разрешены только команды 8086;

.186- разрешены команды 80186;

.286 и .286с- разрешены непривилегированные команды 80286;

.286р- разрешены все команды 80286;

.386 и .386с- разрешены непривилегированные команды 80386;

.386р- разрешены все команды 80386;

.486 и 486с- разрешены непривилегированные команды 80486;

.486р- разрешены все команды 80486;

586 и 586с- разрешены непривилегированные команды P5 (Pentium);

.586р- разрешены все команды P5 (Pentium);

.686 - разрешены непривилегированные команды P6 (Pentium Pro, Pentium II);

.686р- разрешены все команды P6 (Pentium Pro, Pentium II);

.8087 – разрешены команды арифметического сопроцессора 8087;

.287 – разрешены команды арифметического сопроцессора 80287;

.387 – разрешены команды арифметического сопроцессора 80387;

.487 – разрешены команды FPU 80486;

.587 – разрешены команды FPU 80586;

.MMX – разрешены команды IA MM;

.K3D – разрешены команды AMD 3D;

Если присутствует директива .386 и выше, ассемблер TASM определяет все сегменты как 32-битные при условии, что директива указана перед директивой .model.

Примеры использования директив в программах типа .EXE и .COM.

; Файл с текстом программы hello-1.asm

; Выводит на экран сообщение ‘Hello World!’ и завершается.

; Генерируется исполняемый модуль типа .EXE при помощи вызова ассемблера TASM и редактора TLINK:

; tasm hello-1.asm

; tlink hello-1.obj

.model small ; Модель памяти, используемая для EXE

.stack 100h ; Сегмент стека размером в 256 байт.

.data

message db 'Hello World!',0Dh,0Ah,'$'

.code

start: mov ax, @data ; Настройка сегментного регистра

mov ds,ax ; ds на начало сегмента данных.

mov dx,offset message

mov ah,9

int 21h ; Вызов функции DOS для вывода строки.

mov ax,4C00h

int 21h ; Вызов функции DOS для завершения программы.

end start

; Файл с текстом программы hello-2.asm

; Выводит на экран сообщение ‘Hello World!’ и завершается.

; Генерируется исполняемый модуль типа .COM при помощи вызова ассемблера TASM и редактора TLINK:

; tasm hello-2.asm

; tlink /t hello-2.obj

.model tiny ; Модель памяти, используемая для .COM

.code ; Начало сегмента кодов

org 100h ; Начальное значение программного счетчика­

; внутренней переменной ассемблера, равная

;смещению относительно начала сегмеента - 100h

jmp start ; Переход на начало программы

message db 'Hello World!',0Dh,0Ah,'$' ; Строка для вывода

start: mov ah,9 ; ­Номер функции DOS - в AH

mov dx,offset message ; Смещение адреса строки - в DX

int 21h ; Вызов системной функции DOS

ret ; Завершение COM- программы

end start ; Конец текста программы.

 


АРХИТЕКТУРА И СИСТЕМА КОМАНД АРИФМЕТИЧЕСКОГО СОПРОЦЕССОРА

Первый из семейства – это восьмиразрядный сопроцессор 8087, затем появились шестнадцатиразрядные модели 80287 и 80387. Сопроцессор 80387 - имеет…

Форматы чисел сопроцессора

Сопроцессор поддерживает представление чисел в следующих форматах: целые двоичные, целые двоично-десятичные и вещественные двоичные числа.

Целые числа

1. Целое слово - 16 бит (DW); 2. Короткое целое слово - 32 бита (DD); 3. Длинное целое слово - 64 бита (DQ);

Вещественные числа

1. Короткое вещественное (одинарная точность) -32 бита (DD); 1 бит 8 бит 23 бита S порядок … 2. Длинное вещественное (двойная точность) - 64 бита (DQ); 1 бит … 3. Временное вещественное (расширенная точность) - 80 бит (DT); 1 бит 15 бит 64 бита …

Диапазоны вещественных чисел в х87.

Единица подразумевается в старшем разряде мантиссы для чисел в формате с одинарной и двойной точностью. Дивпазоны представлеения десятичных чисел в… а) с одинарной точностью: -3.37*1038 / -1.17*10-37

Особые случаи вещественной арифметики

 

Формирование специальных значений в особых случаях

Случай неточного результата.

в направлении к 0 (обычно для целочисленной арифметики);  

Численное антипереполнение.

Пример : Знак Порядок Старший бит мантиссы Мантисса – 23 бита   … Точность минимального числа равна 1 биту, то есть происходит потеря точности… На числовой оси плотность представимых чисел выше у нуля и ниже у максимальных значений.

Денормализованный операнд.

Результат равен 0, если он слишком мал для представления денормализованным числом (например, при умножении двух денормализованных чисел). Результат - денормализованное число, если он представим в формате… Результат - нормализованное число, если неточность денормализованного числа влияет на результат меньше, чем ошибка…

Деление на ноль.

Если x - конечное положительное число, не равное нулю, то разрешены следующие операции с бесконечностью: 1) x : + 0 = + ¥ - x : + 0 = - ¥ x : - 0 = - ¥ - x : - 0 = +… 2) x : + ¥ = + 0 - x : + ¥ = - 0 x : - ¥ = - 0 - x : -¥ = +0

Численное переполнение.

Пример: деление большого числа на малое число (близкое к 0). Знак результата будет зависеть от знака малого числа, хотя он может быть неверным в… Специальное значение формируется в зависимости от режима округления,… 1) если установлен режим округления к ближайшему числу - то результат- плюс или минус бесконечность;

Регистры математического сопроцессора.

Численные регистры (регистровый стек).

      ST   R0 … Числовой стек имеет кольцевую организацию. Если стек заполнен полностью, то…

Регистр управления (cw)

  PC - поле управления точностью: 11 - расширенная точность (по умолчанию);

Регистр состояния.

Флаги (0-6 биты): IE - недействительная операция; DE - денормализованный операнд;

Регистр тэгов (признаков).

00 – в регистре действительное число (любое конечное число , не равное нулю, ненормализованное число считается действительным в 80287); 01 – нуль; 10 - недействительное число (нечисло, бесконечность, денормализованное число или ненормализованное число в 80387 и…

Указатели особого случая.

 

Система команд арифметического сопроцессора.

Команды передачи данных.

КОМАНДЫ ИЗВЛЕЧЕНИЯ - все команды однооперандные, извлекают содержимое вершины стека и запоминают его в операнд-приемник. При этом содержимое вершины… КОМАНДЫ КОПИРОВАНИЯ - все команды однооперандные, копируют содержимое вершины… КОМАНДА ОБМЕНА - однооперандная команда, предназначена для обмена содержимого вершины стека и другого численного…

Арифметические команды

Для всех арифметических команд существуют обычные (прямые) формы команд: FADD, FSUB, FMUL, FDIV , а для команд вычитания и деления существуют ещё и… Для обратных форм команд выполняется следующая схема: источник - приемник=приемник или источник / приемник = приемник. Для прямых команд уменьшаемое или делимое берется из…

Дополнительные арифметические команды

FSCALE: . Если ST(1) не целое и больше 1 по абсолютной величине, то берется ближайшее меньшее целое, если ST(1) меньше 1 или находится вне… FXTRACT: разлагает ST(0) на два числа с плавающей точкой: несмещенный порядок… FRNDINT: округляет ST(0) до целого числа в формате с плавающей точкой согласно полю RC регистра состояния.

Команды сравнений

FCOM X сравнивает содержимое ST(0) с операндом X и устанавливает следующие коды условия :   Условие сравнения С3 С2 С0 … Х- численный регистр, или число в памяти одинарной или двойной точности. Указатель вершины стека - не изменяется.

Трансцендентные команды

Для модели математического сопроцессора 80287 аргумент команды FPTAN должен быть нормализован; денормализованные и ненормализованные числа,… FPATAN - вычисляет ST(0)=arctg (ST(1)/ST(0)). Два верхних элемента извлекаются… FYL2X - вычисляет функцию ST(0) = ST(1)*log2ST(0). Два операнда извлекаются из стека, а затем результат включается в…

Административные команды

FNSTCW (FSTCW) - содержимое регистра управления записывается в ячейку памяти, указанную в качестве операнда. FLDCW - загружает регистр управления из ячейки памяти, указанной в качестве… Эти команды применяются для изменения режима работы сопроцессора (можно переопределять режим округления, управления…

Совместная работа двух процессоров в системе.

Синхронизация по командам.

Команда FWAIT не вставляется перед административными командами в мнемокоде которых есть буква N, FNXXX... Это так называемые команды без ожидания. … Происходит это по следующей схеме (см. рисунок 1). Некоторые административные… Данными командами следует пользоваться аккуратно, так как. они не вызывают обработчика особых случаев через систему…

Синхронизация по данным.

 

ВАРИАНТЫ КОНТРОЛЬНЫХ РАБОТ

Контрольная работа №1

Вариант 1 Из исходного массива двузначных десятичных чисел со знаком получить два новых,… Вариант 2

Контрольная работа №2

1. Y = sin 2x + cos4 x. 2. Y = (cos 2x + sin x)/2. 3. Y = sin 2x + cos3 x.

ПРИМЕРЫ ПРОГРАММ

;Программа очистки экрана через видеобуфер

.model small

.486

.stack 100h

.code

begin: mov ax,@data

mov ds,ax

mov ax,0b800h; адрес видеобуфера текстовых режимов

mov es,ax; настройка регистра es на видеобуфер

mov di,00h; настройка регистра di на начало видеобуфера

mov ax,0700h; определение атрибутов фона и символа: черный фон , белый символ

mov cx,2000; счетчик числа выводимых символов- выводим на экран 2000 пробелов

rep stosw

mov ax,4c00h; вызов функции завершения программы

int 21h

end begin

;*****************************************************************

;Программа демонстрации суммирования элементов двух массивов целых чисел

.model small

.486

.stack 100h

.data

M1 db 1,2,3,4,5; первый исходный массив

M2 db 6,7,8,9,10;второй исходный массив

M3 db 5 dup(0); массив результата

.code

begin:mov ax,@data; настройка сегментного регистра ds

mov ds,ax; на сегмент данных

xor di,di;обнуление индексного регистра

mov cx,5;определение счетчика цикла

met: mov al,M1[di];пересылка элемента М1 в регистр

add al,M2[di];суммирование элементов массивов

mov M3[di],al;запись в память результата

inc di; увеличение индекса элемента массива

loop met; возврат на цикл

kon: mov ah,4ch

int 21h

end begin

;*****************************************************************

;Программа перекодировки символов из 16 системы счисления в ASCII или BCD код

.model small

.486

.stack 100h

.data

SH db 0h,1h,2h,3h,4h,5h,6h,7h,8h,9h,0ah,0bh,0ch,0dh,0eh,0fh

ASCII db '0123456789abcdef'

BCD db 0,1,2,3,4,5,6,7,8,9,10h,11h,12h,13h,14h,15h

.code

begin: mov ax,@data

mov ds,ax

mov al,SH[3]; загрузка 3 элемента массива в al

mov dl,al; пересылка его в dl

lea bx,ASCII; настройка адреса массива ASCII кодов на регистр bx

xlat ; перекодировка: в al вместо 16 кода – ASCII -код

mov ch,al; сохранение его в ch

mov al,dl; восстановление 16 кода в al

lea bx,BCD; настройка регистра bx на адрес массива BCD

xlat ; перекодировка: в al вместо 16 кода – BCD -код

mov cl,al; сохранение его в cl

mov ah,4ch; завершение программы

int 21h

end begin

;****************************************************************

;Программа ввода и перевода вещественных границ интервала определения функции

.Model Small

.486

.Stack 200h

.Data

buf db 18; буфер для ввода вещественного числа

db 0; MS DOS возвращает число введенных символов

db 18 dup(0) ; максимальный размер вводимой строки

ten dw 10; константа 10

XL dq 0 ; левая граница интервала

XP dq 0 ; правая граница интервала

mes1 db 13,10,' Введите левую границу' ,13,10,'$'

mes2 db 13,10,' Введите правую границу' ,13,10,'$'

mes3 db 13,10,' Левая граница не может быть равна правой!',13,10,'$'

mes4 db 13,10,' Левая граница не может быть больше правой!',13,10,'$'

c dw 0; переменная для двоичного кода одной цифры числа

;*********************************************************

.Code

GRAN PROC; Процедура ввода и перевода вещественного числа

pusha

vvod:

mov ah, 0Ah; вызов системной функции для ввода строки

lea dx, buf

int 21h

fldz; загрузка в стек сопроцессора 0

mov si, 2; настройка si на первый символ введенной строки в буфере

cmp buf[si],'-'; первый символ - минус?

je M1; да – переход на M1

cmp buf[si],'+'; первый символ – плюс?

jne M2; если нет – то переход на M2

M1: inc si; переход к следующему символу в строке

M2: cmp buf[si],'.'; очередной символ – десятичная точка

je Drob; если да – то переход на обработку дробной части

cmp buf[si],0dh ; иначе – сравнение с кодом клавиши Enter – признак конца строки

je Kon_enter; если да – то переход на метку Kon_enter

cmp buf[si],'0'; иначе – проверка: символ это цифра?

jb vvod; если код символа меньше кода нуля – то повторный ввод

cmp buf[si],'9';

ja vvod; если код символа больше кода девяти – то повторный ввод

mov al,buf[si]; если цифра – то загрузить ее код в al

sub al,'0'; перевод кода символа цифры в двоичный код

xor ah,ah; обнуление регистра

mov c, ax; сохранение двоичного кода цифры

fimul ten; умножение числа в вершине стека на 10

fild c; загрузка кода цифры в вершину стека

fadd; сложение с предыдущей частью числа

inc si

jmp M2; переход к следующему символу в целой части числа

Drob:; обработка дробной части

fldz

xor bx,bx

mov bl,buf[1]; загрузка в bx числа введенных символов

mov si,bx; настройка si на последний символ

inc si

L1:; цикл обработки дробной части

mov al,buf[si]

cmp al,'.'; сравнение с кодом десятичной точки

je Kon_drob; если точка – то завершение обработки дробной части

cmp buf[si],'0'; проверка кода символа на цифры

jb vvod

cmp buf[si],'9'

ja vvod

sub al,'0'; перевод в двоичный код

xor ah,ah

mov c, ax; сохранение двоичного кода цифры

fild c; загрузка кода цифры в вершину стека

fadd; сложение с предыдущей дробной частью числа

fidiv ten; деление на 10

dec si

jmp L1; переход к следующей цифре

Kon_drob: fadd; сложение целой и дробной частей числа

Kon_enter:

cmp buf[2],'-'; определение отрицательного числа

jne Kon; если число положительное – то на метку Kon

fchs; иначе – инвертировать число в вершине стека

Kon:

popa

ret

GRAN endp

;*******************************************

Start:; начало основной программы

mov ax,@data

mov ds,ax

repeat:

finit; инициализация сопроцессора

mov ah,9; вывод первого сообщения

lea dx,mes1

int 21h

Call GRAN

fst XL; сохранение левой границы интервала

mov ah,9; вывод второго сообщения

lea dx,mes2

int 21h

Call GRAN

fst XP; сохранение правой границы интервала

fcom; сравнение левой и правой границ

fstsw ax; передача кодов условия в ЦП

fwait

sahf

je ravno; если границы равны – то ошибка

jb menshe; если правая граница меньше левой – то ошибка

jmp end_progr; если границы введены верно – то выход из программы

ravno:

mov ah,9

lea dx,mes3

int 21h

jmp repeat

menshe:

mov ah,9

lea dx,mes4

int 21h

jmp repeat

end_progr:

mov ah,4ch

int 21h

End Start

 

 

СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ

1. Григорьев В.Г. Микропроцессор i486. Архитектура и программирование (в 4-х книгах). Книга 1. Программная архитектура. - М., ГРАНАЛ, 1993. - с.346, ил.87.

2. Григорьев В.Г. Микропроцессор i486. Архитектура и программирование (в 4-х книгах). Книга 2. Аппаратная архитектура. Книга 3. Устройство с плавающей точкой. Книга 4. Справочник по системе команд. - М., ГРАНАЛ, 1993. - с.382, ил.54.

3. Юров В. Assembler, -СПб: Питер, 2001, - 624 с.

4. Зубков С.В. Assembler для Dos, Windows и UNIX. 2 – е изд., испр. и доп. – М., ДМК, 2000. – 608 с.

– Конец работы –

Используемые теги: Системное, Программирование0.053

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

БОЛЬШИЕ СИСТЕМЫ ЭНЕРГЕТИКИ. ПОНЯТИЕ О СИСТЕМНОМ ПОДХОДЕ И СИСТЕМНОМ АНАЛИЗЕ
Задачи прогнозирования для развития ЭЭС... Задача Производ ственный и территориальный уровень Ориенти ровочный временной период лет...

Работы, выполняемые на этапе структурного системного анализа, осуществляются как правило, специальным лицом – системным аналитиком.
На сайте allrefs.net читайте: Работы, выполняемые на этапе структурного системного анализа, осуществляются как правило, специальным лицом – системным аналитиком....

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

Лекция 1. Объектно-ориентированное программирование – это новый подход к программированию. Объектно- ориентированные языки обладают свойством
ВВЕДЕНИЕ... Приступая к изучению более сложных конструкций языка С следует прежде всего повторить тот материал который был...

НАДЕЖНОЕ ПРОГРАММНОЕ СРЕДСТВО КАК ПРОДУКТ ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ. ИСТОРИЧЕСКИЙ И СОЦИАЛЬНЫЙ КОНТЕКСТ ПРОГРАММИРОВАНИЯ. ИСТОЧНИКИ ОШИБОК В ПРОГРАММНОМ СРЕДСТВЕ
ВВЕДЕНИЕ... Лекция НАДЕЖНОЕ ПРОГРАММНОЕ СРЕДСТВО КАК ПРОДУКТ ТЕХНОЛОГИИ... Программа как формализованное описание процесса обработки данных Программное средство...

В первом семестре рассматриваются основные конструкции языка Си и базовая технология программирования структурное программирование
В первом семестре рассматриваются основные конструкции языка Си и базовая технология программирования структурное программирование... Структурное программирование это технология создания программ позволяющая... Компиляторы и интерпретаторы Трансляторы бывают...

Методы линейного программирования, двойственность в линейном программировании
Методы линейного программирования двойственность в линейном... Задание Задание Задание...

Объектно-ориентированное программирование как идеология программирования и как технология. Достоинства и недостатки
Класс это шаблон который определяет форму объекта Он задает как данные так и код который оперирует этими данными Объекты это экземпляры... Объявление объекта типа Building... Building house new Building...

Ответы на вопросы по курсу "Системное программирование"
До этого времени не существовало мобильных ОС переносимых на разные типы машин и Multix также не был мобильной ОС. 1971 - написан UNIX для работы на… Но для машин с процессором Intel появляются и версии UNIX. Конец 80 начало 90… ЭВМ являются преобразователями информации.В них исходные данные задачи преобразуются в результат ее решения.

Лабораторная работа №2 по "Основам теории систем" (Решение задач линейного программирования симплекс-методом. Варианты разрешимости задач линейного программирования)
Будем увеличивать , т.к. ее увеличение вызовет большее увеличение функции цели.Предположим, что , тогда Запишем новый опорный план . Все оценки… Теперь базисными переменными являются , а свободными . Для анализа этого плана… Будем увеличивать . Пусть , тогда откуда получаем Все оценки опорного плана должны бытьнеотрицательны, а значит должны…

0.038
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам