Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2019, 21:58   #1
STboov
 
Регистрация: 12.10.2019
Сообщений: 3
По умолчанию [Assembler] Перевод в двоично-десятичный код

Здравствуйте, необходимо перевести в двоично-десятичный. Много раз пробовал , ничего не получается. Помогите пожалуйста.
Задание такое: "Заполнить РОН банка №0 двоично-десятичными числами"
Код:
#include p16f873a.inc
     __CONFIG _HS_OSC & _WDT_OFF;
     ORG      H'005'            ;вектор сброса 
CNT  EQU      H'A0'             ;определение регистра счётчика
                                ;с адресом А0(банк 1)

;запись возрастающих чисел в ОЗУ
     BCF      STATUS,RP1        ;выбираем банк регистров 1
     BSF      STATUS,RP0        ;
     MOVLW    H'20'             ;загрузка в рабочий регистр адреса            
                                ;первого POH в банке 0
     MOVWF    FSR               ;записываем начальный адрес
                                ;в регистр косв.адресации
     CLRF     CNT               ;обнуляем регистр счетчика
M10: MOVF     CNT,W             ;загружаем значение счетчика в рабочий регистр
     MOVWF    INDF              ;сохраняем очередной отсчет в косвенно адресуемый POH
     INCF     FSR,F             ;увеличение адреса POH
     INCF     CNT,F     
     MOVF     CNT,W             ;загружаем значение счетчика в рабочий регистр
     XORLW    H'80'             ;сравниваем его с последним значение +1
     BTFSS    STATUS,Z          ;если совпадают, то скачек через одну команду
     GOTO     M10               ;если не совпадают, то возврат
                                ;к записи следующей ячейки
END
Как я понял, необходимо заменить 0A-0F, на числа 10....15(т.е +6), а как?
Изображения
Тип файла: png Безымянный.png (15.6 Кб, 48 просмотров)
STboov вне форума Ответить с цитированием
Старый 12.10.2019, 22:28   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Двоично-десятичное представление - это когда в нибле цифры от 0 до 9.
Если в младшем нибле цифра > 9, например, A16 (байт равен 0А), то надо прибавить 6. В этом случае в младшем нибле будет 0, а в старшем - 1. Т.е. в байте будет храниться число 10.
Если 16-тиричное чило занимает байт, то необходимо контролировать перенос единицы в старший нибл и, соответственно, контролировать, что цифра старшего нибла не больше 9. Т.е. к значению в старшем нибле прибавляем 1 и если результат больше 9, то прибавляем 6. В этом случае возникает сигнал переноса и единицу следует добавлять к следующему байту. В какой последовательности размещаются байты числа - это твой выбор.
Так, для числа, занимающего три байта, могут быть варианты: мл -ср - ст или ст - ср - мл.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 12.10.2019, 22:35   #3
STboov
 
Регистрация: 12.10.2019
Сообщений: 3
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Двоично-десятичное представление - это когда в нибле цифры от 0 до 9.
Если в младшем нибле цифра > 9, например, A16 (байт равен 0А), то надо прибавить 6. В этом случае в младшем нибле будет 0, а в старшем - 1. Т.е. в байте будет храниться число 10.
Если 16-тиричное чило занимает байт, то необходимо контролировать перенос единицы в старший нибл и, соответственно, контролировать, что цифра старшего нибла не больше 9. Т.е. к значению в старшем нибле прибавляем 1 и если результат больше 9, то прибавляем 6. В этом случае возникает сигнал переноса и единицу следует добавлять к следующему байту. В какой последовательности размещаются байты числа - это твой выбор.
Так, для числа, занимающего три байта, могут быть варианты: мл -ср - ст или ст - ср - мл.
Извините за наглость, но можете привести код. Целый день пыхчу, и все попросту
STboov вне форума Ответить с цитированием
Старый 12.10.2019, 23:18   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Для этого PIC я писал, но у меня нет желания к нему возвращаться, да и со временем ...

Ученье и труд всё перетрут.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 13.10.2019, 14:13   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Мне кажется, что этому посту место в
https://programmersforum.ru/forumdisplay.php?f=96
Ну и определиться бы - какой разрядности число надо перевести. 1 байт - это 3..4 машинных команды (сужу по AVR), а 32-битное, к примеру - пообъемнее.
Код:
попросту
или "попусту" ?

Последний раз редактировалось digitalis; 13.10.2019 в 14:21.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как ввести двоично-десятичный код числа в массив Cи Вероника99 Помощь студентам 13 20.05.2016 08:07
Чтение из файла,перевод из доп кода в прямой из него в десятичный и дальнейшее сохранение в файл С# DimaLord Помощь студентам 2 21.01.2014 00:39
Двоично-десятичный код Wanderwayz Помощь студентам 0 08.11.2012 23:26
Перевод из шестнадцатиричного в десятичный Bubel Visual C++ 0 24.10.2011 18:31
Перевод из двоичной системы в двоично-десятичную (assembler) Dolgan Фриланс 2 27.01.2011 18:01