8051 INSTRUCTION ( KOMUT ) SET
Komutlar'ın Carry,Overflow ve Aux.Carry Flag'larına etkisi: KOMUT FLAG C OV AC ADD X X X C :Carry, Elde ADDC X X X OV :Overflow, Taşıma SUBB X X X AC :Auxiliary Carry, Yardımcı Elde MUL 0 X DIV 0 X DA X RRC X RLC X SETB C 1 CLR C 0 CPL C X ANL C,bit X ANL C,/bit X ORL C,bit X ORL C,/bit X MOV C,bit X CJNE X Komutların yazılmasında kullanılan registerler ve adresleme çeşitleri ile ilgili açıklamalar : Rn : Seçilen register banktaki R0,R1,R2,R3,R4,R5,R6,R7 Registerlerini gösterir. Direct :8 bit'lik Internal data alanlarının adreslerini( 0-127 Data Memory, 127-255 SFR adreslerini )belirtir. @Ri :R0 ve R1 registerlerini ifade eder. Internal Data Memory adreslerini indirect (dolaylı) olarak belirtir. #data16 : 16 bit'lik sabit sayıyı belirtir. addr16 : 16 bit'lik adres belirtir.LCALL va LJMP komutlarıyla kullanılır. 64 K'lık program memory adres alanında istenilen adrese sıçramayı sağlar. addr11 : 11 bit'lik adres belirtir.ACALL ve AJMP komutlarıyla kullanlır. Sıçrama komutun kullanıldığı adresten itibaren en fazla 2K'lık bir alana sıçrama yapabilir. rel : + ve - olarak (-128 den +127 )8 bitlik bağıl adreslemeyi belirtir. SJMP ve diğer şartlı sıçrama komutlary ile kullanılır. bit :Internal Data Memory'daki veya SFR lerdeki direk adreslenebilen bit adresini belirler. KOMUTLAR TANIMI : ARITMETIK KOMUTLAR ADD A,Rn ACC'ye Rn'yi ekle ADD A,direct ACC'ye memory'i direk ekle ADD A,@Rl ACC'ye dolaylı belirtilen memory'i ekle ADD A,#data ACC'ye direk sabit ekle ADDC A,Rn ACC'ye Rn'yi carry(elde) ile birlikte ekle ADDC A,direct ACC'ye memory'i elde ile birlikte ekle ADDC A@Ri ACC'ye dolaylı belirtilen memory'i elde ile birlikte ekle ADDC A,#data ACC'ye direk sabiti elde ile birlikte ekle SUBB A,Rn ACC'den Rn'yi eldeli çıkar SUBB A,direct ACC'den memory'i eldeli çıkar SUBB A, @Ri ACC'den dolaylı belirtilen memory'i eldeli çıkar SUBB A,#data ACC'den direk sabit'i eldeli çıkar INC A ACC 'yi 1 artırır INC Rn Registeri 1 artır INC direct Memory'i 1 artır INC @Ri Dolaylı belirtilen memory'i 1 artır DEC A ACC'yi 1 azalt DEC Rn Registeri 1 azalt DEC direct Memory'i bir azalt DEC @Ri Dolaylı belirtilem memory'i 1 azalt INC DPTR Data Pointer'i 1 artır MULL AB ACC ve B'yi çarp DIV AB ACC'yi B'ye böl DA A ACC'yi decimal ayarla LOGICAL KOMUTLAR : ANL A,Rn Registeri ACC'ye AND'le ANL A,direct Memory'i ACC'ye AND'le ANL A, @Ri Dolaylı belirtilen memory'i ACC ye AND'le ANL A, #data Sabit sayyyy ACC ye AND'le ANL direct,A ACC'yi Memory'e AND'le ANL direct,#data Sabit sayıyı memory'e AND'le ORL Arn Registeri ACC'ye OR'la ORL A,direct Memory'i ACC'ye OR'la ORL A,@Ri Dolaylı belirtilen memory'i ACC'ye OR'la ORL A,#data Sabit sayıyı ACC'ye OR'la ORL direct,A ACC'yi Memory'e OR'la ORL direct,#data Sabit sayıyı Memory'e OR'la XRL A,Rn Registeri ACC'ye XOR'la XRL A,direct Memory'i ACC'ye XOR'la XRL A,@Ri Dolaylı belirtilen memory'i ACC'ye XOR'la XRL A,#data Sabit sayıyı ACC'ye XOR'la XRL direct,A ACC'yi Memory'e XOR'la XRL direct,#data Sabit sayıyı Memory'e XOR'la CLR A ACC'yi sıfırla CPL A ACC'nin complementini al RL A ACC'yi 1 bit sola kaydır RLC A ACC'yi 1 bit sola kaydır ( carry ile birlikte ) RR A ACC'yi 1 bit sağa kaydır RRC A ACC'yi 1 bit sağa kaydır ( carry ile birlikte ) SWAP A ACC'nin byte'larını yer değiştir DATA TRANSFER KOMUTLARI : MOV A,Rn Rn'yi ACC'ye taşı MOV A,direct Memory'i ACC'ye taşı MOV A,@Ri Dolayly belirtilen memory'i ACC'ye ta?y MOV A#data Sabit sayıyı ACC'ye taşı MOV Rn,A ACC'yi Rn'ye taşı MOV Rn,direct Memory'i Rn'ye yükle MOV Rn,#data Sabit sayıyı Rn'ye taşı MOV direct,A ACC'yi memory'e taşı MOV direct,Rn Rn'yi memory'e taşı MOV direct,direct Memory'i memory'e taşı MOV direct,#data Sabit sayıyı memory'e taşı MOV @Ri,A ACC'yi dolaylı belirtilen memory'e taşı MOV @Ri,direct Direk belirtilen memory'i dolaylı belirtilen memory'e taşı MOV @Ri,#data Sabit sayyyy dolaylı belirtilen memory'e taşı MOV DPRT,#data16 16 bit'lik sabit sayıyı DPRT'ye taşı MOVC A,@A+DPRT (DPRT+A)'nın belirtildiğii adresteki dosyayı ACC'ye taşı MOVC A,@A+PC PC+A'nyn belirttiği adresteki datayı ACC'ye taşı MOVX A,@Ri Ri'nin belirttiği 8 bit'lik harici memory'deki değeri ACC'ye taşı MOVX A,@DPRT DPRT'nin belirttiği 16 bit'lik harici memory'deki değeri ACC'ye taşı MOVX @Ri,A ACC'ye Ri'nin belirttiği 8 bitlik harici memory'e taşı MOVX @DPTR,A ACC'yi DPRT'nin belirttiği 16 bit'lik harici memory'e taşı PUSH direct Memory'deki değeri stack'a yükle POP direct SP'nin gösterdiği adres değerinden memory'e yükle XCH A,Rn Register ile ACC'yi değiştir. XCH A,direct Memory ile ACC'yi değiştir XCH A,@Ri Dolaylı gösterilen memory ile ACC'yi değiştir XCD A,@Ri Dolaylı gösterilen memory'nin düşük byte'nı ACC ile değiştir BOOLEAN DEĞİŞKENLERİ İŞLEMLERi : CLR C Carry'i sıfırla CLR bit Bit'i sıfırla SETB C Carry'i 1 yap SETB bit Bit'i 1 yap CPL C C'nin değilini (complementini al ) CPL bit Bit'in değilini al ANL C,bit Bit'i Carry'e AND le ANL C,/bit Bit'in değilini carry'e AND le ORL C,bit Bit'i Carry'e OR la ORL C,/bit Bit'in değilini carry'e OR la MOV C,bit Bit'i carry'e taşı MOV bit,C Carry'i bit'e taşı JC rel Eğer carry=1 ise rel adresine sıçra JNC rel Eğer carry=0 ise rel adresine sıçra JB bit,rel Eğer bit=0 ise rel adresine sıçra JBC bit,rel Eğer bit=1 ise rel adresine sıçra ve bit'i sıfırla PROGRAM SIÇRAMALARI ACALL addr11 Subroutin'i (alt rutin) çağır.(2 k'lık adres sahası içersinde ) LCALL addr16 Subroutin'i çağır(64k'lık adres sahası içinde) RET Subrroutin'den dön RET1 Interrupt'dan dön AJMP addr11 addr11 adresine sıçra(2k'lık adres sahası içinde) LJMP addr16 addr16 adresine syçra(64klık adres sahası içinde) SJMP rel rel adresine sıçra JMP @A+DPTR DPTR+A'nın gösterdiği adrese sıçra JZ rel ACC=0 ise rel adresine sıçra JNZ rel ACC=0 değilse rel adresine sıçra CJNE A,direct,rel ACC ve memory'i karşılaştırır.Eğer eşit değilse rel adresine sıçra CJNE A,#data,rel ACC ve sabit sayıyı karşılaştırır.Eğer eşit değilse rel adresine sıçra CJNE Rn,#data,rel Register ile sabit sayı karşılaştırılır.Eğer eşit değillerse rel adresine sıçra CJNE @Ri,#data,rel Dolayly gösterilen memory ile sabit sayıyı karşılaştırılır.Eğer eşit de?illerse rel adresine sıçra DJNZ Rn,rel Register'i 1 azalt,eğer sıfır olmazsa rel adresine sıçra DJNZ direct,rel Memory'i 1 azalt eğer sıfır olmazsa rel adresine sıçra NOP işlem yapma ( no operation )
|