8051 INSTRUCTION ( KOMUT ) SET

8051 serisi
Cevapla
quaint
Genel Yetkili Adayı
Mesajlar: 188
Kayıt: 11 Tem 2009 19:46
İletişim:

8051 INSTRUCTION ( KOMUT ) SET

Mesaj gönderen quaint »

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 )

“mcs51(8051)” sayfasına dön