|
Читайте также: |
; Опис спеціальних регістрів
STATUS EQU 03H
; Опис регістрів пам'яті даних і змінних
START EQU 0CH; 8 старших розрядів
; початкового числа
ENDSTART EQU 0DH; Ділене (2 молодших розряди
; початкового числа)
TEN EQU 0EH; Дільник
REZ EQU 0FH; Змінна для зберігання
; результату перетворення (3-ї
; декади – сотні) і проміжних
; результатів ділення
TIME EQU 10H; Змінна для завдання кількості
; операцій віднімання
DEC1 EQU 11H; Змінна для зберігання першої
; декади 2/10 числа (одиниці)
DEC2 EQU 12H; Змінна для зберігання другої
; декади 2/10 числа (десятки)
; Опис бітів регістра STATUS
C EQU 0H; Прапорець переносу/позики
Робоча секція
; Початок коду, що виконується
ORG 0
GOTO BEGIN
ORG 100
BEGIN
; Початок першого кроку ділення
CLRW; Очистити регістр W
MOVLW B'0000 0010’; Запис константи в лічильник
MOVWF TIME; кількості віднімань
CALL DIV10; Виклик процедури ділення на 10
RLF START, 1; Зрушення діленого на два
RLF START, 1; розряди ліворуч
MOVLW ENDSTART; Завантажити молодші
; розряди діленого в регістр W
ADDWF START; Завантажити 9-й і 10-й
; біти початкового числа
; в молодші розряди регістра START
; Закінчення першого кроку ділення
MOVLF B'0000 0100’
MOVWF TIME
CALL DIV10
MOVLF START; Збереження молодшої декади
MOVLW DEC1; 2/10 числа в регістрі DEC1
MOVLW REZ; Частку від ділення на 1-му
MOVWF START; кроці завантажити в START
CLRF REZ; Очистити регістр REZ
; Початок другого кроку ділення
MOVLW B'0000 0100’
MOVWF TIME
CALL DIV10
DIV10; Процедура ділення на 10
FIRST
SUBWF START
BTFSC STATUS, C; Перевірка прапорця переносу
GOTO NOTFLAG1; Якщо С = 0, то перехід по мітці
ADDWF START; Відновлення START
BCF STATUS, 0; Очистити прапорець переносу
RLF REZ, 1; Зрушення ліворуч частки
RRF TEN, 1; Зрушення праворуч дільника
GOTO NOTFLAG
NOTFLAG1 RRF TEN, 1; Зрушення праворуч дільника
MOVLW TEN; Завантажити дільник в W
NOTFLAG DECFSZ TIME, 1; Декремент TIME, пропустити
; команду, якщо 0 (якщо регістр
; TIME онулився)
GOTO FIRST
RETURN; Кінець процедури DIV10
END
Зворотне перетворення (з двійково-десяткового коду в двійковий) здійснюється діленням початкового числа на 16 за правилами десяткової арифметики.
Окрім розглянутого вище способу перетворення чисел з однієї системи числення в іншу, можна скористатися більш простим способом «двох лічильників». При цьому способі з початкового коду віднімається, а до нового коду додається по одиниці до онулення початкового коду, причому віднімання здійснюється «в старій», а додання в «новій» системі числення.
Дата добавления: 2014-12-18; просмотров: 178 | Поможем написать вашу работу | Нарушение авторских прав |