Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено -=ВН=- 03 августа 2005 г. 20:53
В ответ на: Мой вопрос затерялся в пене событий, пвторяю нужно 2х байтовых числа поделить друг на друга причем одно из этих чисел ,делитель заведомо меньше делимого отправлено Nikolayus 03 августа 2005 г. 19:32

Ниже подпрограмма деления 32-х разрядного на 16-ти разрядное, dv3216
Можете на ее основе.
И тестовый пример - 32767 поделить на 5.
Делимое в R7,R6,R5,R4. Младший байт в R4, старший в R7.
Делитель в R3,R2. Младший байт в R2. Делитель должен быть больше 0.
Частное в R5,R4. Младший байт в R4.
Остаток в R7,R6. Младший байт в R6.
Для деления 16-ти разрядного на 16-ти разрядное R7,R6 должны быть=0.
Можно их обнуление затащить в подпрограмму.

TEST:
MOV R7,#0
MOV R6,#0
MOV R5,#7FH
MOV R4,#0FFH
MOV R3,#0
MOV R2,#5
LCALL DV3216
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;DIVIDEND: R7,R6,R5,R4;
;DIVISOR : R3,R2;
;QUOT : R5,R4
;REM ; R7,R6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DV3216:
MOV R1,#16
CLR C
MOV A,R3
RRC A
MOV R3,A
MOV A,R2
RRC A
MOV R2,A
CLR A
RRC A
MOV R0,A
DICYCL:
MOV A,R5
CLR C
SUBB A,R0
MOV R5,A
MOV A,R6
SUBB A,R2
MOV R6,A
MOV A,R7
SUBB A,R3
MOV R7,A
SETB C
JNB ACC.7,DICONT
MOV A,R5
ADD A,R0
MOV R5,A
MOV A,R6
ADDC A,R2
MOV R6,A
MOV A,R7
ADDC A,R3
MOV R7,A
CLR C
DICONT:
MOV A,R4
RLC A
MOV R4,A
MOV A,R5
RLC A
MOV R5,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R7
RLC A
MOV R7,A
DJNZ R1,DICYCL
RET


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru