Merhaba arkadaşlar
daha önce mcu-türkiye sayfasında yayınlanan ve asm komutlarını açıklamaları vede yaptığım örnek uygulamaları burdada yaynılamaya karar verdim. Orjinal yazıların linklerinide yazının başına ekliyorum uygulama videolarını izlemeniz açısından göz atmanızı tavsiye ediyorum.
ASM KOMUTLARI VE AÇIKLAMALARIhttp://www.mcu-turkey.com/?p=16578 (http://www.mcu-turkey.com/?p=16578)
MERHABA ARKADAŞLAR
bugunkü yazımnda LaunchPad msp430 mcu ları için kullanılan asm kodlarını açıklamaya çalışıcam. sitede C dili ile ilgili güzel örnek kodlar var fakat asm ile ilgili bir kaynak bulmak zor. Kaynak teşkil etmesi açısından kodları açıklamaya çalıştım ilerleyen bölümlerde kısa örnekler ile pekiştirmeye çalışıcam.
Regestiriler Ve Görevleri
SR (Status Regestirisi) : Durum Regestirisi artimatik, mantık ve karşılaştıma oparatörleri bu regestirinin bazı bitlerini etkiler. Bu bitlerin durumu kontrol edilerek programımızın ilgili yerlere dallanmasını sağlayabliriz. Bu regestirilerin nasıl kullanılacağı komutlarla birlikte açıklanacaktır.
SP (Stak Pointır) : 64K stal pointer mevcuttur. Bu regestiri kesme veya Call komutu ile kullanılır. Kesme/call komutu bulunduğu satırın adresini (PC Pogram sayıcıdaki adresi)
Stak pointerin en üst byte ne yerleştirir. Altprogramın işi bitince ret/reti komutlarından biriyle karşılaştığında kesme/call komutunu ilk karşılaşıldığı PC adresinin olduğu yerin bir altından kot çalışmaya devam eder.
Ör :
Satır komut
15 Mov #ffh;r15
16 Dec r15
17 Call alt_program_1;alt programa dallan işin bitice bir alt satırdan devam et
18 mov r15,&P1OUT
19 .............................
End
45 alt_program_1
46 clr r15
47 ret
Yukarıdaki koddan da anlaşılacağı gibi program 17 satırda alt_program_1 etiketindeki programı çağırır. Call komutu alt_program_1 programını çağırdığında satır(PC) daki 17 değerini SP adresinin en üst saklayıcısına kaydeder. Altp program ret komutuyla karşılaştığında SP regestirindeki En üst kaydedicisindeki adresi satır(PC) kaydedicisine bir artırarak geri yükler sonuç olarak ret komutundansonra program 18. satırdan devam eder.
SP regestirisinde adresler enalttan üste doğru sıralanır. Yani ilk gelen adres bilgis en alta enson gelen adres bilgisi en üste doğru sıralanır. Geri dönüşlerde ise bu ilem tersten işlem görmeye başlar yani en üstteki adres verisi PC kaydedicisine ilk olarak gönderilir. SP regestirisine ilk yüklene adres son olarak PC yüklenir.
PC (Program Cointer) : Program çalımaya başladığında 00 adresinden başlar ve her bir komut satır indeksi 1 artırılarak takip edilir PC programın hangi satırda oldğunu kontrol etmeye yarayan regestirisidir. Call komutu once bu regestirinin değerini SP regestirisine yerleştirir ve Ret komutuyla karşılaşıldığında SP regestirisini içeriği PC regestirisine geri yüklenir ve program kaldığı yerden devam etmesi sağlanır. Ayrıca atlam komutları ve interruplarda program adresini bu regestiriye yazarak istenilen satırlara kodların dallanması sağlanır.
************************************************************************
ADD Ekle Kaynak(Src) ve Hedefi(Dst) Toplar (Worl Ve Pit)
Söz Dizimi : ADD{.W or .B} src,dst
Operation src + dst −> dst
Açıklama : Kaynak (src) oparant ile Hedef(Dst) oparanta eklenir ve sonuç hedef oparanta kaydedilir. Kaynak ta herhangibi bir değişiklik olmaz
Status Bits N: sonuç negative ise bitin değeri 1(set) olur, Değilse bir 0 olur
Z: sonuç sıfırsa bit 1(set) olur, değilse bit 0 değeri alır
C: aritmatik veya mantıksal işlemler sonucunda taşma varsa bu bitin değeri 1 olur değilse bitin değeri 0 olur
V: aritmatik işlemler sonucunda taşma olduğunda bu bitin değeri 1 olur. Değilse bitin değeri 0 dır.
Örnek : ADD #10,R5
JC TONI ; taşma meydana gelirse TONI etiketine dallanır. Değilse alt satırdan devam eder
************************************************************************
ADDC Add komutuna benzer. Işleme Caryy Bitinide dikkate alır.
Söz Dizimi : ADDC{.W or .B} src,dst
Operation src + dst + C −> dst
Açıklama : Kaynak işlenen ve taşıma bit (C), hedef işlenen eklenir.Kaynak işlenen Etkilenmez. Hedef önceki içeriği kaybolur.
Status Bits N: sonuç negativ ise bitin değeri 1(set) olur, Değilse bir 0 olur
Z: sonuç sıfırsa bit 1(set) olur, değilse bit 0 değeri alır
C: aritmatik veya mantıksal işlemler sonucunda taşma varsa bu bitin değeri 1 olur değilse bitin değeri 0 olur
V: aritmatik işlemler sonucunda taşma olduğunda bu bitin değeri 1 olur. Değilse bitin değeri 0 dır.
Örnek : ADD.W @R13+,10(R13) ; ADD LSDs
ADDC.W @R13+,10(R13) ; ADD 2/carry
************************************************************************
AND Kaynak ve hedefi And İşlemine tabi tutar.
Söz Dizimi : AND{.W or .B} src,dst
Operation src .AND. dst −> dst
Açıklama : kaynak ve hedef oparantlarının bitlerini lojik and işlemine tabi tutar. Sonucu hedefe yazdırır.
Status Bits N:sonuc 1(set) ise MSB bitleri 1 dir, değilse sıfır
Z: sonuç sıfırsa bit 1(set) olur, değilse bit 0 değeri alır
C: sıfırdan farkı ise bitindurumu 1(set) dir, değilse sıfırdır.
V: Reset
Örnek : MOV #0AA55h,R5 ;
AND R5,TOM ; r5 ile TOM değişkenini an işlemine tabi tut
JZ TONI ; sonuç sıfırsa TONI etiketine dallan
************************************************************************
BIC Biti temizle
Söz Dizimi : BIC{.W or .B} src,dst
Operation .NOT.src .AND. dst −> dst
Açıklama : Hedef oparantın seçilen biti 0 yapılır.
Status Bits : Etkilenmez.
Örnek :
BIC.W #0FC00h,LEO ; (6 Msb Bitleri) yüksek öncelikli 6bit 0 a çekilir Clear)
BIC.B #0F8h,LEO ; Clear 5 MSBs
************************************************************************
BIS Hedef oparantın bitleri set (1) yapılır (BIC komutunun tersi)
Söz Dizimi : BIS{.W or .B} src,dst
Operation src .OR. dst −> dst
Açıklama : Kaynak ve Hedef mantıksal OR işlemine tabi tutulur sonuç Hedefe Yazdırılır.
Status Bits : Etkilenmez.
Örnek :
BIS.W #003Fh,TOM ; 6 LSB biti set edilir
BIS.B #0E0h,TOM ; 3 MSB biti set edilir. Sonuç olarak TOM Değişkeninin içeriği #0FFh olur.
************************************************************************
BIT Bit test eder
Söz Dizimi : BIT{.W or .B} src,dst
Operation src .AND. dst
Açıklama : kaynak ve hedef işlenen mantıksal AND işlemine tabi tutulur..Sonuç olarak sadece (Status Regestirisi)durum bitlerini etkiler. Kaynak ve hedef işlenen Etkilenmez..
Status Bits N:bit in değeri 1(set) ise MSB bitleri 1(set) durumunda demektir. Değilse Msb bitleri herhangibi biri 0 demektir.
Z: sonuç sıfırsa bit 1(set) olur, değilse bit 0 değeri alır
C: sıfırdan farkı ise bitindurumu 1(set) dir, değilse sıfırdır.
V: Reset
Örnek : BIT #0200h,R8 ;R8 Regestirisinin 9. biti set(1) mi?
JNZ TOM ; evet ise TOM Etiketinedalan
************************************************************************
CALL Alt Program Çağrısı.
Söz Dizimi : CALL dst
Operation : dst −> tmp Adres bilgisi saklanır
SP − 2 −> SP
PC −> @SP PC updated to TOS ;PC SP nin en üst bitine yerleştirilir.
tmp −> PC dst saved to PC ;son olrak Saklanan dst değeri PC geri yüklenir.
Açıklama : alt prosödür çağırır ve dönüşte call komutunun altındaki satırdan çalışmaya devam eder.
Status Bits Etkilenmez.
************************************************************************
CMP Karşılaştırma Komutu
Söz Dizimi : CMP{.W or .B} src,dst
Operation dst + .NOT.src + 1 or (dst − src)
Açıklama : kaynak ve hedef regestirlieri çıkarma işlemine tabi tutulur. Kaynak veya Hedef regestiriler etkilenmez. Sadece Status Regestirirni bitleri etkilenir.
Status Bits N: sonuç negativ ise bitin değeri 1(set) olur, Değilse bir 0 olur
Z: sonuç sıfırsa bit 1(set) olur, değilse bit 0 değeri alır
C: Set if carry from the MSB, else reset
V: aritmatik işlemler sonucunda taşma olduğunda bu bitin değeri 1 olur. Değilse bitin değeri 0 dır.
Örnek : CMP R5,R6 ; R5 = R6?
JEQ EQUAL ; evet, JUMP
************************************************************************
Jxx Atlama Komutu
Söz Dizimi : Jx label
Operation Eğer Koşul Doğru ise: PC + 2 × offset −> PC
Açıklama : Eğer Koşul doğruysa, LSB 10-bit lik adres verisi (PC) program counter 'e yazılır ve programın burden devam etmesi sağlanır. Koşul yanlışsa bir alttaki satırdan çalışmaya devam eder.
Status Bits Durum bitleri Etkilenmez.
Örnek : JC, JHS taşma biti set ise etikete dallanır . (C) = 1
JEQ, JZ sıfır biti set(1) ise etikete dallanır. (Z) = 1
JGE (N .xor. V) = 0 N ve V bitlerini xor işlemine tabi tutar ve sonuc Reset(0) ise etikete dallanır.
JL (N .xor. V) = 0 N ve V bitlerini xor işlemine tabi tutar ve sonuc Set(1) ise etikete dallanır.
JMP koşula bağlı kalmaksızın etikete direk dallanır.
JN sonuç negative ise dallanır. (N) = 1
JNC, JLO taşma biti Reset (0) ise etikete dallanır . (C) = 0
JNE, JNZ sıfır biti Reset(0) ise etikete dallanır. (Z) = 0
************************************************************************
MOV Kaynak Oprarantı Hedef Oparanta Taşır.
Söz Dizimi : MOV{.W or .B} src,dst
Operation src −> dst
Açıklama : Kaynak işlenen hedef taşınır.Kaynak işlenen etkilenmez. Hedef önceki içeriği kaybolur.
Status Bits Status bitleri Etkilenmez.
Örnek : MOV #EDE,R10 ; EDE içerisindeki sayıyı r10 regestirisine taşır.
MOV #020h,R9 ; 20h sayısını r9 regestirisine kopyalar.
************************************************************************
PUSH Kayna oprarantı (SP) stak pointere Gönderir.
Söz Dizimi : PUSH{.W or .B} src
Operation SP − 2 → SP
src → @SP
Açıklama : Yığın işaretçisi iki azaltılır, sonar RAM daki Adres bilgisi stack pointere taşınır.(TOS)
Status Bits Status bits are Etkilenmez.
Örnek : PUSH R8 ; save R8
Note Sistem yığın işaretçisini (SP) her zaman iki sayı eksiltir
************************************************************************
RRA bit leri Sağa Kaydır
Söz Dizimi : RRA{.W or .B} dst
Operation MSB ® MSB, MSB ® MSB−1, ... LSB+1 ® LSB, LSB ® C
Açıklama : Hedef işlenen bir pozisyon sağa kaydırılır. LSB nin ilk biti(0 biti) nin değeri stak regestirisinin taşma (C) bitinde gösterilir.( hedef regestirinin değerini 2 ye bölmekle aynı işlemi yapar)
Status Bits N: sonuç negativ ise bitin değeri 1(set) olur, Değilse bir 0 olur
Z: sonuç sıfırsa bit 1(set) olur, değilse bit 0 değeri alır
C: LSB nin 0 biti nin değeri gösterilir.
V: Reset
Örnek : RRA R5 ; R5/2 −> R5
Mov #2h,R7 ;r7 regestirisine "00000010"b değeri yüklendi.
Rra r7 ;r7 yi bir bit sağa kaydır r7="00000001" C=0 Z=0
Rra r7 ;r7 yi bir bit sağa kaydır r7="00000000" C=1 Z=1
************************************************************************
RRC bit leri Sağa Kaydır
Söz Dizimi : RRC{.W or .B} dst
Operation C ® MSB ® MSB−1 .... LSB+1 ® LSB ® C
Açıklama : Hedef işlenen bir pozisyon sağa kaydırılır.Taşıma bit (C) MSB içine kaydırılır, LSB taşıma bit (C) kaydırıldı. (C bitinin değeri Msb bitinin 15. bitine yerleştirilir. Lsb 0. biti ise C bitine kopyalanır. )
Status Bits N: sonuç negativ ise bitin değeri 1(set) olur, Değilse bir 0 olur
Z: sonuç sıfırsa bit 1(set) olur, değilse bit 0 değeri alır
C: Loaded from the LSB
V: Reset
Örnek : SETC ; MSB bitini hazırla
RRC R5 ; R5/2 + 8000h −> R5
************************************************************************
SUB hedef opranttan kaynak çıkarır.
Söz Dizimi : SUB{.W or .B} src,dst
Operation dst + .NOT.src + 1 −> dst
Açıklama : kaynak oparantın içeriğin 1 artırarak hedeftan çıkarılır sonuç hedefe yazılır.
Status Bits N: sonuç negativ ise bitin değeri 1(set) olur, Değilse bir 0 olur
Z: sonuç sıfırsa bit 1(set) olur, değilse bit 0 değeri alır
C: aritmatik veya mantıksal işlemler sonucunda taşma varsa bu bitin değeri 1 olur değilse bitin değeri 0 olur
V: aritmatik işlemler sonucunda taşma olduğunda bu bitin değeri 1 olur. Değilse bitin değeri 0 dır.
************************************************************************
SUBC hedef oparantan kaynak çıkartılır C cary biti de kaynağa eklenir.
Söz Dizimi : SUBC{.W or .B} src,dst
Operation dst + .NOT.src + C −> dst
Açıklama : kaynak oparanta (C Cary ) taşma biti eklenerek hedeften çıkartılır. Sonuç hedef oparanta yazılır. Kaynak etkilenmez.
Status Bits N: sonuç negativ ise bitin değeri 1(set) olur, Değilse bir 0 olur
Z: sonuç sıfırsa bit 1(set) olur, değilse bit 0 değeri alır
C: aritmatik veya mantıksal işlemler sonucunda taşma varsa bu bitin değeri 1 olur değilse bitin değeri 0 olur
Set to 1 if no borrow, reset if borrow.
V: aritmatik işlemler sonucunda taşma olduğunda bu bitin değeri 1 olur. Değilse bitin değeri 0 dır.
************************************************************************
SWPB Msb ve Lsb bitlerini yer değiştirir.
Söz Dizimi : SWPB dst
Operation Bits 15 to 8 <−> bits 7 to 0
Açıklama : hedef oparant ın MSB (yüksek bitleri) ve LSB (düşük bitleri) yer değiştirir.
Status Bits :Status bitleri Etkilenmez.
Örnek : R5 değer 256 ile çarpılır.Sonuç, R5, R4 saklanır.
SWPB R5 ; swap bytes r5
MOV R5,R4 ; r4 kaydet
BIC #0FF00h,R5 ;sonuç doğru
BIC #00FFh,R4 ;sonuç doğru
************************************************************************
SXT Bileri genişlet
Söz Dizimi : SXT dst
Operation Bit 7 −> Bit 8 ......... Bit 15
Açıklama : hedefin içeriği 127 den büyük ise MSB bitlerini set(1) eder.
Status Bits N: sonuç negativ ise bitin değeri 1(set) olur, Değilse bir 0 olur
Z: sonuç sıfırsa bit 1(set) olur, değilse bit 0 değeri alır
C: sonuç sıfırdan farklıysa bitin değeri 1 olur, değilse 0
V: Reset
Örnek : MOV.B &P1IN,R7 ; port 1 oku
SXT R7 ; bitleri genişlet 16
************************************************************************
XOR kaynak ve hedefi özel OR işlemine tabi tutar.
Söz Dizimi : XOR{.W or .B} src,dst
Operation src .XOR. dst −> dst
Açıklama : kaynak ve hedef I özel or (XOR) işlemine tabi tutar. Kaynak etkilenmez sonuç hedefe yarleştirilir.
Status Bits N: MSB bileri set ise bu bitin değeri 1 dir,değilse 0
Z: sonuç sıfırsa bit 1(set) olur, değilse bit 0 değeri alır
C: Bit Set(1) ise sonuç 0 dan farklıdır, Değilse Bit reset(0) dır.
V: her iki oparant da negative ise bitin değeri set(1) olur , değilse 0
Örnek : XOR R6,TONI ; (Toggle)bit terseleme
Xor komutu bitin değerini terslemede(toggle işleminde)kullanılabilir.
Ör : XOR #1h,&P1OUT ;port1 in 0. bitinin değerin tersler.
************************************************************************
ADC (carry)taşma bitini hedefe ekler
Söz Dizimi : ADC{.W or .B} dst
Operation dst + C −> dst
Benzer : : ADDC{.W or .B} #0,dst
Açıklama : Hedef işlenen taşıma bit (C) eklenir. Hedef önceki içeriği kaybolur.
Status Bits N: sonuç negativ ise bitin değeri 1(set) olur, Değilse bir 0 olur
Z: sonuç sıfırsa bit 1(set) olur, değilse bit 0 değeri alır
C: Set if dst was incremented from 0xFFFF to 0×0000, else reset
V: aritmatik işlemler sonucunda taşma olduğunda bu bitin değeri 1 olur. Değilse bitin değeri 0 dır.
Örnek :
ADD @R13,0(R12) ; LSD ye ekler
ADC 2(R12) ; carry bitini MSD ekler
************************************************************************
BR Hedefi (PC) program countere taşır.
Söz Dizimi : BR dst
Operation dst −> PC
Benzer : : MOV.W dst,PC
Açıklama : koşulsuz dallanma sağlar. Etiket veya bir sayıyı program sayıcısına (PC) taşır
Status Bits Etkilenmez.
BR #EXEC ; etikete dallanır
; ie. MOV @PC+,PC
BR EXEC ; EXEC yer alan adresi (PC) taşır
; ie. MOV X(PC),PC
BR &EXEC ; EXEC bulunan adrese dallanır.
; ie. MOV X(0),PC
BR R5 ; R5 yer alan adres dallanır.
; ie. MOV R5,PC
BR @R5 ; Branch to the address pointed to by R5.
; ie. MOV @R5,PC
BR @R5+ ; R5 adresindeki sayı ile program counteri toplarve bu adresten çalışmaya devam eder.
; ie. MOV @R5+,PC
BR X(R5) ; Branch to the address M(R5 + X)
; ie. MOV X(R5),PC
************************************************************************
CLR hedefi temizler(tüm bitleri 0 yapar)
Söz Dizimi : CLR{.W or .B} dst
Operation 0 −> dst
Benzer : : MOV{.W or .B} #0,dst
Açıklama : Hedef içeriğini temizler.
Status Bits Etkilenmez.
Örnek :
CLR TONI ; 0 −> TONI
CLR R5
CLR.B TONI ; 0 −> TONI
************************************************************************
CLRC (C) Carry bitini temizler
Söz Dizimi : CLRC
Operation 0 −> C
Benzer : : BIC #1,SR
Açıklama : taşma bitini temizler.
Status Bits N: Etkilenmez
Z: Etkilenmez
C: Sıfırlanır
V: Etkilenmez
Örnek : CLRC ; taşma bitini temizle
RLC R5 ; sola kaydır R5
************************************************************************
CLRN negative bitini temizler
Söz Dizimi : CLRN
Operation 0 → N
Benzer : : BIC #4,SR
Açıklama : (SR) status regestirisinin Negativ biti Reset(0) lenir.
Status Bits N: Reset (0)
Z: Etkilenmez
C: Etkilenmez
V: Etkilenmez
************************************************************************
CLRZ zero bitinin içeriği sıfırlanır
Söz Dizimi : CLRZ
Operation 0 → Z
Benzer : : BIC #2,SR
Açıklama : (SR) status regestirisinin Zero biti Reset(0) lenir.
Status Bits N: Etkilenmez
Z: Reset ( 0)
C: Etkilenmez
V: Etkilenmez
************************************************************************
DEC Hedefin içeriini 1 azaltır.
Söz Dizimi : DEC{.W or .B} dst
Operation dst − 1 −> dst
Benzer : : SUB{.W or .B} #1,dst
Açıklama : Hedef işlenen bir azaltılır.Orijinal içeriği kaybolur.
Status Bits N: sonuç negativ ise bitin değeri 1(set) olur, Değilse bir 0 olur
Z: dst sıfır ise bitin değeri set(1),değilse bit 0 olur
C: hedef içeriği 0 ise bitin değeride 0 olur, hedef sıfırdan farklı ise bitin değeri 1 olur
V: aritmatik işlemler sonucunda taşma olduğunda bu bitin değeri 1 olur. Değilse bitin değeri 0 dır.
Örnek : DEC R10 ; Decrement R10
************************************************************************
DECD Hedefin içeriğini Çift eksiltir.
Söz Dizimi : DECD{.W or .B} dst
Operation dst − 2 −> dst
Benzer : : SUB{.W or .B} #2,dst
Açıklama : Hedef in içeriği iki azaltılır.Orijinal içeriği kaybolur.
Status Bits N: sonuç negativ ise bitin değeri 1(set) olur, Değilse bir 0 olur
Z: bit 1 ise sonuç sıfırdır,değilse bit 0 dır.
C: sıfırdan farklı ise (taşma varsa ) bitin değeri 1 olur, değilse bit0 dır.
V: aritmatik işlemler sonucunda taşma olduğunda bu bitin değeri 1 olur. Değilse bitin değeri 0 dır.
Örnek : DECD R10 ; Decrement R10 by 2
************************************************************************
DINT tüm interputları(kesmeleri) kapatır
Söz Dizimi : DINT
Operation 0 → GIE or (0FFF7h .AND. SR → SR
Benzer : : BIC #8,SR
Açıklama : Tüm kesmeler devre dışı bırakılır(GIE bayrağını Resetler). Sabit 08h sayı ile durum kaydedicisi (SR) ters ve mantıksal AND işlemi uygulanır .Sonuç SR içine yerleştirilir.
Status Bits Etkilenmez.
Note: Herhangi bir kod dizisi kesintiye karşı korumalıdır gerekiyorsa, DINT kesintisiz dizisi başlamadan önce en az bir öğretim idam olmalı, ya da NOP komutu tarafından takip edilmelidir
************************************************************************
EINT interput(kesmeleri) etkinleştirir.
Söz Dizimi : EINT
Operation 1 → GIE or (0008h .OR. SR −> SR)
Benzer : : BIS #8,SR
Açıklama : Tüm kesmeler etkindir(GIE Bayrağı Set 1 Yapılır).# 08h sabit ve durum kayıt SR mantıksal ORed.Sonuç SR içine yerleştirilir.
Status Bits Status bits are Etkilenmez.
Note: Kesmeler sağlar bekleyen bir kesme hizmet isteği olsa bile her zaman enable kesme komutu (EINT) şu talimatı yürütülür.
************************************************************************
INC Hedefin içeriği Bir artırılır.
Söz Dizimi : INC dst or INC.W dst
Operation dst + 1 −> dst
Benzer : : ADD #1,dst
Açıklama : Hedef işlenen bir artırılır.Orijinal içeriği kaybolur.
Status Bits N: sonuç negativ ise bitin değeri 1(set) olur, Değilse bir 0 olur
Z: Set if dst contained 0FFFFh, else reset
C: Set if dst contained 0FFFFh, else reset
V: Set if dst contained 07FFFh, else reset
Örnek : INC.B STATUS
************************************************************************
INCD Hedefi Çiftartırır.
Söz Dizimi : INCD{.W or .B} dst
Operation dst + 2 −> dst
Benzer : : ADD{.W or .B} #2,dst
Açıklama : Hedef işlenen iki artırılır.Orijinal içeriği kaybolur.
Status Bits N: sonuç negativ ise bitin değeri 1(set) olur, Değilse bir 0 olur
Z: bit set(1) ise sonuç sıfır demektir, değilse bit 0 dır.
C: sonuç 0 dan farklı sie bit değeri set(1) olur.
V: Set if dst contained 07FFEh or 07FFFh, else reset
Örnek : INCD R5 ; increment r5 by 2
************************************************************************
INV Hedfin İçeriği Terslenir.
Söz Dizimi : INV{.W or .B} dst
Operation .NOT.dst −> dst
Benzer : : XOR{.W or .B} #0FFFFh,dst
Açıklama : Hedef işlenen ters.Orijinal içerik kaybolacaktır.
Status Bits N: sonuç negativ ise bitin değeri 1(set) olur, Değilse bir 0 olur
Z: Set if dst contained 0FFFFh, else reset
Set if dst contained 0FFh, else reset
C: Bit Set(1) ise sonuç 0 dan farklıdır, Değilse Bit reset(0) dır.
V: Set if overflow, else reset
Örnek : INV R5 ; tersle R5, R5 = 0FF51h
************************************************************************
NOP işlem yapmaz
Söz Dizimi : NOP
Operation None
Benzer : : MOV #0, R3
Açıklama : denetleyicide herhangibi bir işlem olmaz regestiriler etkilenmez. 1 saykıllık boşta bekler sadece gecikme prosödürlerinde kullanılabilir.
Status Bits Etkilenmez.
Örnek :
MOV #0,R3 ; 1 cycle, 1 word
JMP $+2 ; 2 cycles, 1 word
MOV #100,R3 ; 2 cycles, 2 words
************************************************************************
POP SP Hedefe taşır.
Söz Dizimi : POP{.W or .B} dst
Operation @SP −> temp
SP + 2 −> SP
temp −> dst
Benzer : : MOV{.W or .B} @SP+,dst
Açıklama : Yığın regestirisi (SP) (TOS) hedef taşınır. Yığın (SP) regestirisinin içeriği 2 artırılarak taşınır.
Status Bits Status bits are Etkilenmez.
NoteSistem yığın işaretçisini (SP) her zaman iki bayt soneki bağımsız artırılır.
************************************************************************
RLA Sola kaydır.
Söz Dizimi : RLA{.W or .B} dst
Operation C ¬ MSB ¬ MSB−1 .... LSB+1 ¬ LSB ¬ 0
Benzer : : ADD{.W or .B} dst,dst
Açıklama : Hedef işlenen bir pozisyon sola kaydırılır.MSB taşıma bit (C) kaydırıldı ve LSB 0 ile doldurulur.
Status Bits N: sonuç negativ ise bitin değeri 1(set) olur, Değilse bir 0 olur
Z: sonuç sıfırsa bit 1(set) olur, değilse bit 0 değeri alır
C: MSB nin 15. biti bu regestiriye taşınır.
V: taşma olursa bitin değeri set(1) olur,değilse 0
Örnek: mov.w #1000000000000010b,R15
Rla R15 ;R15 in içeriği sola kaydırılır. R15=#0000000000000100b olur. (C) Carry biti C=1 olur.
************************************************************************
RLC Sola Kaydırır ve C biti LSB nin sonuna eklenir
Söz Dizimi : RLC{.W or .B} dst
Operation C ¬ MSB ¬ MSB−1 .... LSB+1 ¬ LSB ¬ C
Benzer : : ADDC{.W or .B} dst,dst
Açıklama : Hedef işlenen bir pozisyon sola kaydırılır.Taşıma bit (C), LSB kaydırıldı ve MSB taşıma bit (C) kaydırıldı.
Status Bits N: sonuç negativ ise bitin değeri 1(set) olur, Değilse bir 0 olur
Z: sonuç sıfırsa bit 1(set) olur, değilse bit 0 değeri alır
C: MSB nin 15. biti C bitine taşınır.
V: aritmatik işlemler sonucunda taşma olduğunda bu bitin değeri 1 olur. Değilse bitin değeri 0 dır.
************************************************************************
SBC Hedef dan ödünç çıkarma (¬ taşıma)
Söz Dizimi : SBC{.W or .B} dst
Operation dst + 0FFFFh + C −> dst
Benzer : : SUBC{.W or .B} #0,dst
Açıklama : carry biti (C) Hedefe Eklenir ve hedefin içeriği bir eksiltirli. Hedef önceki içeriği kaybolur .
Status Bits N: sonuç negativ ise bitin değeri 1(set) olur, Değilse bir 0 olur
Z: sonuç sıfırsa bit 1(set) olur, değilse bit 0 değeri alır
C: aritmatik veya mantıksal işlemler sonucunda taşma varsa bu bitin değeri 1 olur değilse bitin değeri 0 olur
Set to 1 if no borrow, reset if borrow.
V: aritmatik işlemler sonucunda taşma olduğunda bu bitin değeri 1 olur. Değilse bitin değeri 0 dır.
Örnek : SUB @R13,0(R12) ; LSD bitinden çıkar.
SBC 2(R12) ; MSD den C Cerry bitini çıkar.
************************************************************************
SETC carry bitini set(1) eder
Söz Dizimi : SETC
Operation 1 −> C
Benzer : : BIS #1,SR
Açıklama : SR Regestirisinin C Cerry bitini set (1) eder.
Status Bits N: Etkilenmez
Z: Etkilenmez
C: Set
V: Etkilenmez
Örnek : SETC ; set carry = 1
************************************************************************
SETN negative biti set olur.
Söz Dizimi : SETN
Operation 1 −> N
Benzer : : BIS #4,SR
Açıklama : SR Regestirisinin N Negativ bitini set (1) eder.
Status Bits N: Set
Z: Etkilenmez
C: Etkilenmez
V: Etkilenmez
Örnek : SETN
************************************************************************
SETZ Status Regestirisinin Z(zero) bitini set (1) eder.
Söz Dizimi : SETZ
Operation 1 −> Z
Benzer : : BIS #2,SR
Açıklama : Status Regestirisinin Z(zero) bitini set (1) eder.
Status Bits N: Etkilenmez
Z: Set edilir (1 yapılır)
C: Etkilenmez
V: Etkilenmez
Örnek : SETZ
************************************************************************
TST Hedefi Test eder (Word veya Bit)
Söz Dizimi : TST{.W or .B} dst
Operation dst + 0FFFFh + 1
Benzer : : CMP{.W or .B} #0,dst
Açıklama : Hedef operand sıfır ile karşılaştırılır.Durum bitleri sonuca göre ayarlanır.Hedef etkilemez.
Status Bits N: biti 1(set) ise sayı negative, değil ise bit 0 olur
Z: biti 1(set) ise sayı 0 a eşit, bit 0ise eşit değil
C: Set
V: Reset
Örnek : TST R7 ; Test R7
************************************************************************
RETI Kesmeden(interrupt) geri döner.
Syntax RETI
Operation TOS → SR; SP + 2 → SP
TOS → PC; SP + 2 → SP
Açıklama :Kesme oluştuğunda Pc program sayıcısındaki değer SP stak pointerın sıradaki adresine yerleşir. Kesme prosödürü bittiğinde (Reti komutu) SP stak pointer adresinin en üst adresindeki bilgi PC geri yüklenir. Reti komutundan sonar kesmenin oluştuğu andaki adres bilgisinin bir altındaki adresten komutlar işlemeye devam eder.
Status Bits N, Z, C, V: restored from system stack
Mode Bits OSCOFF, CPUOFF, and GIE are restored from system stack.
RET alt yordamdan geri döner.
Söz Dizimi : RET
Operation @SP→ PC
SP + 2 → SP
Benzer : : MOV @SP+,PC
Açıklama : bu komut call komutundan sonar kullanılır. Call komutu bir alt programığı çağırır ve programcık işin bitirdiğinde (ret komutuyla karşılaştığında) call komutunun bulunduğu satırın bir altındaki satırdan çalışmaya devam eder.
Status Bits Etkilenmez.
*************************************************************************
ÖRNEK UGULAMA 1http://www.mcu-turkey.com/?p=16362 (http://www.mcu-turkey.com/?p=16362)
MSP430′u ASM ile Programlama Uyg.1(Buton ile led kontrolü)MERHABA ARKADAŞLAR
Bu gün sizlerle asm kodlarıyla MSP430 LaunhPad nasıl programlanıcağından bahsedicem. İlk uygulamamız p1 portunun 3. pinine bağlı buton yardımıyla LaunhPad üzernideki kırmızı ve yeşil ledleri sırayla yakıp söndüren(flip-flop) örnek asm uygulaması yapacağız.
Kodları açıklamaya başlamadan önce yeni proje dosyası nasıl oluşturulucağına dair kısa bilgi verim.
IAR Yeni Proje Oluşturmakhttp://www.dailymotion.com/video/xkjzn7_yeni-proje-oluyturmak_tech?start=6#from=embed (http://www.dailymotion.com/video/xkjzn7_yeni-proje-oluyturmak_tech?start=6#from=embed)
#include "msp430g2231.h" ; #kullanıcamız entegreyi tanımlıyoruz
NAME Mainloop ; module name
PUBLIC Mainloop ; make the main label vissible
; outside this module
ORG 0FFFEh
DC16 init ; set reset vector to 'init' label
RSEG CSTACK ; pre-declaration of segment
RSEG CODE ; place program in 'CODE' segment
init: MOV #SFE(CSTACK), SP ; set up stack
mov.w #WDTPW+WDTHOLD,&WDTCTL ; watchdog timer iptal
mov.b #01000001b,P1DIR ; P1 portunun 0 ve 6 bitleri çıkış gerisi giriş olarak ayarlandı
mov.b #00000001b,P1OUT ;P1.0 bitini set et
Mainloop bit.b #00001000b,&P1IN ; P1.3 P1 portunun 3. bitini değerini kontrol eder
jc Mainloop ;status reg. C biti değeri 1 ise etikete dallanırburda bu biti pinin surumunu kontrol etmek için kullanılmıştır.
;***************Bit terseleme prosödürü*************************
;P1 portuna bağlı ledleri her butona bastığınızda sırayla yakıp söndüren kod
bit_tersle bit.b #00001000b,&P1IN ; P1.3 pinin değerini kontrol eder
jnc bit_tersle ; jc komutuna benzer ama C biti 0 ise etikete dallanır (buton ark'ını önlemek için oluşturuldu)
mov.w #01000001b,r15 ; sabit değeri R15 regestirisine yükler
xor.b R15,&P1OUT ; R15 regestiriisinin içeriğini xor işlemine tabi tutAR ve P1 portuna yazdırır(P1 için değerlerini tersler)
jmp Mainloop
END
Kodun Yüklenmesihttp://www.dailymotion.com/video/xkjzo7_projenin-yuklenmesi_tech?start=0#from=embed (http://www.dailymotion.com/video/xkjzo7_projenin-yuklenmesi_tech?start=0#from=embed)
Kodun Denenmesihttp://www.dailymotion.com/video/xkjzkk_projenin-yuklenmesi-ve-deneme-new_tech#from=embed (http://www.dailymotion.com/video/xkjzkk_projenin-yuklenmesi-ve-deneme-new_tech#from=embed)
Teşekkürler Müjdat bu paylaşımın için. Ben uzun bir süre yoktum mesajını şimdi görüyorum kusura bakma... Eğer yardıma ihtiyacın olursa ilgilenmeye çalışırım... Başarılar dilerim...
rica ederim. aslına bakarsanız elinizde örnek teşkil edebilecek uygulamalar varsa paylaşırsanız sevinirim asm konusunda bir kaynak oluşturmaya çalışıyorum katkılarınız bekliyorum.
Merhaba şu anlık sadece Teşekkür etmek için üye oldum bu konu hakkında sizin kadar iyi açıklama yapan hiçbir kişi olmamış tekrar Teşekkürler :)
paylaşımlarınız için çok teşekkürler uzun bir süredir başlık altına birşeyler yazılmamış ama msp430 ile yapmam gereken bir proje var.Konulan linkler çalışmıyor.Son konulan linkleri veya başka bir eğtim linki koyabilirmisiniz? Böyle bir çalışma yaptığınız için çok teşekkürler