Assembly de Macro

Başlatan billycan, 10 Haziran 2017, 17:58:46

billycan

Merhaba arkadaşlar. Benim bir projem var projem Assemblyde macro yapmak. Fonksiyon gibi basitleştirmemizi kod tekrarlarından kurtardıgını biliyorum ama elimdeki koda nasıl uygulayacagımı bilmiyorum yardımcı olucak var mı ?  :-[

mufitsozen

Alıntı yapılan: billycan - 10 Haziran 2017, 17:58:46
Merhaba arkadaşlar. Benim bir projem var projem Assemblyde macro yapmak. Fonksiyon gibi basitleştirmemizi kod tekrarlarından kurtardıgını biliyorum ama elimdeki koda nasıl uygulayacagımı bilmiyorum yardımcı olucak var mı ?  :-[

42 sene once ODTU 3. siniftayken 6502 cross-assembler icin IBM 370/145'de PL/I ile yazmistim.

Bu gunlerde imkanlar cok daha gelisti, cok daha kolay yazabilirsin.

Proje ne zaman basliyor, ne zaman teslim edilecek?

Macro processordan baska ne gibi isterleri var. (hangi dille yazdiginin onemi varmi? Hangi assembler icin olacak? vb...)

Tam olarak projede senden neler isteniyor?
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

billycan

Merhabalar

Benim elimde cok basit denilebilecek düzeyde örnekler var genelde led yakmalarla alakalı butona bastıgımda ledler yukarıdan aşağıya sonrada aşagıdan yukarıya dogru yanıyor elimde onun kodları ve proteus çizimi var ama macro halinde nasıl yazacagımı bilmiyorum pic16f877a da çalışıyorum.Hoca macroyu ögrenip uygulamamı istiyor.Assembly dilinde yazmam gerekiyor.Teslim tarihimde bu hafta çarşamba

Kabil ATICI

#3
Burada devam senin olmak üzere


;-----------------(kod un üzerinde olmak üzere)
LEDON MACRO ; buradaki LEDON etikettir.
BCF PORTB,1
ENDM
;-----------------
LEDOFF MACRO
BSF PORTB,1
ENDM
;-----------------
LEDON1 MACRO
BSF PORTB,2
ENDM
;-----------------

kod (programda) içinde herhangi bir yerde.
LEDON
...
LEDOFF
...
LEDON1
..


macro içindeki kodlar senin sürekli tekrarlanan kodlarıdır.

Bu kodlamanın tek sıkıntısı derleme esnasında macro içindeki kodlar yerlerine yerleştirilir ve öyle derlenir. Macro grupların çok büyükse programın işlemci hafızasını aşabilir ve bunu farkedemeyebilirsin.


Ama programda LED aç,... LED kapa gibi komutların çok varsa, bunları tek tek uğraşmayıp macroları yerleştirmen programlama açısından oldukça kolaylık sağlayacaktır. Macro etiketi açısından Türkçe karakterler konusunda dikkatli ol bazı derleyiciler kabul etmeyebilir.
ambar7

mufitsozen

#4
Ilk mesajindan tam olarak ne yapmak istedigini anlayamamisim. Sen PIC Assembly'de macro ozelligini kullanmak istiyorsun.

Sayin @Kabil ATICI sana baslaman icin yeterli ipucunu vermis.

bundan sonra senin biraz gayret gosterip denemeler yapman lazim. Anlamadigin yada cozemedigin kavram yada denemeler olursa bunlarida forumda sorarsan illaki bir cevap veren olacaktir.

Asagida sana PIC assembly'de kullanilan Macro'lardaki 'keyword'lerin bir listesini veriyorum. Kilavuzlardan bu kelimeelrin kullanimlarini okumakla basla.

"macro  – Declare Macro Definition" -  Macro taniminin baslangici

"exitm – Exit from a Macro" - Macro'dan cikis

"endm – End a Macro Definition" - Macro tanimin bitisi

"expand – " - Macro Expand Macro Listing - Macro acilimini listele

"noexpand – Turn off Macro Expansion" - Macro acilimini listeleme

"local – Declare Local Macro Variable" - Yerel Macro degiskeni tanimla

Kolay gelsin, bol sans
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

billycan

Merhabalar led on lu olan makroyu özellikle port c nin 1.bitine  buton  ve port b nin 1.bitine led baglayıp butona basıldıgında led yansın şeklinde proteusta çizdim ama sorunum şu led her durumda yanıyor led on led off yapsamda yanıyor kodu kaldırsamda butona bastıgımda o led sürekli yanıyor onu nasıl kontrol edebilirim? kodum şu şekilde :

INCLUDE "P16F877A.INC"
   
    ORG 0X00
   
    CLRF PORTB ;
    BSF STATUS,5
    CLRF TRISB
    MOVLW 0xFF
    MOVWF TRISC
   
    BCF STATUS,5
   
   
    DONGU
    MOVFW PORTC
    MOVWF PORTB
   
    GOTO DONGU
   
    END

AMA led sönmüyor