Решение задачи приведём для микропроцессора i8086 icon

Решение задачи приведём для микропроцессора i8086




Скачати 55.05 Kb.
НазваРешение задачи приведём для микропроцессора i8086
Дата16.08.2012
Розмір55.05 Kb.
ТипРешение
1. /PractUA.doc
2. /Solutions/p1.doc
3. /Solutions/p2.doc
4. /Solutions/p3.doc
5. /Solutions/t1.doc
6. /Solutions/t2.doc
7. /Solutions/t3.doc
8. /Solutions/t4.doc
9. /TeorUA.doc
Всеукраїнська студентська олімпіада зі спеціальності "Системи управління І автоматики" Вінницький національний технічний університет
Решение задачи приведём для микропроцессора i8086
Задача зводиться до знаходження
Задача по моделюванню система автоматичного управління задана структурною схемою
«автоматом»
Розглянемо побудову областей стійкостей в області двох параметрів
Рішення задачі
=20 мс на протязі часового проміжку Т=3*10
Всеукраїнська студентська олімпіада зі спеціальності "Системи управління І автоматики" Вінницький національний технічний університет

Задача П1.

В памяти по адресам ADDR1 и ADDR2 находятся m-байтные двоичные числа со знаком. Написать фрагмент программы на языке ассемблера, который в цикле вычисляет сумму этих чисел и по адресу ADDR3 размещает результат. Исходные данные в памяти не разрушать. В программе предусмотреть контроль результата операции. Если он выходит за допустимый диапазон, передать управление по адресу AVARIA, иначе продолжить выполнение основной программы. Использовать язык ассемблера для одного из следующих микропроцессоров (на Ваш выбор): i8086, AVR Classic, MCS51, i8080. Написать программный фрагмент в двух вариантах: 1) с использованием для контроля флага переполнения (OF – для i8086, OV – для AVR Classic, V – для MCS51); 2) без использования этого флага.


Решение задачи приведём для микропроцессора i8086.

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

Если при сложении (вычитании) чисел без знака контроль выхода резуль­тата операции за допустимый диапазон производится по состоянию флага пе­реноса CF, то при операциях с числами со знаком такой контроль выполняется по состоянию флага переполнения OF. При сложении в цикле многобайтных чисел со знаком контроль флага OF необходимо производить только после вы­полнения операции сложения над самыми старшими байтами, т.е. после выхода программы из цикла. Но сделать это невозможно, так как имеющиеся в теле цикла команды INC и DEC влияют на флаг переполнения, и его состояние не соответствует результатам сложения. Поэтому этот флаг для возможности кон­троля необходимо как-то сохранить после выполнения последней команды сло­жения. Чаще всего это сохранение выполняется с использованием стека.

MOV SI, ADDR1 ; инициализация указателя 1-го слагаемого;

MOV DI, ADDR2 ; инициализация указателя 2-го слагаемого;

MOV BX, ADDR3 ; инициализация указателя суммы;

MOV CL, m ; инициализация счётчика цикла;

CLC ; установка начального состояния флага CF;

CYCLE: MOV AL, [SI] ; перенос в МП байта первого слагаемого;

ADC AL, [DI] ; суммирование со вторым слагаемым;

MOV [BX], AL ; сохранение суммы в памяти;

PUSHF ; сохранение в стеке флага OF;

POP BP ; флаг переполнения OF в регистре BP;

INC SI ; продвижение указателя 1-го слагаемого;

INC DI ; продвижение указателя 2-го слагаемого;

INC BX ; продвижение указателя суммы;

DEC CL ; модификация счётчика цикла;

JNZ CYCLE ; контроль выхода из цикла;

PUSH BP ; возврат в стек флага OF;

POPF ; возврат флага OF в регистр флагов;

JO AVARIA ; контроль переполнения;

DONE ; продолжение выполнения программы.

Только стековые команды могут оперировать с регистром флагов RF. По­сле каждого сложения байтов содержимое RF переносится из стека в регистр общего назначения, чтобы не наращивать верхушку стека (TOS). После завер­шения цикла сложения байтов содержимое этого РОН возвращается в RF для возможности определения выхода за допустимый диапазон по флагу OF. Ко­манда JO осуществляет переход по метке при единичном состоянии флага пере­полнения OF, т.е. при выходе результата сложения за допустимый диапазон.

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

  1. При сложении чисел с разными знаками переполнения не будет никог­да. Поэтому при неодинаковых знаках слагаемых следует выйти из процедуры контроля результата сложения допустимому диапазону.

  2. При сложении чисел с одинаковыми знаками сумма должна иметь тот же знак, иначе имеет место переполнение.

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

  • по правилам двоичной арифметики найти сумму двух чисел со знаком;

  • определить, одинаковы ли знаки слагаемых;

  • если знаки разные, то выйти из процедуры проверки;

  • если знаки слагаемых одинаковы, то перейти к выполнению следующего пункта;

  • определить, одинаковы ли знаки одного из слагаемых и суммы;

  • если знаки слагаемых и суммы одинаковы, то выйти из процедуры проверки;

  • если знаки слагаемых и суммы разные, то сообщить об аварийной ситуации.

MOV SI, ADDR1 ; инициализация указателя 1-го слагаемого;

MOV DI, ADDR2 ; инициализация указателя 2-го слагаемого;

MOV BX, ADDR3 ; инициализация указателя суммы;

MOV CL, m ; инициализация счётчика цикла;

CLC ; установка начального состояния флага CF;

CYCLE: MOV AL, [SI] ; перенос в МП байта первого слагаемого;

ADC AL, [DI] ; суммирование со вторым слагаемым;

MOV [BX], AL ; сохранение суммы в памяти;

INC SI ; продвижение указателя 1-го слагаемого;

INC DI ; продвижение указателя 2-го слагаемого;

INC BX ; продвижение указателя суммы;

DEC CL ; модификация счётчика цикла;

JNZ CYCLE ; контроль выхода из цикла;

DEC SI ; адрес старшего байта первого слагаемого;

DEC DI ; адрес старшего байта второго слагаемого;

MOV AH, [SI] ; перенос в МП старшего байта 1-го числа;

XOR AH, [DI] ; если (AH7) = 1, то знаки неодинаковы;

JS NORMA ; выход из контроля, если (AH7) = 1;

XOR AL, [SI] ; если (AL7) = 1, то знаки неодинаковы;

JS AVARIA ; если (AL7) = 1, то был выход за диапазон;

NORMA: DONE ; продолжение выполнения программы.

По адресам (ADDR1 + m – 1) и (ADDR2 + m – 1) находятся старшие бай­ты обоих чисел со знаком, т.е. в старших разрядах этих байтов содержатся зна­ки чисел. Команда XOR AH, [DI] выполняет логическую операцию «исклю­чающее ИЛИ» (сложение по модулю два) старших байтов обоих чисел. Опера­ция выполняется над всеми разрядами, но представляет интерес только резуль­тат в старшем разряде AH7. Если он равен единице, то согласно таблице истин­ности этой логической функции знаковые разряды слагаемых разные. В этом случае результат никогда не сможет выйти за допустимый диапазон, и контроль на этом заканчивается: команда JS NORMA при (SF) = 1, т.е. при (AH7) = 1 осуществляет выход из программы контроля, чтобы продолжить выполнение основной программы. Напоминаем, что флаг знака SF всегда дублирует стар­ший разряд результата после любой команды, влияющей на этот флаг.

При SF = 0, т.е. при одинаковых знаках слагаемых проверка продолжает­ся: сравниваются знаки суммы (старший байт суммы остался в регистре AL) и одного из слагаемых. Получение результата (AL7) = 1 в команде XOR AL, [SI] говорит о разных знаках слагаемых и суммы, т.е. о том, что результат непра­вильный. Команда JS AVARIA при SF = 1 передаст управление для обработки аварийной ситуации. При SF = 0 произойдёт выход из контроля в основную программу, так как суммирование завершилось корректно.

По-видимому, в самом микропроцессоре установка флага переполнения OF осущест­вляется по более простому алгоритму: (OF) = 1, если при суммировании старших байтов был перенос из старшего бита результата, и не было переноса в старший бит, а также наоборот – (OF) = 1, если при суммировании старших байтов был перенос в старший бит результата, и не было переноса из старшего бита. В противном случае (OF) = 0. Но у микропроцессоров нет аппаратных средств для фиксирования переноса в старший бит, поэтому программный контроль переполнения при отсутствии флага OF целесообразно осуществлять по приведен­ной выше методике.


Схожі:

Решение задачи приведём для микропроцессора i8086 iconРешение прямой задачи представлено следующими симплекс-таблицами: бп
Получение оптимального решения двойственной задачи с помощью симплекс-таблиц прямой задачи
Решение задачи приведём для микропроцессора i8086 iconРешение прямой задачи представлено следующими симплекс-таблицами: бп
Получение оптимального решения двойственной задачи с помощью симплекс-таблиц прямой задачи
Решение задачи приведём для микропроцессора i8086 iconРешение по методу Денавита Хартенберга было очень громоздким и потому решили его упростить. Как известно, решение прямой задачи намного проще решения обратной, потому очертим метод решения только обратной задачи
Украине внедряются разные типы роботов и станков. Это позволяет предприятиям уменьшить процентное соотношение брака продукции и увеличить...
Решение задачи приведём для микропроцессора i8086 iconДипломная работа
«Решение задачи сопровождения Web-сайта чпкп \"Полюс\" на множестве слабоструктурированных данных»
Решение задачи приведём для микропроцессора i8086 iconИстомина Н. Н. Кременчугский государственный политехнический университет
Поэтому актуальным является решение задачи повышения достоверности локальной диагностики тепловой нагрузки ад. Этот вопрос особенно...
Решение задачи приведём для микропроцессора i8086 iconСеместр 1
Определение микропроцессора, микроэвм, микроконтроллер. История развития мп-техники
Решение задачи приведём для микропроцессора i8086 icon2 Решение матричной игры (2х2)
При наличии седловой точки решение очевидно, тогда в соответствии с основной теоремой игра имеет оптимальное решение в смешанных...
Решение задачи приведём для микропроцессора i8086 icon6 задачи и решения
Исходя из условия задачи, можем в качестве (x0,y0,z0) использовать (6; 9; – 2). Далее заметим, что у двух параллельных плоскостей...
Решение задачи приведём для микропроцессора i8086 iconТема. Равномерное прямолинейное движение. Скорость. Закон сложения скоростей. Графики движения
Формирование знаний о прямолинейном движении, скорости как физической величине, классическом законе добавления скоростей, решение...
Решение задачи приведём для микропроцессора i8086 iconРешение Научно-методического совета ипо сггу от 19. 11. 2012 г по вопросу «Об утверждении программ для профильной школы, факультативов, кружков»
«Решение экономических задач по курсу «Основы экономики», 2 программ кружков «Армспорт», «Американский футбол»
Решение задачи приведём для микропроцессора i8086 iconАлгоритм муравья для решения задачи коммивояжера
Для кооперации агенты используют «фермент», оставляемый на гранях транспортной сети, в процессе поиска оптимального решения. Алгоритм...
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©zavantag.com 2000-2013
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи