ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 ноября
317201 Топик полностью
mazur (24.03.2012 12:03, просмотров: 66) ответил whale на ладно попробую пока так мож успеет... 17 тактов
Немного поправлю. Что-то у тебя неправильно с флагом C. Так как я не знаю всех условий задачи, особо вникать не буду.   .macro div16 ;***** Subroutine Register Variables .def drem16uL =r14 ; остаток мл .def drem16uH =r15 ; остаток ст .def dres16uL =r16 ; целое мл .def dres16uH =r17 ; целое ст .def dd16uL =r16 ; делимое мл .def dd16uH =r17 ; делимое ст .def dv16uL =r18 ; делитель мл .def dv16uH =r19 ; делитель ст .def dcnt16u =r20 ;********************* Code************ div16u: clr drem16uL ;clear remainder Low byte sub drem16uH,drem16uH ;clear remainder High byte and carry ldi dcnt16u,17 ;init loop counter d16u_1: rol dd16uL ;shift left dividend rol dd16uH dec dcnt16u ;decrement counter breq ex_dv16 d16u_2: rol drem16uL ;shift dividend into remainder rol drem16uH sub drem16uL,dv16uL ;remainder = remainder - divisor sbc drem16uH,dv16uH ; brsh d16u_1 ;if result negative add drem16uL,dv16uL ;restore remainder adc drem16uH,dv16uH rjmp d16u_1 ;else ex_dv16: .endmacro