Эта формула помогает понять, что происходит при выполнении команды «subwf». С ее помощью можно также объяснить, как устанавливаются флаги переноса. При этом флаги переноса и межтетрадного переноса цифры могут изменяться не так, как вы ожидаете. Рассмотрим, например, что произойдет, если из 1 вычесть 2:
Source = 1
W = 2
Команда = subwf Source, w
Для объяснения этого примера используем приведенную выше формулу, в которую подставим заданные значения:
w = 1 + ( 2 Л OxOFF) + 1 Произведя вычисления, получим:
w = 1 + ( OxOFD ) + 1 w = 1 + OxOFE w = OxOFF
Это результат, который ожидался. Однако отметим, что при этом флаг переноса не устанавливается в 1, что можно было бы ожидать для обычных процессоров. При выполнении обычной команды вычитания флаг переноса для данного примера был бы установлен в 1 (обычно «перенос» в других процессорах является «заемом»).