Частина 8 - КПСР
Для повного змісту змісту всіх уроків натисніть нижче, оскільки це надасть вам короткий зміст кожного уроку, а також теми, які будуть обговорені.
Реєстр КПСР зберігає інформацію про програму та результати певної операції. Біти, що знаходяться в відповідних регістрах, мають попередньо призначені умови, які перевіряються на наявність яких-небудь прапорів.
Всього 32 біти складаються в цей реєстр. Найвищі 4 з них найбільше хвилюють нас, які є:
Біт 31 – N = Прапор негативності
Біт 30 – Z = Прапор нульової величини
Біт 29 – C = Прапор перенесення (БЕЗПРИСТАТНІ ОПЕРАЦІЇ)
Біт 28 – V = Прапор переповнення (ЗНАЧЕННІ ОПЕРАЦІЇ)
При виконанні інструкції КПСР може бути оновлений, якщо він потрапляє до однієї з згаданих раніше ситуацій. Якщо відбувається одне з умов, в відповідні біти потрапляє 1.
Є дві інструкції, які безпосередньо впливають на прапори КПСР, які є CMP і CMN. CMP є порівнянням, наприклад:
CMP R1, R0 @ notational subtraction where R1 – R0 and if the result is 0, bit 30 Z would be set to 1
Найбільш логічна команда, яка звичайно слідує за цим, це BEQ = перехід, якщо рівні, тобто був встановлений прапор нульової величини, і здійснюється перехід до іншої метки всередині коду.
У разі CMP, якщо два операнди рівні, тоді результат є нулем. CMN здійснює той же порівняння, але з другим операндом, який був від'ємним, наприклад:
CMN R1, R0 @ R1 - (-R0) or R1 + R0
При роботі з командою SUB результат не оновлює КПСР, необхідно використовувати команду SUBS, щоб здійснити будь-яке оновлення прапорів відповідно.
Наступної тижня ми глибше вивчимо інформацію про реєстр зв'язку! Підтримуйте нас!