Size: a a a

Ассемблер

2020 December 10

s

salvoroni in Ассемблер
John Meow
Изучаю ассемблер AVR, нужно попарно сравнить три числа и сохранить результаты сравнения, чтобы потом использовать. Была идея сохранить все в один регистр, не нашел, как скопировать флаг в регистр. Как такое сделать?
А может в стек будете писать 0 и 1 в зависимости от результата?
источник

JM

John Meow in Ассемблер
salvoroni
А может в стек будете писать 0 и 1 в зависимости от результата?
Работу со стеком пока не изучал, но не думаю, что в нем есть необходимость
источник

s

salvoroni in Ассемблер
Ну это в случае равенства не равенства
Можете ещё свои обозначения добавить и с ними работать
Это альтернативный вариант
источник

s

salvoroni in Ассемблер
John Meow
Работу со стеком пока не изучал, но не думаю, что в нем есть необходимость
А зачем полностью флаги сохранять? Там ведь не только равенство + сохранив вы все равно вроде не сможете записать результат во флаги обратно
источник

D

Den in Ассемблер
Сергей
Нет, совсем нет. Это я недоговариваю, ибо не знаю уровней.
Это значит передавать управление финансами подчинённым. В противном случае верхушка тонет в информации и предприятие начинает болеть. Проще говоря, собственнику надо смириться, что уборщица сопрёт кусок мыла и оперировать более крупными данными.
А планирование и всё сопутствуещее делать в своих контурах. И это будет счастье
ну я примерно так и понял, аутсорс или свои казнокрады особой разницы нет :)) кто то может себе такое позволить, только в очень крупных компаниях где деньги текут рекой, ну или дурак которого потом разорят из за его собственной лени, масса таких случаев
источник

s

salvoroni in Ассемблер
John Meow
Работу со стеком пока не изучал, но не думаю, что в нем есть необходимость
Как бы вы это сделали на си? Сохранили бы просто куда-то ваши проверки
Можете для этого использовать все же стек
Работать с ним не сложно
источник

JM

John Meow in Ассемблер
Даже если так, решение со стеком будет выглядеть неожиданно и может показаться списанным
источник

s

salvoroni in Ассемблер
Ну или например можете побитово добавлять в какой-то регистр по 1
Например все 3 условия соблюдены значит в регистре будет 0x111
Потом сравнивать этот регистр
Но это кажется более сложным
источник

s

salvoroni in Ассемблер
John Meow
Даже если так, решение со стеком будет выглядеть неожиданно и может показаться списанным
Ну если вы сам это сделали, то в чем проблема?)
источник

JM

John Meow in Ассемблер
salvoroni
Ну или например можете побитово добавлять в какой-то регистр по 1
Например все 3 условия соблюдены значит в регистре будет 0x111
Потом сравнивать этот регистр
Но это кажется более сложным
Ну я так и собирался
источник

ST

Saenro T in Ассемблер
Для начала, на предмет чего сравнивать?
источник

JM

John Meow in Ассемблер
Saenro T
Для начала, на предмет чего сравнивать?
Какое больше
источник

ST

Saenro T in Ассемблер
Оставшиеся которые <= уже не нужны будут?
источник

JM

John Meow in Ассемблер
Saenro T
Оставшиеся которые <= уже не нужны будут?
Будут нужны
источник

ST

Saenro T in Ассемблер
Значит нужно отсортировать?
источник

JM

John Meow in Ассемблер
В цикле нужно делать операции над максимальным и минимальным, пока первое больше 0
источник

ST

Saenro T in Ассемблер
Лучше скинь само задание как есть, а не то, каким ты его видишь.
источник

С

Сергей in Ассемблер
Den
ну я примерно так и понял, аутсорс или свои казнокрады особой разницы нет :)) кто то может себе такое позволить, только в очень крупных компаниях где деньги текут рекой, ну или дурак которого потом разорят из за его собственной лени, масса таких случаев
Нет, это и к мелким относится. Если народу больше 100 человек, сразу надо искать доверенные лица и инструменты управления. Иначе дохлый номер пыжиться. Никто из дотошных никуда не выбрался. Нигде.
Так же и в семьях. Родитель даёт ребёнку деньгу на мороженку с минимальным контролем, что бы чадо почувствовал себя самостоятельным. Как только гайки затягивают со всех сторон в семье сразу начинается враньё и иногда воровство. Это следствие. На предприятиях точно так же. Машка ошиблась и не так напечатала 300 листов, а ей за это выговорчик. Всё, она в следующий раз будет забивать на работу, прикрывая свой зад.
В общем это было и есть абсолютно всегда и везде
источник

JM

John Meow in Ассемблер
John Meow
В цикле нужно делать операции над максимальным и минимальным, пока первое больше 0
На сишке как-то так:
    while (x > 0) {
       comp = (x > y) << 2 | (y > z) << 1 | (z > x);
       if (comp & 2) {
           if (comp & 0) {
               z >>= 2;
               ++y;
           } else {
               x >>= 2;
               if (comp & 1) ++z;
               else
                   ++y;
           }
       } else {
           if (!(comp & 1)) {
               z >>= 2;
               ++x;
           } else if (!(comp & 0)) {
               y >>= 2;
               ++z;
           }
       }
   }
источник

JM

John Meow in Ассемблер
Saenro T
Лучше скинь само задание как есть, а не то, каким ты его видишь.
Дано 3 3х байтовых числа X, Y, Z.

Пока Х>0 все числа сравниваются между собой. Самое большое число уменьшается в 4 раза, а к минимальному прибавлятеся 1
источник