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


Полезное:

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


Категории:

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






Арифметичні операції мікропроцесора і8086





 

МЕТА РОБОТИ: Вивчити набір арифметичних операцій і8086.

ТЕОРІЯ

Переміщення даних – це звичайно, важлива функція, тому що комп’ютер витрачає істотну частину свого часу на переміщення даних з одного місці до другого. Однак в рівній мірі важливо мати можливість маніпулювати даними, виконуючи над ними арифметичні та логічні операції, які підтримуються процесором і8086.

Арифметичні операції

Навіть якщо ваш комп’ютер РС і не витрачає часу на роботу з числами та обчислювальні операції, ви знаєте, що він може це зробити, якщо вам це буде потрібно. Крім того, на комп’ютері РС може працювати множиною електронних таблиць, програм баз даних та інженерних пакетів. Якщо прийняти все це до уваги, то стає достатньо очевидним, що комп’ютер ІВМ РС повинен володіти міцними обчислювальними здібностями. Крім того, у процесорі 8086 не передбачено арифметичних та логічних інструкцій, котрі можуть безпосередньо працювати з операндами, розмір яких перевищує 16 біт.

Складання та віднімання

В багатьох примірниках програм ми вже зустрічалися з операндами ADD (складання) та SUB (віднімання). Їх дія відповідає назві. Інструкція ADD виконує складання операнда джерела (правого операнда) зі змістом операнда-приймача. Інструкція SUB робить навпаки - відніме операнд – джерело з операнда-приймача.

Наприклад, інструкції

 

BaseVal DW 99

Adjust DW 10

 

mov dx,[baseval]

add dx,11

sub dx,[Adjust]

 

спочатку завантажують значення, записане у BaseVal, в регістр DX, потім додають до нього константу 11 (в результаті у DX виходить значення 110) та, зрештою, віднімають з DX значення 10, записане у змінній Adjust. Отримане в результаті значення 100 зберігається у регістрі DX.

Разрядні операції

Операції ADD та SUB працюють з 8-ми розрядними операндами. Якщо ви, наприклад, бажаєте скласти чи відняти 32-розрядні операції, ви повинні розбити операцію на ряд операцій зі значеннями розміром у слово та використовувати інструкції ADC та SBB.

Коли ви складаєте два операнда, процесор 8086 записує стан у флаг переносу (біт С у регістрі флагів), котре показує, чи був виконаний перенос з приймача. Ви знайомі з принципом переносу в десятковій арифметиці: якщо ви складаєте 90 та 10, то виходить перенос в третю цифру (розряд).

Інструкція ADC аналогічна інструкції ADD, але в ній не враховується флаг переносу (спочатку встановлений попереднім складанням). Всякий раз коли ви складаєте два значення, які перевищують по розміру слово, то молодші (менш значущі) слова треба скласти за допомогою інструкції ADD, а решта слів цих значень - за допомогою однієї чи декількох інструкцій ADC, останніми складаємо самі значущі слова. Наприклад, наступні інструкції складають значення у регістрах CX:BX, розміром у подвійне слово, зі значеннями, записаними у регістрах DX:AX:

add ax,bx

adc dx,cx

 

а в наступній групі інструкцій виконується складання четверного слова у змінній DuobleLong1 з четвертним словом у змінній DoubleLong2:

 

mov ax,[Doblelong1]

add [DoubleLong2],ax

mov ax,[DobleLong1+2]

adc [DoubleLong2+2],ax

mov ax,[DoubleLong1+4]

adc [DobleLong1+4],ax

mov ax,[DoubleLong1+6]

adc [DoubleLong2+6],ax

 

Інструкція SBB працює по тому ж принципу, що й інструкція ADC. Коли інструкція SBB виконує віднімання, в ній ураховується позика, яка відбулася у попередньому відніманні. Наприклад, наступні інструкції віднімають значення, записане у регістрах CX:BX, зі значення розміром в подвійне слово, записаного у регістрах DX:AX:

 

sub ax,bx

sbb dx,cx

 

При роботі з інструкціями ADC та SBB ви повинні упевнитися, що флаг переносу не змінився з моменту виконання останнього складання чи віднімання, інакше стан позики/переносу, який зберігається у флагу переносу, буде втрачено. Наприклад, у наступному фрагменті програми складення CX:BX з DX:AX виконується некоректно.

add ax,bx; скласти молодші слова

sub si,si; очистити SI (флаг переносу

;скидається в 0)

adc dx,cx; скласти старші слова

; так це буде працювати некоректно

; так як з моменту останньої

; операції складення зміст

; флаг переносу втрачено

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



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