VERİ İŞLEME KOMUTLARI
Veri işleme komutları iki bölüme ayrılır: Aritmetik ve lojik komutlardır. Bu komutlar bayrakları etkiler. Aşağıda bu komutlar örneklerle anlatılmaktadır.
Aritmetik Komutlar Tablosu
Aşağıdaki tabloda 8051 ailesinin aritmetik komutlarını özetlemektedir. Bu tablodaki bir çok komut, Saklayıcı-Özel adresleme modunu kullanmaktadır.
Gösterim İşlem Adresleme Modları
Dir Ind Reg Imm
ADD A,<byte> A=A+<byte> X X X X
ADDC A,<byte> A=A+<byte>+C X X X X
SUBB A,<byte> A=A-<byte>-C X X X X
INC A A=A+1 Sak.Özel(Sadece ACC)
INC <byte> <byte>=<byte>+1 X X X
INC DPTR DPTR=DPTR+1 Sak.Özel(Sadece DPTR)
DEC A A=A-1 Sak.Özel(Sadece ACC)
DEC <byte> <byte>=<byte>-1 X X X
MUL AB B:A=B*A Sak.Özel(Sadece ACC ve B)
DIV AB A=Int (A/B)
B=Mod(A/B) Sak.Özel(Sadece ACC ve B)
DA A Ondalık Ayar Sak.Özel(Sadece ACC)
Toplama ve Çıkarma Komutları
İki tane toplama komutu vardır. ADD ve ADDC (C-elde ile topla). Her iki komut 2 byte değişkenin toplama işlemini gerçekleştirmektedir. Birinci operand her zaman ACC'dedir. İkinci operand, doğrudan, dolaylı, saklayıcı veya ivedi adresleme modları ile belirtilir. Bir ADD ve ADDC işlemlerinden sonra, bayraklardan üçü (C,AC ve OV) sonuca göre 1'lenir
Veya 0'lanır.
ADDC komutu, C bayrağının sonuna eklenmesi farkının dışında, ADD komutu gibidir. ADDC komutu, özellikle uzun tamsayı toplamalarında kullanılır.
Yukarıdaki tabloda ve aşağıda verilen program örneğinde, iki 16-bit X ve Y tamsayılarının toplama işleminde (X=X+Y), ADD ve ADDC komutlarının kullanımı gösterilmektedir. Her iki sayı, 8-bit düşük (XL ve YL) ve yüksek değeri (XH ve YH) byte'lar olarak işleme alınmaktadır.
C
ADDC ADD
X
Y
+
İki 16- Bitlik X ve Y tamsayılarının toplama işlemi (X=X+Y).
Bu byte’ların saklayıcılarda aşağıda verildiği gibi saklandığını düşünelim.
--------------------------------------------
Byte Saklayıcı
--------------------------------------------
XL 78H
XH 79H
YL 7AH
YH 7BH
--------------------------------------------
X=1234h ve Y=12EFh tamsayılarını bu hafıza hücrelerine yükleyen program parçası:
MOV 78h, 34h ; XL
MOV 79h, 12h ; XH
MOV 7Ah, 0Efh ; YL
MOV 7Bh, 12h ; YH
XL=XL+YL Toplamını gerçekleştiren program kodu:
MOV A, 78h ; A=XL
ADD A, 7Ah ; A=XL+YL
MOV 78H, A ; XL=A
Yapılan işlemin bu noktasında , 78h adresli hücre 23h değerini içermektedir ve C bayrağı 1’lenmiştir. Şimdi XH=XH+YH+C işlemini gerçekleştiren program parçasına bakalım:
MOV A, 79h ; A=XH
ADDC A, 7BH ; A=XH+YH+C
MOV 79H, A ; XH=A
Bu programın çalıştırılması sonucu,dahili saklayıcı hücreleri 78h ve 79h’ta 2523h değeri doğru olarak saklanır.
Çıkarma işlemi SUBB de ,ACC’yi ilk operand olarak kullanılır.Doğrudan, dolaylı,saklayıcı veya ivedi adresleme modları ile belirtilen ikinci operand, ACC’den çıkartılır ve sonuç yine ACC’ye yerleştirilir.
C bayrağı,uzun tamsayı çıkarma işlemlerinde, toplama işlemine benzer şekilde kullanılır. Çıkarma işlemi,bir ödünç almaya ihtiyaç duyar ise, C bayrağı 1’lenir.
Eğer bir çıkarma işleminden önce, C 1’lenmiş ise,yapılan çıkarma sonucunda bir eksiltilir. Bu sayede, birden fazla byte uzunluğunda olan tamsayıların çıkarma işlemi, en düşük değerli byte’lardan başlayıp yüksek değerli byte’lara doğru, peş peşe byte çıkartma işlemi şeklinde yapılır. Bu durumda , ilk çıkarma işleminden önce C bayrağının sıfırlanması gerekmektedir.
Aşağıda verilen program örneği, iki 16-bit X ve Y tamsayılarının çıkarma işlemini (X=X-Y) göstermektedir. Her iki sayı , 8-bit düşük(XL ve YL) ve yüksek değerlikli (XH ve YH) byte’lar olarak işleme alınmaktadır. |