![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Отрывок из программы:
RRFR1,w;деление на 2 без очистки бита С регистра STATUS. После выполнения;сдвига вправо сдвигаемый бит 0 из регистра R1 переместился в бит С регистра STATUS, а;единица из бита С регистра STATUS добавилась слева к значению регистра R1 и;сохранилась в аккумуляторе W.
; сохранить окно
BCF STATUS,C
RRF R1,w
MOVWF REZ
; сохранить окно
END; конец программы.
Т.е. деление на число 2 можно производить с помощью сдвига содержимого регистра вправо и влево соответственно, с помощью команд RRF, а также RLF. Сдвиг происходит через флаг C регистра STATUS, при сдвиге вправо, младший бит передается в C, а значение бита C передается в старший бит сдвигаемого регистра, при сдвиге влево все наоборот. Поэтому при применении команд сдвига для деления и умножения необходимо предварительно очистить бит C регистра STATUS.
Для сдвига вправо числа со знаком используется так называемый арифметический сдвиг, при которомзначение знакового разряда не меняется, поэтому результат сдвига отрицательного числа будет числотакже отрицательное.
Корректно делятся на 2 числа от -128 до +127 (включая -1).
Чтобы корректно разделить отрицательное число на 2 с помощью сдвига надо сделать
так:
RLF делимое,W; взяли в "С" знак делимого числа
INCFSZ делимое,W; а не "-1" ли случайно делится на 2?
RRF делимое,W; поделим с учетом знака, если конечно не "-1"
MOVWF делимое; сохраним результат округленный до меньшего значения
Деление на 2 нечетных чисел выполняется с погрешностью.
54.Какое значение 4-го бита будет после выполнения этой команды: BCF
Дата публикования: 2015-02-03; Прочитано: 244 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!