nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 14:35



Reply to topic  [ 7 posts ] 
Альтернативные мнемоники PIC 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Сам я изучал мнемоники PIC по даташитам Микрочипа, и признаюсь - у меня они не вызвали восторга...
Во-первых, потому, что f в мнемонике как-то сразу ассоциируется со
словом flag, но выяснилось, что это file - так Микрочип называет регистры.
Узнал я это, работая над Picaro от Tom-а Napier-а...

Quote:
The PIC16C56 has 32 one-byte RAM registers, which Microchip confusingly calls “files.” (Did someone copyright “register”?)


Во-вторых почему аккумулятор - W, тоже непонятно... может кто-то запатентовал А ? :D

Дальше - больше... просматривая коды Тома заметил я множество
приятных команд типа

CLRC

SKPZ
SKPNZ

понятно сходу, что это CLR C, SKIP Z, SKIP NZ, но в документации
Микрочип таких мнемоник нет !
Я грешным делом стал искать в исходниках #define ...
или подключение *.h - файла, но ничего не было, а проект компильнулся
без ошибок, но Протеус в отладке показывал эти коды в мнемонике
Microchip.
Тогда я в папке Mpasm.exe поискал эти слова, и выяснилось, что
есть они сугубо в теле Mpasm.exe - и больше нигде.
Выходит есть альтернативные мнемоники PIC - более удобные (а
может - устаревшие по мнению Microchip )?

Если кто сталкивался - может подскажет где глянуть ?
А то я зело не люблю - test_byte_and... трали-бали... :lol:
И не ковырять же Mpasm.exe... тем более - что вряд ли внутри есть
хелп по подобным мнемоникам.


07 Jun 2010 08:26
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
Это тебе в сырцы gputils смотреть надо :)

Кстати у SX-28 система команд идентична PIC16C5X, но команды по другому названы - я лично на ассемблере пиков для него программы писал...

_________________
:dj: https://mastodon.social/@Shaos


Last edited by Shaos on 08 Jun 2010 04:16, edited 1 time in total.



07 Jun 2010 16:18
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Оказывается это называется Pseudo-instructions для Microchip's MPALC assembler. Но Mpasm.exe их вполне поддерживает, как выяснилось из опыта.
Если кому интересно, то можно подробнее глянуть здесь:
http://techref.massmind.org/techref/New ... /mpalc.txt

Code:
       Name            Mnemonic          Equivalent       Status
                                        Operation(s)

Clear Carry            CLRC             BCF        3,0       -

Set Carry              SETC             BSF        3,0       -         

Clear Digit Carry      CLRDC            BCF        3,1       -

Set Digit Carry        SETDC            BSF        3,1       -

Clear Zero             CLRZ             BCF        3,2       -             

Set Zero               SETZ             BSF        3,2       -

Skip on Carry          SKPC             BTFSS      3,0       -

Skip on No Carry       SKPNC            BTFSC      3,0       -

Skip on Digit Carry    SKPDC            BTFSS      3,1       -

Skip on No Digit Carry SKPNDC           BTFSC      3,1       -   

Skip on Zero           SKPZ             BTFSS      3,2       -             

Skip on Non Zero       SKPNZ            BTFSC      3,2       -             

Test File              TSTF f           MOVF       f,1       Z

Move File to W         MOVFW f          MOVF       f,0       Z

Negate File            NEGF f,d         COMF       f,1
                                        INCF       f,d       Z

Add Carry to File      ADDCF f,d        BTFSC      3,0
                                        INCF       f,d       Z

Subtract Carry from
File                   SUBCF f,d        BTFSC      3,0
                                        DECF       f,d       Z

Add Digit Carry to
File                   ADDDCF f,d       BTFSC      3,1
                                        INCF       f,d       Z

Subtract Digit
Carry from File        SUBDCF f,d       BTFSC      3,1
                                        DECF       f,d       Z

Branch                 B k              GOTO       k         -

Branch on Carry        BC k             BTFSC      3,0
                                        GOTO       k         -

Branch on No Carry     BNC k            BTFSS      3,0
                                        GOTO       k         -

Branch on Digit
Carry                  BDC k            BTFSC      3,1
                                        GOTO       k         -

Branch on No Digit
Carry                  BNDC k           BTFSS      3,1
                                        GOTO       k         -

Branch on Zero         BZ k             BTFSC      3,2
                                        GOTO       k         -

Branch on Non Zero     BNZ k            BTFSS      3,2
                                        GOTO       k         -

Call across page
boundary               LCALL k          BCF 3,5 or BSF 3,5
                                        BCF 3,6 or BSF 3,6
                                        CALL     k


08 Jun 2010 02:56
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
Причесал табличку, а то она нечитабельная была...

P.S. Вот тут она же приведена, а также объяснено, почему лучше не пользоваться командами, которые превращаются в две инструкции :)

http://www.piclist.com/techref/microchi ... pseudo.htm
Quote:
By the way, don't bother using the "LCALL" pseudo-op... Since it
doesn't restore the code-page bits after the CALL, it's sorta
useless. Also, be careful with the pseudo-ops that assemble to two
instructions; constructs like the following, for instance, will cause
you great pain and suffering:

; DON'T DO THIS!

BTFSS FLAGS,SWITCH ;If the switch is pressed, skip ahead.
NEGF REG ;Otherwise, negate the REG register.

_________________
:dj: https://mastodon.social/@Shaos


09 Dec 2014 02:17
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
объяснено, почему лучше не пользоваться командами, которые превращаются в две инструкции :)

Да в общем-то это в некотором роде макросы. Почему бы не пользоваться макросами, если они удобны?

_________________
iLavr


09 Dec 2014 09:29
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
Lavr wrote:
Shaos wrote:
объяснено, почему лучше не пользоваться командами, которые превращаются в две инструкции :)

Да в общем-то это в некотором роде макросы. Почему бы не пользоваться макросами, если они удобны?


Макросы должны явно отличаться от команд - например префиксом. В таком случае у программиста визуально будут разделяться одинарные инструкции и тяжёлые макросы - ошибок станет меньше...

_________________
:dj: https://mastodon.social/@Shaos


11 Dec 2014 08:25
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
Макросы должны явно отличаться от команд - например префиксом...

Совершенно они никому и ничего не должны. Это, так сказать, пожелание хоршего тона в программировании.

А макросы обычно как раз и называют именем, хорошо отражающим их суть.

_________________
iLavr


11 Dec 2014 13:35
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 7 posts ] 

Who is online

Users browsing this forum: No registered users and 9 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.