Привіт і ласкаво просимо назад.
У цьому уроці ми розглянемо прапор OF, також відомий як прапор переповнення.
Якщо припустити, що числа, з якими ми працюємо, є знаковими, то це означає, що існують представлення у вигляді
доповнення двійки.
Тоді нуль, тоді прапор OF матиме сенс.
Отже, чи будемо ми використовувати прапорець OF чи ні, залежить від того, як ми використовуємо числа у нашій програмі.
Тож у цьому випадку, якщо ми припустимо, що цифри підписані, якщо ви забули, що значить "підписано", ви можете
повернутися назад і подивитися на попередній слайд.
А тут у нас є попередній слайд, де знакові числа означають, що старший біт дорівнює нулю.
Це означає, що це додатне число.
А якщо старший біт дорівнює одиниці, то це від'ємне число.
У цьому сенс знакових чисел.
Тож у цьому випадку повернімося до прапора переповнення.
Прапорець OF встановлюється в одиницю, якщо додавання двох додатних чисел дає від'ємний результат, або додавання
двох від'ємних чисел дає додатний результат, або додатне число мінус від'ємне число дає від'ємний результат,
або від'ємне число мінус додатне число дає додатний результат.
Отже, якщо прапорець OF встановлено в одиницю в будь-якій з цих ситуацій, це означає, що результат, який ви отримуєте в результаті
обчислень, є неправильним.
Тож давайте розглянемо кілька прикладів.
Отже, в цьому прикладі ми перемістимо це число на -. Це число є додатним, оскільки старший біт дорівнює
нулю, а одиницю ми переносимо на -.
І це також додатне число, тому що старший біт також дорівнює нулю.
А потім ми додаємо - до -, і отримуємо це число, і це число є від'ємним, тому що старший біт
дорівнює одиниці.
Отже, в цьому випадку є помилка.
Коли ви додаєте додатне число до додатного числа і отримуєте від'ємне число, це означає,
що є помилка.
Отже, у цьому випадку прапорець OF дорівнює одиниці.
Тож давайте спробуємо це зараз у нашому відладчику.
Відкриваємо наш шаблон, як і раніше, і вводимо ці інструкції.
Ми підходимо до цього рядка і натискаємо на клавішу.
MOV - сім, потім сім F, один, два, три, чотири, п'ять, шість, сім.
Далі йде MOV - один, а потім add - -. Натисни "Гаразд".
Тепер біжимо і переступаємо, поки не дійдемо до цієї лінії.
Цей рядок змістить це число на -.
Тож тепер - має цей номер.
Далі пересуваємо одиницю на -. Відійди.
І тепер вона його має.
Далі додамо його до -, і подивимося, що станеться з прапором переповнення.
Ось цей зараз дорівнює нулю.
Переступите, і прапорець переповнення стане одиницею.
І ми отримуємо від'ємний результат, тому що цей від'ємний результат тут призводить до того, що прапорець переповнення
стає одиницею.
- дорівнює восьми, за якими йдуть сім нулів.
Візьмемо інший приклад.
Отже, в іншому прикладі ми переносимо те саме число до -, ми переносимо те саме число до -.
І цього разу замість того, щоб додавати, ми віднімаємо. Віднімаємо - від - і отримуємо ось такий результат.
Отже, цей результат представлено у шістнадцятковому вигляді у вигляді цього числа.
Отже, це число є додатним.
Маємо додатне число мінус додатне число, і отримуємо додатне число.
Отже, помилки немає, а прапорець переповнення обнуляється.
Тож давайте спробуємо зараз.
Тож давайте перейдемо до... давайте введемо ці інструкції.
Перший - рухатися - сім, один, два, три, чотири, п'ять, шість, сім.
А потім також додаємо - одиницю, і цього разу віднімаємо - -.
Натисни "Гаразд".
Продовжуємо переступати.
Це перемістить його до -.
- зараз цей номер.
Тепер вона пересунеться на одиницю до -.
Тож переступайте, і він у неї є.
Тепер ми віднімемо - від -.
Переступаємо, і - тепер стає сім, за нею п'ять і одна Е.
І ми бачимо, що прапорець переповнення було обнулено, як ми і передбачали.
Ось як працює прапор переповнення.
Збережемо його.
Файл виправлення, і назвемо
його 30 30 тире OF прапорця крапка E
X E.
Натисни "Зберегти".
На цьому відео все.
Дякуємо за перегляд.