Tekil Mesaj gösterimi
Alt 06-09-2008, 15:16   #14
Constantin
ยŦยк
 
Constantin - ait Kullanıcı Resmi (Avatar)
 

DIV AB

Komutu ACC'deki 8-bit işaretsiz tamsayıyı B saklayıcısındaki 8-bitlik işaretsiz tamsayıya böler.Sonucun tamsayı kısmı ACC'de,kalan kısmı ise B saklayıcısında tutulur.C bayrağı herzaman temizlenir.Taşma bayrağı 0V, sıfıra bölme durumunu belirtir.Eğer B saklayıcısında bu komuttan önce sıfır bulunursa,sonuç belirsiz olur ve taşma bayrağı 0V 1'lenir.

Ondalık ayarlama(decimal adjust ) Komutu

DA komutu,ikili kodlanmış ondalık (BCD-binary coded decimal) sayılrın toplama işleminden sonra kullanılır.Bir BCD sayının her 4-bit'i (nibble) bir ondalık sayıyı belirtir.Yani,her bir 4-bit'in değeri 0(0000)ile 9(1001) sayıları arasında olabilir.DA komutu ile yapılan işle,ACC ve PSW içeriklerine göre,ACC'ye 0,6,60h veya 66h ekleme işlemi olarak görülebilir.Aşağıdaki örneklerde ,DA komutunun bu özelliği gösterilmektedir.






MOV A,#12h :A=12h (BCD)
MOV B, #29h :B=29h (BCD)
ADD A,B :12h + 29h =3Bh, BCD değil!
DA A http://www.supermp3.org/images/smili...face.gifndalık ayarlama ,burada sonuca 6 eklenir,
:3Bh + 6 = 41h doğru BCD sonuç(12 +29) bulunur.




MOV A,#55h :A=55h (BCD)
MOV B, #66h :B=66h (BCD)
ADD A,B :55h + 66h =BBh, BCD değil!
DA A http://www.supermp3.org/images/smili...face.gifndalık ayarlama ,burada sonuca 66 eklenir,
:BBh + 66 = 121h
:doğru BCD sonuç(55 +66) bulunur.
:ACC,21h (BCD) içermektedir ve
:C bayrağıda 1'lenmiştir.




Gösterim İşlem Adresleme Modları
Dir Ind Reg Imm
ANL A<byte> A=A AND <byte> X X X X
ANL<byte>,A <byte>=<byte> And A X
ANL<byte>,#data <byte>=<byte> And #data X
ORL A,<byte> A=A OR <byte> X X X X
ORL <byte>,A <byte>=<byte> OR A X
ORL <byte>,#data <byte>=<byte> OR #data X
XRL A,<byte> A=A XOR <byte> X X X X
XRL <byte>,A <byte>=<byte> XOR A X
XRL <byte> #data <byte>=<byte> XOR A #data X
CRL A A=00H Sak.özel(ACC)
CPL A A=NOT A Sak.özel(ACC)
RL A ACC’yi bir-bit sola döndür Sak.özel(ACC)
RLC A Sola CY üzerinden döndür Sak.özel(ACC)
RR A ACC’yi bir-bit sağa döndür Sak.özel(ACC)
RRC A Sağa CY üzerinden döndür Sak.özel(ACC)
SWAP A ACC’deki iki 4-bit’i değiştir Sak.özel(ACC)
AND,OR VE XOR Komutları

AND,OR VE XOR Komutlarının hepsi aynı adresleme modunu kullanır.Byte-tabanlı lojik işlemlerinde ,8-bit operand'ların karşılıklı bit'leri üzerinde işlem gerçekleştirilir.Operand'lardan biri,çoğu zaman ,ACC'dir ve aynı zamanda,ACC sonucunsaklandığı hedef saklayıcıdır.İşlem sonucunda hiçbir bayrak etkilemez.


AND ve OR komutları,bir kontrol saklayıcısındaki belirli bitlerin maskelenmesinde (masking) faydalıdırlar.Örneğin PSW'deki diğer bitleri etkilemedensaklayıcı kümesi 3'ün seçilmesini düşünelim.aşağıdaki komutlar PSW'nin 3 ve 4'üncü bitlerinin 1'lenmesini sağlar.

MOV A,#18h :bit 3 ve 4 (00011000b) 1'lenir
ORL PSW,A :saklayıcı kümesi 3 seçilir.

Şimdide saklayıcı kümesi 0 ın seçilmesini sağlayalım.Bu kez,bit 3 ve 4 sıfırlanır.

MOV A,#0E7h :Bit 3ve 4 (11100111b) 0'lanır.
ANL PSW,A :Saklayıcı kümesi 0 seçilir.

Temizle (clear)ve tersle(complement)komutları

Bu komutlar ACC üzerinde işlem yapan saklayıcı-özel komutlardır. CLR A komutu,ACC'nin bütün bitlerini temizler.CPL A komutu ise,ACC'nin her bir bit'inintersini alır.

Döndürme(rotate)komutları

Bu komutlar ACC üzerinde işlem yapan saklayıcı-özel komutlardır.Şekil 6.6'da görülen 4 tane döndürme komutu vardır.Bu komutlar ACC'deki 8-bit sayı veya ACC ve C bayrağındaki 9-bit sayı,sağa veya sola birer bit döndürülür.
Döndürme komutları,maskeleme byte'ları oluşturmada 22nin katları ile çarpma veya bölme işlemlerinde kullanılır.Bit 0'ın sıfır olması sağlanarak ,ACC'yi bir bit sola kaydırma işlemi,ACC'yi 2 ile çarpma işlemine eşittir.Benzeri şekilde peş peşe iki kere sola kaydırma ,ACC'yi 4 ile çapma demektir.Sağa döndürme ise ,2 ile bölme işlemine eşit olur.ikinin katları ile çarpma ve bölme işlemlerinde,MUL ve DIV komutları yerine ,döndürme komutlarının kullanılması işlem hızı açısından önemli kazanç sağlar.



A7 A0
RL

A7 A0
RLC

A7 A0

RR
A7 A0

RRC

Döndürme Komutlarının gösterimi

Karşılıklı Değiştirme (Swap) Komutu

Karşılıklı değiştirme komutu

SWAP A
ACC’ nin 4-bit içeriğinin yerlerini değiştirir. Bu komutla yapılan işlem ACC’ yi 4 kez (her iki yönden birinde) döndürme işlemi olarak ta görülebilir.

Bit-Tabanlı Lojik Komutlar

8051 ailesinin ürünleri, yoğun bit-tabanlı özelliklere sahiptir. Daha önceki bölümlerde bu özelliklerin bir kısmı anlatılmıştı. Tablo 6.6 bit-tabanlı komutların bir özetini vermektedir.


Gösterim işlem
ANL C, bit C bayrağını adreslenen bit ile AND’le
ANL C, /bit C bayrağını adreslenen bitin tersi ile AND’le
ORL C, /bit C bayrağını adreslenen bit ile OR’la
ORL C, /bit C bayrağını adreslenen bitin tersi ile OR’la
CLR C C bayrağını temizle
CLR bit Adreslenen bit’i temizle
CPL C C bayrağını tersle (Complement)
CPL bit Adreslenen bit’i tersle (Complement)
SETB C C bayrağını l’le
SETB bit Adreslenen bit’i l’le


Bit-tabanlı işlemlerde elde bayrağı C, l-bit ACC olarak kullanılır. Örneğin, Tablo 6.6’ dan görüldüğü gibi, birçok bit-tabanlı lojik işlemlerde, C bayrağı, operand’ lardan biri ve sonuç için, hedef l-bit saklayıcı olarak kullanılır.

Bit-tabanlı lojik işlemlerde, kaynak bit’in tersi kullanılmak istenmiyorsa, ‘/’ sembolü kaynak bit’in önüne konur. Bu sembol, kaynat bit’in gerçek değerinin değişmesine neden olmayıp sadece, yapılan işleme, değerinin tersini alınarak girmesine neden olur.

6.5.3 Program Akışı Kontrol Komutları

Dallanma komutları, mikro denetleyicinin yürütme sırasında farklı işlemler yapmasını yönlendiren komutlardır. Örneğin, bir tuşun durumuna veya bir kontrol sinyaline göre, bir motorun durdurulmasını veya çalıştırılmasının devamına karar verme gibi.

Bir dallanma komutu ile, PC’nin içeriği değişip program akışı da değişir. Her komut okuma çevriminde, PC, bir sonraki komuta işaret edecek şekilde yenilenmektedir. Normalde bir sonra yürütülecek komut, hafızada o anki komuttan sonra gelen komut olmaktadır. PC’ nin değişmesi durumunda ise, PC’ deki adresten itibaren program akışı devam eder. Yani hafızada başka bir program alanına dallanma gerçekleştirilmiş olur.

Dallanma komutları, JMP (jump), CALL ve RET (RETurn) komutlarıdır. Bir JMP komutu sadece PC’yi değiştirmektedir. Dallanma komutları, Durumdan Bağımsız (unconditional) ve Duruma Bağımlı (conditional) olmak üzere ikiye ayrılır. 8051 ailesinin mikro denetleyicileri, 3 tane durumdan bağımsız dallanma komutuna sahiptir: SJMP, AJMP ve LJMP.
Durumdan Bağımsız Dallanma Komutları

Aşağıdaki Tablo 3.7’de Durumdan Bağımsız Dallanma komutlarının bir özeti verilmektedir. Bu komutların her biri ile gerçekleşen program akışındaki dallanma, PC içeriğinin değişmesiyle olur. Tabloda verilen ilk 3 dallanma komutu birbirine benzemektedir. Verilen en son indisli dallanma komutu ise, ACC ile DPTR’ ın içeriklerini toplayıp bir sonra okunacak ve yürütülecek komutun adresini hesaplayan güçlü bir komuttur.


Gösterim Açıklama
SJMP <rel add> (Short Jump- Kısa Dallanma) Operand, 2-nin
tümleyeni tek bir byte olup değeri PC’ ya ekle-
nir. Bir sonraki komut, 127 byte ileri veya 128
byte gerideki bir komut olacaktır.
AJMP<Address ll> (Absolute Jump-Mutlak Dallanma) Operand,
ll-bit bir adres olup Program Hafızanın o anki
2 Kbyte’lık alanı içine karşı gelir.
LJMP<Address 16> (Long jump-Uzun Dallanma) Operand, l6-bit
bir adres olup Program Hafızasının 64 Kbyte’lık
alanı içinde bir yere karşı gelir.
LJMP A+DPTR
**eksik**var (Long jump-Uzun Dallanma) Yürütülecek bir
sonraki komutun adresi, ACC ile DPTR’ ın
toplamıdır.
Constantin Ofline   Alıntı ile Cevapla