Студопедия  
Главная страница | Контакты | Случайная страница

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

ADD / SUB пам’ять-безпосереднє значення.

Читайте также:
  1. Акт проголошення незалежності української держави (1941р.) та його значення.
  2. Боротьба Київської Русi з монголо-татарами та її iсторичне значення.
  3. Види норм витрат праці, їх класифікація та визначення.
  4. Історія розвитку та значення.
  5. Лекція 1: Основні поняття та означення. Елементарні алгоритмічні структури. Елементи мови Pascal.
  6. Майбутня вартість грошей та її визначення.
  7. Під якістю продукції розуміють сукупність властивостей, що зумовлюють придатність продукції задовольняти певні потреби споживачів відповідно до її призначення.
  8. Поняття державного резерву, його склад, призначення. Утримання і розвиток системи державного резерву.
  9. Поняття об’єкту злочину, його місце у структурі складу злочину та значення. Види (класифікація) об’єктів злочину.

 

Переповнення. При виконанні арифметичних операцій можливе переповнення. Один байт містить знаковий біт і сім біт даних, тобто значення від -128 до +127. Результат арифметичної операції може легко перевищити розрядність однобайтового регістра. Наприклад, результат додавання в регістрі AL, що перевищує його розрядність, автоматично не переходить у регістр AH. Припустимо, що регістр AL містить 60h, тоді результат команди ADD AL,20h генерує в AL суму -.80h. Але операція також встановлює прапорець переповнення і прапорець знаку у стан "негативно". Причина в тому, що.80h або двійкове 1000 0000 є від’ємним числом. Т.ч. в результаті, замість +128, ми одержимо -128. Оскільки регістр AL занадто малий для такої операції то варто скористатися регістром AX. Для розширення AL до AX можна скористатися командою CBW (Convert Byte to Word - перетворити байт у слово).

CBW

ADD AX,20H

Але повне слово має також обмеження.

Для беззнакових величин всі біти є бітами даних і замість обмеження +32767 регістр може містити числа до +65535. Для знакових величин лівий біт є знаковим. Команди ADD і SUB не роблять різниці між знаковими і беззнаковими величинами, вони просто додають і віднімають біти.

Наприклад при додаванні двох двійкових чисел, одне з яких містить одиничний лівий біт можливе такі випадки. Для беззнакового числа біти представляють додатне число 249, для знакового – від’ємна число -7:

  Беззнакове Знакове
    -7
    +2
    -5

Двійкове представлення результату додавання однакове для беззнакового й знакового числа. Однак, біти представляють +251 для беззнакового числа й -5 для знакового. Таким чином, числовий вміст поля може інтерпретуватися по різному. Стан "перенос" виникає в тому випадку, коли є пеpенос у знаковий розряд. Стан "переповнення" виникає у тому випадку, коли перенос у знаковий розряд не створює переносу з розрядної сітки або перенос із розрядної сітки відбувається без переносу в знаковий розряд. При виникненні переносу при додаванні беззнакових чисел, результат одержується неправильний:

  Беззнакове Знакове CF OF
    -4    
    +5    
         
  (неправильно)      

 

При виникненні переповнення при додаванні знакових чисел, результат виходить неправильний:

  Беззнакове Знакове CF OF
    +121    
    +11    
    -124    
    (неправильно)    

 

При операціях додавання й віднімання може одночасно виникнути й переповнення, і перенос:

  Без знакове Знакове CF OF
    -10    
    -119    
    +127    
  (неправильно) (неправильно)    

 

Таким чином, перенос, що може виникати при додаванні найстарших слів, слід трактувати для беззнакових даних як значущий біт і враховувати його в загальній сумі, а для знакових, вважати ознакою від’ємного числа.

 


Команда ADC виконує додавання з врахуванням переносу. Тобто якщо прапорець CF має значення 1, то ця команда додає 1 до першого операнду, а вже потім додає другий операнд.

Команда SBB виконує віднімання з запозиченням. Тобто якщо прапорець CF має значення 1, то ця команда спочатку віднімає 1 від першого операнду, а вже потім віднімає від нього другий операнд.

Команда INC/DEC додає / віднімає одиницю до байту або слова в регістрі або пам’яті.

Команда CMP виконує операцію порівняння двох полів даних. Фактично, ця команда виконує віднімання другого операнду від першого, але значення операндів на змінює. Операнди повинні бути однакової довжини: байт або слово. Команда може мати наступний формат:

CMP регістр-регістр;

CMP пам'ять-регістр;

CMP безпосереднє значення -регістр;

CMP регістр-пам’ять;




Дата добавления: 2014-12-19; просмотров: 63 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав