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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2015, 13:26   #1
Anticisco
Новичок
Джуниор
 
Регистрация: 23.11.2015
Сообщений: 1
Лампочка [Assembler] Реализация логической функции

Приветствую форумчане!
В общем, задача по ассемблеру такая:
Есть 4 тумблера (t1, t2, t3, t4), они формируют входное "слово", с помощью которого я зажигаю светодиоды.
Дана логическая функция F={0,3,7,14} t1, t2, t3, t4 (т.е. при положении тумблеров в состояниях 0000, 0011, 0111, 1110 функция F=1 и, как следствие, открытие порта Р3);
Все бы хорошо, но с помощью условных проверок (CJNE A, #d16, <label>) получается слишком много переходов (хотя все работает нормально).
Собственно, с помощью танцев с бубнами былы реализованы нормальные переходы и правильное открытие порта, но! подсказывает мне чутье, что это можно реализовать немного подругому.
Нужен "волшебный пендель" в нужную сторону (почитав очень много материала, так и не разобрался как реализовать это на ассемблере)
В приложении приведу программу, в конце, в подпрограмме FUNCT_TEST и надо реализовать "отлов" положений тумблеров.
----кусок кода FUNCT_TEST----
Код:
FUNCT_TEST:
	CJNE R0, #0000H, MOV_1 	; ЕСЛИ А<>0000Н, ТО СРАВНИВАЕМ ДАЛЬШЕ
	CALL FUNCT_ON                   ; ВЫСТАВЛЯЕМ ПОРТ В FF, ЕСЛИ А ПОДОШЛИ
	MOV_1: 
	CJNE R0, #0030H, MOV_2      ; ЕСЛИ А<>0030H, ТО СРАВНИВАЕМ ДАЛЬШЕ
	CALL FUNCT_ON			; ВЫСТАВЛЯЕМ ПОРТ В FF, ЕСЛИ А ПОДОШЛИ
  	MOV_2: 
  	CJNE R0, #0070H, MOV_3	; ЕСЛИ А<>0070Н, ТО СРАВНИВАЕМ ДАЛЬШЕ
	CALL FUNCT_ON			; ВЫСТАВЛЯЕМ ПОРТ В FF, ЕСЛИ А ПОДОШЛИ
	MOV_3: 
	CJNE R0, #00E0H, MOV_4	; ЕСЛИ А<>00E0H, ТО СРАВНИВАЕМ ДАЛЬШЕ
	CALL FUNCT_ON			; ВЫСТАВЛЯЕМ ПОРТ В FF, ЕСЛИ А ПОДОШЛИ
	MOV_4: 
	CALL FUNCT_OFF			; ВЫСТАВЛЯЕМ ПОРТ В 00, ЕСЛИ ВСЕ А НЕ ПОДОШЛИ
	JMP MAIN_PROG
Код был написан и отлажен в FSI Studio - полностью работоспособен
Если есть возможные пути решения обхода этих множественных CJNE?
Заранее благодарен за помощь/советы
PS. Сам программирую на Delphi и СИ++, а асм - это лютость лютая.
Вложения
Тип файла: txt 2.txt (2.2 Кб, 122 просмотров)

Последний раз редактировалось Anticisco; 23.11.2015 в 13:33.
Anticisco вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти таблицы истинности логической функции. Harveeey Помощь студентам 8 05.11.2014 10:20
Описание логической функции earlier(t1,t2) Mitzzz Общие вопросы Delphi 8 04.05.2012 23:06
Описание логической функции ПОТОМОК(А,Б) Boomhauer Помощь студентам 2 03.04.2011 20:28
Реализация функции strncpy на C и Assembler под Linux nomad-shtainer Помощь студентам 0 26.12.2009 20:03
Построение эквивалентной логической функции (C++) Anastasiya209 Помощь студентам 5 03.06.2009 20:28