Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2017, 09:43   #1
Вячеслав777
 
Регистрация: 30.09.2017
Сообщений: 8
По умолчанию Битовые операции. Исключающее или - затруднение.

Здравствуйте!


Пусть в DSEG в ячейке ADR2=4Bh расположен код CODE=A8h.
Записать на языке ассемблера МК51 программу, которая выполняет вычисление заданной булевой функции F над этими кодами. Результат вычисления должен быть записан по адресу ADR3=7Ah. Программа должна начинаться с ячейки ADR1=1E3h.

Логическая функция выглядит так : F = X7 "И" X6 "И" ¬X5 "ИСКЛ.ИЛИ" ¬X4 "ИЛИ" ¬X3 "ИЛИ" X2 "И" X1 "ИСКЛ.ИЛИ"¬X0

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


org 04D4h
start:
mov 20h,78h ; переносим CODE в битовое пространство
mov c,7 ; c=x7
anl c,6 ; c=x7 and x6
anl c,/5 ; c=x7 or x6 or not(x5)

;а вот дальше сложность..помогите пожалуйста кодом расписать



Это для МК 8051
Вячеслав777 вне форума Ответить с цитированием
Старый 30.09.2017, 09:58   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

xrl это и есть ксор
p51x на форуме Ответить с цитированием
Старый 30.09.2017, 10:02   #3
Вячеслав777
 
Регистрация: 30.09.2017
Сообщений: 8
По умолчанию

Не так то было. В методичке к работе большими буквами написано, что использовать нельзя так (xrl) . Примечание: В системе команд нет исключающего ИЛИ (XOR). Но ее можно получить как значение выражения ( ну и там тождественное преобразование).
Изображения
Тип файла: jpg Снимок.JPG (51.0 Кб, 58 просмотров)
Вячеслав777 вне форума Ответить с цитированием
Старый 30.09.2017, 10:04   #4
Вячеслав777
 
Регистрация: 30.09.2017
Сообщений: 8
По умолчанию

Поэтому я и сделал запрос к вам. Так как не понимаю конечный ряд преобразований на примере в методичке, откуда эти 9, 8 вообще берутся. ( и мне ведь тоже так надо.. так как у меня xrl даже в двух операциях)
Вячеслав777 вне форума Ответить с цитированием
Старый 30.09.2017, 10:54   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Примечание: В системе команд нет исключающего ИЛИ (XOR).
http://www.keil.com/support/man/docs/is51/is51_xrl.htm

Ну раз хочется через формулы, то можно воспользоваться (A or B) and (!A or !B)

Цитата:
Так как не понимаю конечный ряд преобразований на примере в методичке, откуда эти 9, 8 вообще берутся.
Это временные переменные. Попробуйте выше выражение вычислить, не сохранив a и b изначальные.
p51x на форуме Ответить с цитированием
Старый 30.09.2017, 11:05   #6
Вячеслав777
 
Регистрация: 30.09.2017
Сообщений: 8
По умолчанию

Насчет временных переменных, почему именно 9 и 8. Или это не столь важно? Допустим запишу я это так, а мне еще будет необходимо xrl , беру переменные с индексами любыми,или есть какие-то рамки?
Вячеслав777 вне форума Ответить с цитированием
Старый 30.09.2017, 11:26   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Потому что от 0 до 7 у вас уже заняты. Теоретически можно использовать уже не нужные, но это потребует чуть больше шевелений мозгами.

Цитата:
Допустим запишу я это так, а мне еще будет необходимо xrl , беру переменные с индексами любыми,или есть какие-то рамки?
Ну вы же первый уже посчитаете и запишите в с. У вас снова 8 и 9 свободны.
p51x на форуме Ответить с цитированием
Старый 30.09.2017, 11:55   #8
Вячеслав777
 
Регистрация: 30.09.2017
Сообщений: 8
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Потому что от 0 до 7 у вас уже заняты. Теоретически можно использовать уже не нужные, но это потребует чуть больше шевелений мозгами.


Ну вы же первый уже посчитаете и запишите в с. У вас снова 8 и 9 свободны.
спасибо
Вячеслав777 вне форума Ответить с цитированием
Старый 30.09.2017, 20:19   #9
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

.а хде ксор-то??? вроде вопрос был про 'исключающее ИЛИ'
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 30.09.2017, 20:33   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Вот тут:
Цитата:
http://www.keil.com/support/man/docs/is51/is51_xrl.htm

Ну раз хочется через формулы, то можно воспользоваться (A or B) and (!A or !B)
p51x на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Битовые операции Александр Шатило Общие вопросы C/C++ 5 22.02.2015 16:30
Битовые операции TikTak93 Помощь студентам 1 12.12.2013 17:50
Битовые операции WizarD.89 Общие вопросы C/C++ 5 23.11.2012 16:40
Исключающее ИЛИ Utkin Общие вопросы по программированию, компьютерный форум 17 09.06.2010 16:05
Битовые операции ("")(Э_Є)("") Общие вопросы C/C++ 4 03.07.2009 19:15