Понадобились две необычные функции. Преобразовать 16-ричное значение байта, в ASCII эквивалент его 16-ричного значения. Короче, превратить байт, скажем 0xCD в два ASCII символа, - "C" и "D". а так-же, подпрограмму, делающую тоже самое, только наоборот. Поскрипев мозгами, решил что это нужно делать по таблице, и и быстро и решительно написал решение для первой задачи. Получилось хорошо. Со второй можно сказать, тоже получилось, но не так как хотел. Получилось объемно, с обилием меток и странных действий, а главное - очень тормознуто, т.к последовательно два раза подряд перебирается вся таблица, (обратную таблицу составить не сумел, приходится подбирать), плюс, нужен дополнительный байт памяти. Вылизал подпрограмму как сумел, но не смог особо уменьшить размер, и сократить количество переменных.
Наверное, существуют какие-то другие способы решения такой задачи, т.к прежде не делал такого, или хотя-бы способ улучшить хотя-бы то, что есть?
Есть вот такой черновик этих подпрограмм, для вышагивания в эмуляторе.
8051 ASM: Как нибудь улучшить код
8051 ASM: Как нибудь улучшить код
- Вложения
-
- handwrite.asm
- (1.04 КБ) 411 скачиваний
Трудное детство, стальные игрушки.
- Реклама
- da-nie
- Говорящий с текстолитом
- Сообщения: 1590
- Зарегистрирован: Вс июн 24, 2012 16:07:00
- Откуда: Лен.Обл.
- Контактная информация:
Re: 8051 ASM: Как нибудь улучшить код
А разве у 8051 нет команд двоично-десятичного преобразования? da или как-то так называлась вроде бы. Не помню.
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Re: 8051 ASM: Как нибудь улучшить код
[uquote="da-nie",url="/forum/viewtopic.php?p=3266319#p3266319"]А разве у 8051 нет команд двоично-десятичного преобразования? da или как-то так называлась вроде бы. Не помню.[/uquote]
DA A - это десятичная коррекция после операции сложения, т.к когда 16-рично складываются две десятичные числа, и результат - не десятичный. У 8051 вообще нет инструкций для преобразования чего либо.
DA A - это десятичная коррекция после операции сложения, т.к когда 16-рично складываются две десятичные числа, и результат - не десятичный. У 8051 вообще нет инструкций для преобразования чего либо.
Трудное детство, стальные игрушки.
-
petrenko
- Друг Кота
- Сообщения: 5326
- Зарегистрирован: Вт фев 21, 2012 13:51:55
- Откуда: Начинающий
- Контактная информация:
Re: 8051 ASM: Как нибудь улучшить код
Таблично это конечно универсально.
Но если учесть, что в ASCII коды десятичных идут последовательно от 20h 29h ,а коды букв от A до F соотв. от 31h до 36h
,то каждый ниббл можно по очереди засылать в Acc ,дополнять старшими нулями и после проверки диапазона {0..9} , {A..F} прибавлять 20h или 31h соотв. ,после чего отправлять в область отображения.
Но если учесть, что в ASCII коды десятичных идут последовательно от 20h 29h ,а коды букв от A до F соотв. от 31h до 36h
,то каждый ниббл можно по очереди засылать в Acc ,дополнять старшими нулями и после проверки диапазона {0..9} , {A..F} прибавлять 20h или 31h соотв. ,после чего отправлять в область отображения.
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Re: 8051 ASM: Как нибудь улучшить код
Полная таблица или таки представление HEX - файла в исполняемый код для загрузки в память программ?
За полную не скажу(там все же или таблица или последовательное сравнение необходимо), а вот для бутлоадера, использующего *.hex файл есть заготовки в исходнике этого проекта
http://radiokot.ru/forum/viewtopic.php? ... 7#p3167597
http://radiokot.ru/forum/download/file.php?id=291160

За полную не скажу(там все же или таблица или последовательное сравнение необходимо), а вот для бутлоадера, использующего *.hex файл есть заготовки в исходнике этого проекта
http://radiokot.ru/forum/viewtopic.php? ... 7#p3167597
http://radiokot.ru/forum/download/file.php?id=291160
- Реклама
Re: 8051 ASM: Как нибудь улучшить код
[uquote="Голимый",url="/forum/viewtopic.php?p=3266324#p3266324"][uquote="da-nie",url="/forum/viewtopic.php?p=3266319#p3266319"]А разве у 8051 нет команд двоично-десятичного преобразования? da или как-то так называлась вроде бы. Не помню.[/uquote]
DA A - это десятичная коррекция после операции сложения, т.к когда 16-рично складываются две десятичные числа, и результат - не десятичный. У 8051 вообще нет инструкций для преобразования чего либо.[/uquote]
в 580-м процессоре была процедура перевода двоичного числа от 0 до F в ASCII код:
DA A - это десятичная коррекция после операции сложения, т.к когда 16-рично складываются две десятичные числа, и результат - не десятичный. У 8051 вообще нет инструкций для преобразования чего либо.[/uquote]
в 580-м процессоре была процедура перевода двоичного числа от 0 до F в ASCII код:
Код: Выделить всё
ANI 0FH ; маскируем лишнее
ADI 90H
DAA
ACI 40H
DAAА люди посмотрят и скажут: "Собаки летят. Вот и осень."


