Как сравнить два 16-разрядных числа?

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 15600
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Ёжли алгоритм и ТОЛЬКО СРАВНЕНИЕ...
Есть регистр флагов с заранее записанным числом, равным количеству пар сравниваемых регистров.
Делаем любые возможные операции сравнения из имеющегося набора команд последовательно с каждой парой.
Если имело место совпадение - декремент регистра флагов, иначе пропуск декремента.
По исчерпании сравниваемого проверяем содержимое остатка в регистре.
Если там нуль - все байты совпали.
А для сверки можно и xor помучить, главное перенос в таком случае БЕЗРАЗЛИЧЕН.
:roll:
Реклама
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

[uquote="Vlad_RK",url="/forum/viewtopic.php?p=3507273#p3507273"]P.S. Чего ты ко мне прицепился?[/uquote]
Интернет-общение обостряет восприятие текста диалогов. Психологическая особенность человека. Придавать эмоциональную окраску текстовым сообщениям. Так как мы не смотрим друг другу в глаза, и не знаем состояние оппонента, воображение дополняет сухой текст эмоциональным окрасом до максимума. То есть, так как нет точных данных, на всякий случай, текстовая информация считается угрозой. Это чистая физиология и психология, на уровне инстинктов.
Поэтому, я к тебе "не прицепился". Твой вопрос прост и примитивен. Достаточно открыть книгу. Что ты сделал, чтобы ответить на этот вопрос. Я отвечу за тебя. Ничего. Ты не захотел тратить никаких усилий и пошел на форум. А теперь я разворачиваю всю глубину того, что хотел сказать. Если ты не не приложил никаких усилий для ответа на этот вопрос, что ты будешь делать дальше, когда перед тобой встанет более сложный вопрос? Снова лапки кверху и на форум?
На форум нужно бежать, когда ты сделал все что только можно и оказался в тупике.
Моим критикам посвящается: форумы нужны. Но начинающие должны хоть что-то делать и сами. Читать книги, пробовать. РАБОТАТЬ. А не бежать при малейших трудностях на форумах. Контент форума должен быть качественным. Не примитивные вопросы, а интересные проблемы, проекты. И наполнение контента в наших руках. Иначе можно скатиться до уровня - а что делает та или иная команда?
Контактная информация:
Реклама
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

Z_h_e писал(а):В ДШ не обозначено как устанавливается флаг Z командой сpc, а только сам факт что она влияет на Z, надо смотреть отдельный документ. Смысл в том, что если флаг Z был сброшен перед выполнением этой команды, то он останется сброшенным в любом случае.
в отдельном документе по командам AVR четко указано, как выставляется флаг Z: кроме 8 битов результата еще берется предыдущее значение флага Z.
то есть, предыдущее значение флага Z ВЛИЯЕТ на новое значение этого флага.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Starichok51 писал(а):в отдельном документе по командам AVR четко указано, как выставляется флаг Z:
Именно это я и написал, не?
Starichok51 писал(а):то есть, предыдущее значение флага Z ВЛИЯЕТ на новое значение этого флага.
Я бы по другому это сформулировал, тоже самое, но с более дружественной для понимания трактовкой. Такие команды умеют только сбрасывать флаг Z, но не устанавливать.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

судя по упомянутому мной документу, устанавливать тоже умеет.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Составьте таблицу истинности
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

бит Z обрабатывается в команде CPC:
~R7*~R6*~R5*~R4*~R3*~R2*~R1*~R0*Z
где R - разряды регистра результата,
а ~ - означает инверсию.

в команде CP бит нуля не участвует.

Добавлено after 1 minute 44 seconds:
да, забыл указать - Z - предыдущее значения бита нуля.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Установить - это значит перевести из состояния 0 в 1.
В логическом выражении установки флага Z используется конъюнкция с текущим Z.
Если теущий Zтек=0. То чему будет равен Zнов=Zтек*(любое значение).

И по логике. Если бы команды типа CPC умели устанавливать флаг Z, как мог бы работать такой набор команд на проверку нуля?

Код: Выделить всё

CP
CPC
CPC
..
..
..
cpc
breq skokposkok
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

а если Zтек = 1, то Zнов тоже будет = 1, если в регистре будет 0. то есть, флаг установится.
то есть, в командах условного перехода (например, больше или равно) при равенстве операндов флаг нуля будет УСТАНАВЛИВАТЬСЯ после каждого побайтного сравнения, то есть, получения нулевого результата...

Добавлено after 38 minutes 56 seconds:
Starichok51 писал(а):если в регистре будет 0
тут и выше я ошибочку допустил.
нужно было написать в результате сравнения, а не в регистре.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Starichok51 писал(а):а если Zтек = 1, то Zнов тоже будет = 1, если в регистре будет 0. то есть, флаг установится.
Флаг не установится, он не сбросится. В любой НТД (в частности в ДШ если угодно) установка флага означает перевод его в 1 из любого состояния (по буржуйски этот термин звучит как set).
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

флаг СБРОСИТСЯ, если при последующих
срс ...
не будет получаться нуля при сравнении.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Я и говорю. Команда умеет только сбрасывать z. Но это по второму кругу уже.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

возможно, я тебя тогда не понял, тогда извини.
да, команда
ср ...
установит флаг,
а команда
срс ...
либо не изменит, либо, сбросит.

скорее всего, получилось, что я "не изменит" ошибочно посчитал за "установит"...

Добавлено after 2 hours 58 minutes 58 seconds:
тут я еще немного подумал по этому вопросу...
однако, в соответствии с приведенной мною формулой
Starichok51 писал(а):~R7*~R6*~R5*~R4*~R3*~R2*~R1*~R0*Z
с таким же успехом можно считать, что команда
срс ...
заново устанавливает флаг нуля в случае равенства операндов, если флаг уже был установлен.
или заново сбрасывает флаг нуля, если флаг был сброшен, независимо от результата сравнения.
это ничуть не противоречит логике приведенной формулы.

тут дело вкуса - каждый может трактовать работу команды, как ему нравится...
тебе нравится, что она умеет только сбрасывать, а мне нравится, что она умеет и устанавливать и сбрасывать...
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Starichok51 писал(а):тут дело вкуса - каждый может трактовать работу команды, как ему нравится...
тебе нравится, что она умеет только сбрасывать, а мне нравится, что она умеет и устанавливать и сбрасывать...
Мне нравится когда используют единую общепринятую терминологию, а не придумывают свою. В противном случае тебя никто понимать не будет.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

тогда дай точное указание на единую общепринятую терминологию, где сказано, что эта команда НЕ УМЕЕТ устанавливать флаг нуля.
лично я по формуле истинности вижу, что она УМЕЕТ это делать.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Что такое
Starichok51 писал(а): формуле истинности
я не знаю. Повторять уже сказанное смысла не вижу.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

я приводил формулу
Starichok51 писал(а):~R7*~R6*~R5*~R4*~R3*~R2*~R1*~R0*Z
так что, не надо дурака валять, что не знаешь, что это такое.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Это называется логическое выражение. Вы можете не только свою терминологию использовать, но и даже новый язык придумать со своим алфавитом, но понимать Вас никто не будет.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Ответить

Вернуться в «AVR»