ASM. YARDIM

Başlatan plcman, 27 Mart 2006, 18:36:39

plcman

Aşagıdaki yazılımı 16f84'den çektim ama ( otomatik musluk ) fakat yazılımın her tarafında label ( etiket) yazıyor bunun anlamı nedir ve bu normal mi? yoksa bir kodlama falan mı ? yapılmış.



; Generated by WinDis84, (c) Nigel Goodwin 1998.

           LIST      P=16F84, F=INHX8M
           include "P16FXX.inc"
           ORG     0x0000

           CLRF    PORTA
           CLRF    PORTB
           BSF     STATUS    , RP0
           MOVLW   0x08
           MOVWF   TRISB
           MOVLW   0x0F
           MOVWF   TRISA
           BCF     STATUS    , RP0
           MOVLW   0x00
           MOVWF   0x20
Label_0003  BSF     PORTB     , 01
           CALL    Label_0001
           BCF     PORTB     , 01
           CALL    Label_0002
           BTFSS   PORTB     , 03
           GOTO    Label_0003
           CALL    Label_0004
           BSF     PORTB     , 01
           CALL    Label_0001
           BCF     PORTB     , 01
           CALL    Label_0002
           BTFSS   PORTB     , 03
           GOTO    Label_0003
           BSF     PORTB     , 01
           CALL    Label_0001
           BCF     PORTB     , 01
           CALL    Label_0002
           BTFSS   PORTB     , 03
           GOTO    Label_0003
           BSF     PORTB     , 01
           MOVF    PORTA     , W
           MOVWF   0x27
           BCF     STATUS    , Z
           SUBLW   0x00
           BTFSC   STATUS    , Z
           GOTO    Label_0003
           BTFSC   PORTA     , 03
           GOTO    Label_0005
           BTFSC   PORTA     , 02
           GOTO    Label_0006
Label_0008  BSF     PORTB     , 06
           BSF     PORTB     , 04
           CALL    Label_0007
           DECFSZ  0x27      , f
           GOTO    Label_0008
           BCF     PORTB     , 06
           BCF     PORTB     , 04
Label_000A  BSF     PORTB     , 01
           CALL    Label_0009
           BCF     PORTB     , 01
           CALL    Label_0002
           BTFSC   PORTB     , 03
           GOTO    Label_000A
           CALL    Label_0009
           CALL    Label_0009
           GOTO    Label_0003
Label_0006  BSF     PORTB     , 01
           BSF     PORTB     , 06
           BSF     PORTB     , 04
           CALL    Label_0009
           CALL    Label_0009
           BCF     PORTB     , 01
           CALL    Label_0002
           BTFSC   PORTB     , 03
           GOTO    Label_0006
           BCF     PORTB     , 06
           BCF     PORTB     , 04
           BSF     PORTB     , 01
           CALL    Label_0009
           CALL    Label_0009
           GOTO    Label_0003
Label_0005  BSF     PORTB     , 01
           CALL    Label_0004
           BCF     PORTB     , 01
           CALL    Label_0002
           BTFSC   PORTB     , 03
           GOTO    Label_0005
           BSF     PORTB     , 01
           BTFSS   PORTA     , 00
           GOTO    Label_000B
           INCF    0x20      , f
Label_000B  BTFSS   PORTA     , 01
           GOTO    Label_000C
           INCF    0x20      , f
           INCF    0x20      , f
Label_000C  BSF     PORTB     , 06
           BSF     PORTB     , 04
           CALL    Label_0007
           DECFSZ  0x20      , f
           GOTO    Label_000C
           BCF     PORTB     , 06
           BCF     PORTB     , 04
           CALL    Label_0009
           CALL    Label_0009
           GOTO    Label_0003
Label_0007  MOVLW   0x02
           MOVWF   0x23
Label_000F  MOVLW   0xFF
           MOVWF   0x24
Label_000E  MOVLW   0xFF
           MOVWF   0x22
Label_000D  DECFSZ  0x22      , f
           GOTO    Label_000D
           DECFSZ  0x24      , f
           GOTO    Label_000E
           DECFSZ  0x23      , f
           GOTO    Label_000F
           RETURN
Label_0009  MOVLW   0x01
           MOVWF   0x23
Label_0012  MOVLW   0xFF
           MOVWF   0x24
Label_0011  MOVLW   0xFF
           MOVWF   0x22
Label_0010  DECFSZ  0x22      , f
           GOTO    Label_0010
           DECFSZ  0x24      , f
           GOTO    Label_0011
           DECFSZ  0x23      , f
           GOTO    Label_0012
           RETURN
Label_0001  MOVLW   0x06
           MOVWF   0x24
Label_0014  MOVLW   0xFF
           MOVWF   0x22
Label_0013  DECFSZ  0x22      , f
           GOTO    Label_0013
           DECFSZ  0x24      , f
           GOTO    Label_0014
           RETURN
Label_0004  MOVLW   0xFF
           MOVWF   0x25
Label_0015  DECFSZ  0x25      , f
           GOTO    Label_0015
           RETURN
Label_0002  MOVLW   0x3C
           MOVWF   0x25
Label_0016  DECFSZ  0x25      , f
           GOTO    Label_0016
           RETURN

           ORG     0x2000
           DATA    0x0F
           DATA    0x0F
           DATA    0x0F
           DATA    0x0F

           ORG     0x2007
           DATA    0x19


           END

Petek

Nigel Goodwin'in disassembler programı ile bir hex kodu assembly koduna dönüştürülmüş. Label yazılı yerler de goto yada call adresleridir.
“Önyargıları yıkmak atomu parçalamaktan zordur” A.Einstein

plcman

Peki bu yazılıma müdehale etmem mümkünmü bazı değiklikler yapmak istiyorum.

ete

Bu program aslında Pic Basic Pro da yazılıp derlenmiş bir program. Bu yüzden alt programlar numaralandırılmış etiketlerle isimlendirilmiştir.
Tabiiki yeniden basic'e çevrilmesi mümkün değildir.
ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Petek

Alıntı yapılan: "plcman"Peki bu yazılıma müdehale etmem mümkünmü bazı değiklikler yapmak istiyorum.
Assembly kodları üzerinde tabi ki istediğin değişikliği yapabilir, MPASM ile derleyip yeniden çalışabilir hex kodu elde edebilirsin.
“Önyargıları yıkmak atomu parçalamaktan zordur” A.Einstein

Petek

Alıntı yapılan: "ete"Bu program aslında Pic Basic Pro da yazılıp derlenmiş bir program. Bu yüzden alt programlar numaralandırılmış etiketlerle isimlendirilmiştir.
Tabiiki yeniden basic'e çevrilmesi mümkün değildir.
ETE

Ete hocam,  arkadaşın verdiği assembly kodları (kodun başında da belirtildiği gibi) Nigel Goodwin'in disassembler programı ile hex kodundan çevrilmiş. Bu disassembler ile çok çalıştığım için biliyorum. Nigelin picprog877 programında ve aynı zamanda Icprog içerisinde bu disassembler programı çalışmaktadır. İsterseniz herhangi bir hex kodu alıp deneyin. Yukarıdakine benzer şekilde assembly kodları ile karşılaşacaksınız.
“Önyargıları yıkmak atomu parçalamaktan zordur” A.Einstein

stlg

Bir zamanlar bende bu tur bir kodu disassembler programı  ile tersine çevirmiştim bu etiketlerde ordan oraya atlamak işkence, birde her yigidin bir yogurt yiyişi vardır derler en guzeli kendi programınızı kendiniz yazmanmanız  ;)
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

plcman

Belki çok şey istiyorum haklısınız ama disassebly programıını buldum ama yukarıdaki kodu dönüştüremedim aranızda bunu yapabilecek daha dogrusu buna vakit ayıra bilecek birisi var mı? Ben beceremedim

ete

@Petek,

Pic Basic de sanırım Nigel Goodwin'in programını kullanıyor. Çünki basic programını derlediğim zaman aynı ifadeleri görüyorum.

ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com