Сейчас на форуме: Dart Raiden, bedop66938, morgot (+6 невидимых) |
eXeL@B —› Электроника —› Компилятор MPASM (ветвления) |
Посл.ответ | Сообщение |
|
Создано: 14 октября 2011 11:35 · Личное сообщение · #1 Здравствуйте форумчане. Учусь программировать на ассемблере под микроконтроллер PIC16F877. В контроллере есть регистр STATUS, который содержит флаги состояния АЛУ. В частности флаг Z (флаг нулевого результата). В принципе как и на "взрослом процессоре". Имею фрагмент кода: Code:
В некотором мануале вычитал, что этот контроллер поддерживает недокументированную команду BNZ. (Переход на метку, если флаг Z = 1). Пишу в исходнике bnz loc_1, а в дизассемблере получаю btfss STATUS, Z / goto loc_1 Внимание вопрос: Реально ли "научить" компилятор принимать команды ветвления такие как JNZ / JZ ? Просто от разных наборов команд получается каша в голове. Знаю что если принципиально подойти к этому вопросу, то можно всё. Вот меня интересует, кто-нибудь делал подобный "тюнинг" ? И если делал, то как ? Можно как вариант использовать макросы. Типа Code:
Тогда компилятор будя воспринимать что мне надо. Но как быть с условием ? ( jnz loc_1 ) Думаю у меня получилось правильно сформулировать вопрос. |
|
Создано: 14 октября 2011 12:21 · Поправил: OKOB · Личное сообщение · #2 Хотите BNZ перезжайте с 16й серии на 18ю и будет вам счастье. компилятор за вас сделал необходимую замену на проверку бита и переход или вы предпочли бы сообщение о ошибке "Команда не поддерживается для целевого контроллера"? Что касается макро то все давно уже изобретено и можете накуралесить любые мнемоники (имена макро) какие вам дороги (известны). например: http://comments.gmane.org/gmane.comp.hardware.microcontrollers.pic/176064 ----- 127.0.0.1, sweet 127.0.0.1 |
|
Создано: 14 октября 2011 12:23 · Личное сообщение · #3 |
|
Создано: 15 октября 2011 00:27 · Личное сообщение · #4 |
eXeL@B —› Электроника —› Компилятор MPASM (ветвления) |
Эта тема закрыта. Ответы больше не принимаются. |