Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/14: Рейтинг темы: голосов - 14, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 14.04.2019
Сообщений: 2
1

Как реализовать операцию "Исключающее или" между двумя битами Mcs-51

18.05.2019, 10:53. Просмотров 2710. Ответов 8

Добрый день. Подскажите как реализовать операцию "Исключающее или" между двумя битами, которые находятся в аккумуляторе , а результат этой операции поместить в в другой бит аккумулятора.
Название: 1234.JPG
Просмотров: 36

Размер: 10.3 Кб
D7,D3,D5 - биты аккумулятора
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2019, 10:53
Ответы с готовыми решениями:

Используя операцию "Исключающее Или" переключить 7й бит числа
используя операцию «исключающее ИЛИ» переключите 7й бит числа напишите код программы в билдер с++

Написать функцию, реализующую логическую операцию "Исключающее ИЛИ"
Напишите функцию bool Xor (bool x, bool y), реализующую функцию "Исключающее ИЛИ" двух логических...

Ввести три числа, произвести с ними операцию "Исключающее Или"
Ввод 3 чисел(любых). Операция искл ИЛИ (^)

Реализовать функцию "Исключающее ИЛИ" двух логических переменных x и y
Вот так все работает : program _Xor; var number1,number2 : byte; function _xor (num1,num2 :...

8
Модератор
8142 / 6016 / 801
Регистрация: 14.02.2011
Сообщений: 20,807
18.05.2019, 11:09 2
можно как то заморачиватся со сдвигами,
можно при помощи битов, если аккумулятор поддерживает битовую адресацию, я этого не помню
но я бы составил таблицу истинности, занеc бы этот массив в ПЗУ(256 байт), и потом бы просто выбирал значения, проигрыш в памяти выигрыш в скорости
0
0 / 0 / 0
Регистрация: 14.04.2019
Сообщений: 2
18.05.2019, 11:20  [ТС] 3
Я нашел вот такой пример, но не очень понимаю как это работает
Как реализовать операцию "Исключающее или" между двумя битами Mcs-51

Таблица истинности для исключающего или.
Как реализовать операцию "Исключающее или" между двумя битами Mcs-51

Аккумулятор поддерживает побитовую адресацию
0
Модератор
8142 / 6016 / 801
Регистрация: 14.02.2011
Сообщений: 20,807
18.05.2019, 11:59 4
Лучший ответ Сообщение было отмечено TarasANANAS как решение

Решение

это программная реализация XOR выбраного бита и бита переноса результат в бит переноса
вот таблица истиности
bit C C
0 0 0
0 1 1
1 0 1
1 1 0
смотрим если бит равен 0 то C не меняется, если бит равен 1 то C инвертируется
что и делает команда JNB
http://www.gaw.ru/html.cgi/txt/doc/micros/mcs51/asm/jnb_bit_re18.htm
1
5471 / 2563 / 347
Регистрация: 17.02.2013
Сообщений: 3,682
18.05.2019, 17:17 5
Лучший ответ Сообщение было отмечено northener как решение

Решение

Assembler
1
2
3
4
        mov c, ACC.3
        jnb ACC.7, metka
        cpl c
metka:  mov ACC.5, c
2
пофигист широкого профиля
3979 / 2646 / 746
Регистрация: 15.07.2013
Сообщений: 15,433
19.05.2019, 02:42 6
Ethereal, нормальный код. Я бы так же сделал.
0
Модератор
8142 / 6016 / 801
Регистрация: 14.02.2011
Сообщений: 20,807
19.05.2019, 08:37 7
Ethereal, а зачем использовать бит переноса?
Assembler
1
2
3
4
        mov ACC.5, ACC.3
        jnb ACC.7, metka
        cpl  ACC.5
metka:   .....
0
пофигист широкого профиля
3979 / 2646 / 746
Регистрация: 15.07.2013
Сообщений: 15,433
20.05.2019, 01:51 8
Цитата Сообщение от ValeryS Посмотреть сообщение
Ethereal, а зачем использовать бит переноса?
Имхо в 51-м нет операции переноса бита с одного произвольного адреса на другой произвольный адрес.
1
5471 / 2563 / 347
Регистрация: 17.02.2013
Сообщений: 3,682
20.05.2019, 16:13 9
Цитата Сообщение от ValeryS Посмотреть сообщение
mov ACC.5, ACC.3
Нет у 8051 такой пересылки. Есть пересылка MOV <direct>,<direct> байта в байт, но нет бита в бит. Есть только MOV C,<bit> и MOV <bit>,C
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2019, 16:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Заштриховать область между двумя графиками и вывести в ячейке или на графике "входит" или "не входит"
Возможно ли заштриховать область между двумя графиками (область между синим и красным ломанными...

Как правильно написать "ИЛИ" между двумя условиями? Очень нужно
if (n=0) || (m=0) Console.WriteLine(&quot;Нельзя вычислить!&quot;); else ... Как...

Выполнить операцию "логическое И" и операцию "логическое ИЛИ" над числами массива
Помогите пожалуйста, нужно очень срочно написать программу. Теорию знаю, а вот с практикой не...

Рассматривая массив из 8 пятиразрядных слов, найти "исключающее или" всех 8 слов для выражения "10101"
У меня дан массив из 5 байт. Рассматривая его как массив из 8 пятиразрядных слов, найти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.