Преобразование BIN -->BCD

ну зачем вот так с утра и обозвать меня старым пеньком )))

Старым склерозным пеньком ))))

Самый простой- работа со стеком. Для ЯВУ стэк это святое место, через него и идут все вызовы и возвраты из них. Залезть туда и похулиганить можно, но только через ассемблер -асм вставки.
А похулиганить там бывает очень интересно. И ничьих заслуг я себе не приписываю, это не мое изобретение.

Ну, что получили?

Зачем Вы продолжаете кормить тролля, который, по своей дремучей безграмотности, утверждает, что говнокодить можно только на ассемблере? Видно же, что по-настоящему говнокодить он не умеет ни на чём, и языка ассемблера он не знает точно также, как не знает Си.

Помните наши примеры говнокода №1 и №2. Теперь хоть будем знать, что без ассемблера этого делать было нельзя (а мы запрет нарушили :frowning: )

2 лайка

Хорошие примеры, но это всего лишь один процент от того что мог бы сделать на этом месте асм.

Простите, Вы, возможно, не заметили, но я уже сказал Вам:

Я общался с Вами пока надеялся, что Вы программист и можете написать несколько строк кода для подтверждения своей позиции. С треплом же, который флудит мегабайтами и не может написать ни строчки кода (то задача не та, а то … просто “не обязан”) мне обсуждать нечего. Если Вас не затруднит, не беспокойте меня больше, пожалуйста.

2 лайка

Возможно, это Вас удивит, но любой старожил форума с легкостью может написать класс stack, причем у этого класса, в отличие от аппаратного стека не будет ограничения на размер типа помещаемых в стек данных.

Вы микросхемы в каком корпусе предпочитаете: в керамическом или в пластиковом?
Я - в пластиковом, их напильником обрабатывать проще.

Правильно я понял Вашу мысль, что примеров должно быть не 2, а 200?

Вы приведите хотя бы один пример того, что можно сделать на Ассемблере и нельзя на Си.

1 лайк

да оставьте вы его в покое, он сам исчезнет.

3 лайка

https://youtu.be/jY0daWjD9fg?t=12

Работа со стеком. это не только запись в него данных, но возможность посмотреть, что записывала в него предыдущая функция и выйти в нее, в ее код.
И вдобавок к написанию класса или программы- можно утверждать что они написан на сях, но если посмотреть листинг этой прожки- то окажется что там обычный асм.
Вот для примера кусочек листинга Оптибут, который написан якобы на си, кто скажет что это не асм, пусть кинет в меня штукой баксов. :stuck_out_tongue_winking_eye:

Спойлер
   
 ch = getch();
    
 7e78:	c2 2e       	mov	r12, r18

    
 if(ch == STK_GET_PARAMETER) {
    
 7e7a:	7f d0       	rcall	.+254    	; 
 0x7f7a <getch>
  unsigned char which = getch();
   
 7e7c:	81 34       	cpi	r24, 0x41	; 65
   
 7e7e:	61 f4       	brne	.+24     	; 0x7e98 <main+0x94>
   
 7e80:	7c d0       	rcall	.+248    	; 0x7f7a <getch>
     
 verifySpace();
   
 7e82:	18 2f       	mov	r17, r24
   
 7e84:	8c d0       	rcall	.+280    	; 0x7f9e <verifySpace>
     
 /*
   
 * Send optiboot version as "SW version" 
 * Note that the references to memory are optimized away.
       
*/
     
 if (which == STK_SW_MINOR) {
   
 7e86:	12 38       	cpi	r17, 0x82	; 130
   
 7e88:	e9 f0       	breq	.+58     	; 0x7ec4 <main+0xc0>
	
  putch(optiboot_version & 0xFF);
      }```

Главное не чесать

1 лайк

Тема в топе, а так никто ничего и не сказал, как же лучше делать бин-бисиди.

Напомнило - набздеть в трамвае и больше всех возмущаться))

1 лайк

Это вы на кого намекаете? На президента?

Зачем?
Назовите цель.

Ну ладно, мало ли кому чего спросонья может захотеться…
Вы всерьез считаете, что у кого-то из присутствующих может вызвать затруднение написать метод, “подсматривающий” содержимое стека внутри?

А зачем мне этот “кусочек”? Это Вы решили меня так удивить?
У меня вообще-то компилятор настроен так, чтобы сохранять прямо в директории скетча дизассемблерный листинг. Так что всегда, когда у меня возникнет такое желание, я могу посмотреть не только исходник, но и листинг любой своей программы.

Это человек открыл для себя кросс-компиляцию “для писюка”

1 лайк

Кстате, памойму, единственные команды ассемблера, которые в Си приходится эмулировать с извращениями, это команды циклического сдвига (как ROL и ROR в х86, в AVR не помню мнемоник). Иногда они нужны (хотя бы для шифрования). Забавно, арифметический сдвиг есть, а циклического - тютю. :slight_smile:

Спойлер

Неправда! Если посмотреть ещё дальше, то код на Си и ассемблере становится набором двух разных состояний полупроводника на кремниевой подложке! Ну или разная намагниченность поверхности диска.
Уже сто раз говорено про терминологию. Ассемблер, мнемокод и машинные коды.
В целом да, на Си программы немного больше и медленней. Но не потому что что-то невозможно, а потому что усилия по оптимизации не оправдываются. Зачем вместо А+В я буду заморачиваться доставанием значений из памяти в регистры, думать о переносе и переполнении? Чтобы экономить 0.1мкс когда у меня МК отдыхает 99.99% времени? К слову, стандартные действия типа вызова функций,арифметика и тому подобное достаточно точно компилируются. Смотря дизассемблер видно, не убавить, не прибавить.

3 лайка

Ну ясно же! Если ты хочешь подняться на уровень выше, отвязаться от ассемблерной мнемомики, ты должен чем то пожертвовать. Ты пишешь на платформонезависимом языке (пусть не на 100%) и за это нужно чем то платить. Чудес не бывает. А тот 20-30% overhead по объёму не идёт ни в какое сравнение с удобствами и фишками при использования этого языка.

4 лайка

На вопрос что можно сделать такого на ассемблере, чего нельзя на Си , у меня такой ответ:

На асме можно контролировать каждый такт/шаг исполняемого кода, точно знать что и когда происходит.

Это может быть нужно в тех случаях, когда важна именно точность временных интервалов.

P.S. Моё мнение, как любителя , возможно ошибочное