Page 215 - 4503
P. 215

7.2.3 Команди віднімання subwf і sublw

                 Команди  віднімання  subwf  і  sublw,  як  і  аналогічні
           команди додавання,  мають за операнди робочий регістр (w),
           регістр  даних  (f)  і  константу  l.  Як  видно  з  таблиці  7.2,  ці
           команди впливають на стан ознак С, DC, Z. Варто нагадати, що
           ознака  С  у  контексті  дії  віднімання  відіграє  роль  ознаки





              (англ.  Borrow  —  запозичення).  Тобто,  якщо  у  результаті
           операції  віднімання  ознака  С  отримує  значення  0,  а  отже  В
           (НЕ–С)    встановлена,    значить     відбулося    запозичення.
           Наприклад, маємо число А (від’ємне ),  число В (від’ємник) і їх
           різницю позначимо С = А – В. Надамо значення відємному 05,
           від’ємнику 08. Визначимо чому дорівнює  їх різниця С ( 5 – 8 =
           – 3) шляхом віднімання у стовпчик:


                                              =
                Як бачим, вийшло десяткове число 7, а не 3. Це сталося
           тому, що оскільки А < B, то у старший розряд числа А додана
           1, в результаті А отримало значення 15. Отож і різниця 15 – 8
           =  7.  Чому  ж  такий  помилковий  результат,  адже    було
           здійснено  правильне  рішення  —  запозичення  зі  старшого
           розряду?  Відповідь  криється  у  тому,  що  насправді  старший
           розряд  числа  А  мав  значення  0,  тобто  зичити  немає  відки.
           Фактично  відбулося  запозичення  додаткового  чужого  числа
           10. Значить, що позичили (число  10), тe й потрібно віддати,
           тобто відмінусувати  від отриманого результату.  Зробимо це
           за таким рівнянням:  (10 – 7) = – 3. Результат можна досягти,
           шляхом інвертування. Подивимося на таблицю нижче:



                                         215
   210   211   212   213   214   215   216   217   218   219   220