Mikroişlemciler ve Assembly Dili
R – Register
A, B, C, D, E, H, L bunlar register (kaydedici) kümeleridir. Her biri 1 Byte’lık veri tutar. (1 byte = 8 bit)
Akümülator A registerıdır. Matematiksel ve mantıksal işlemler A registerında yapılır.
BAYRAKLAR
Zero (Sıfır) Bayrağı: Sonuç sıfır olduğunda zero bayrağı 1 değerini alır. Aksi takdirde 0 değerini alır.
Carry (Elde) Bayrağı: Yapılan bir aritmetiksel işlemde elde olursa carry bayrağı 1 değerini alır.
Sign (İşaret) Bayrağı: Sonucun son (0,1,…7) 7. biti (en soldaki) 1 olursa işaret bayrağı 1 değerini alır. Aksi durumda 0 değerini alır.
KOMUTLAR
MOV Komutu
Bir registerdaki veriyi diğer registera yükler.
MOV A, B
B registerındaki veriyi A registerına yükler.
MVI Komutu
Bir registera girilen veriyi aktarır.
MVI R, 8-bit
MVI B, 1AH
1A verisini B registerına yükler.
IN Komutu
Giriş aygıtındaki veriyi okur ve A registerına yazar.
IN 8-bit (Port adresi)
OUT Komutu
A registerındaki veriyi çıkış portuna gönderir.
OUT 8-bit (Port adresi)
HLT Komutu
Programı sonlandırmak için kullanılır.
ADD Komutu
Belirtilen registerla A registerını toplar. Sonucu A registerına yazar.
ADD R
ADD B //A = A + B
B registerındaki veriyi ve A registerındaki veriyi toplar. Sonucu A registerına yazar.
ADI Komutu
8-bitlik bir veriyle A registerındaki veriyi toplar ve sonucu A registerına yazar.
ADI 8-bit
ADI 40H
SUB Komutu
A registerından başka bir registerı çıkartır. Sonucu A registerına atar.
SUB R
SUB D //A = A – D
SUI Komutu
A registerından 8-bitlik bir sayıyı çıkartır. Sonucu A registerına yazar.
SUI 8-bit
SUI 32H //A = A – 32H
INR Komutu
Belirtilen registerın içeriğini bir arttırır.
INR R
INR D
DCR Komutu
Belirtilen registerın içeriğini bir azaltır.
DCR R
DCR D
ORA Komutu
A registerı ile belirtilen registerı or (veya) kapısına sokar. Sonucu A registerına yazar.
ORA R
ORA B
ORI Komutu
A registerı ile girilen veriyi or (veya) kapısına sokar. Sonucu A registerına yazar.
ORI 8-bit
ORI 45H
ANA Komutu
A registerı ile belirtilen registerı and (ve) kapısına sokar. Sonucu A registerına yazar.
ANA R
ANA C
ANI Komutu
A registerı ile girilen veriyi and (ve) kapısına sokar. Sonucu A registerına yazar.
ANI 8-bit
ANI 76H
XRA Komutu
A registerı ile belirtilen registerı xor (özel veya) kapısına sokar. Sonucu A registerına yazar.
XRA R
XRA B
XRI Komutu
A registerı ile girilen veriyi xor (özel veya) kapısına sokar. Sonucu A registerına yazar.
XRI 8-bit
XRI 75H
Dallanma Komutları
JUMP 16-bit (adres) – Şartsız bir atlamadır. Belirtilen adrese atlar.
JUMP 2050H (veya etiket)
JC 16-bit (adres) – Carry (elde) bayrağı bir ise belirtilen adrese atlar.
JNC 16-bit (adres) – Carry (elde) bayrağı sıfır ise belirtilen adrese atlar.
JZ 16-bit (adres) – Zero (Sıfır) bayrağı bir ise belirtilen adrese atlar.
JNZ 16-bit (adres) – Zero (Sıfır) bayrağı sıfır ise belirtilen adrese atlar.
Register Çiftleri
B (B, C)
D (D, E)
H (H, L)
LXI Komutu
Belirtilen register çiftine belirtilen adresi atar.
LXI Rç, 16-bit (adres)
LXI B, 2050H
LDAX Komutu
Register çiftinde kayıtlı olan adresteki veriyi A registerına yükler.
LDAX Rç
Ramdeki 2050H adresinde FEH verisi kayıtlı olsun. B register çiftini gösterge olarak seçelim.
LXI B, 2050H
B register çiftine 2050H adresi atandı. Şimdi bu adresteki veriyi A registerına atalım.
LDAX B
B register çiftinde adres kayıtlıydı. B register çiftindeki adreste bulunan veri (FEH) A registerına atandı.
LDA Komutu
Belirtilen ramdeki adresdeki veriyi A registerına yükler.
LDA 16-bit
LDA 2050H
STAX Komutu
A registerındaki veriyi belirtilen register çiftinde bulunan ramdeki adrese yükler.
STAX Rç
D’yi gösterge olarak seçelim. 2050H adresini atayalım.
LXI D, 2050H
A daki veriyi D register çiftinde bulunan adrese atayalım.
STAX D
STA Komutu
A registerındaki veriyi belirtilen ramdeki adrese yükler.
STA 16-bit
STA 2050H
INX Komutu
Register çiftini bir arttırır.
INX Rç
DCX Komutu
Register çiftini bir azaltır.
DCX Rç
M, H (H, L) register çiftinde bulunan adresteki veriyi temsil eder.
MOV M, R
Belirtilen registerdaki veriyi, H register çiftinin temsil ettiği adrese atar.
MOV R, M
Belirtilen registera, H register çiftinin temsil ettiği adresteki veriyi atar.
RLC Komutu
A registerını bir bit sola kaydır.(8-bit)
RLC
MVI A, 50H
A daki veri 01010000
RLC
A daki veri 10100000
RAL Komutu
A registerını 1 bit sola kaydır. Carry bayrağıda dahil. (9-bit)
RAL
MVI A, 3A
A daki veri 00111010
RAL
Carry bayrağında 0 olduğunu varsayalım. Carry bayrağına sıfır atandı. A ‘ya carry bayrağı eklendi. A daki veri 01110100
RRC Komutu
A registerını bir bit sağa kaydır.(8-bit)
RRC
RAR Komutu
A registerını 1 bit sağa kaydır. Carry bayrağıda dahil. (9-bit)
RAR
Not: Carry bayrağı değişen biti tutar.
CALL Komutu
Alt programı çağırmak için kullanılır.
CALL 16-bit (adres)
RET Komutu
Alt program sonu.
RET
CMP, CPI Komutu
CMP R
CPI 8-bit
Karşılaştırma operatörüdür. A registerı ile belirtilen registerı veya 8-bitlik değeri karşılaştırır.
Eğer veriler eşitse Z=1 C=0
A registerı küçükse Z=0 C=1
A registerı büyükse Z=0 C=0
Örnekler
1. 01H nolu porttan veriyi okuyup 02H nolu porta gönderen programı yazınız.
IN 01H OUT 02H HLT
2. B registerına 4FH yükleyen ve 01H adresindeki porta gönderen programı yazınız.
MVI B, 4FH MOV A, B OUT 01H HLT
3. B registerına 32H, C registerına ise 1A değerini giren ve bunları toplayıp 01H nolu çıkış portuna gönderen programı yazınız.
MVI B, 32H MVI C, 1AH MOV A, B ADD C OUT 01H HLT
4. 2050H adresindeki veriyi alıp 25H dan çıkaran ve 2051H adresine kaydeden programı yazınız.
LDA 2050H SUI 25H STA 2051H HLT
5.C registerına 6FH, D registerına 4CH yazan; C registerını bir azaltan, D registerını bir artıran sonra C ve D registerını toplayan; 2050H adresine yazan programı yazınız.
MVI C, 6FH MVI D, 4CH DCR C INR D MOV A, C ADD D STA 2050H HLT
6. D ve C registerlarına 9BH ve A7H sayılarını yükleyin. Daha sonra bu sayıları toplatın. Eğer toplam FFH tan büyükse PORT0 çıkışına 01H bilgisini yazdırın. Büyük değilse, toplamı görüntüleyin.
MVI D, 9BH MVI C, A7H MOV A, D ADD C JNC atla MVI A, 01H atla: OUT PORT0 HLT
7. xx50H adresinden başlayarak 16 veriyi, xx70H adresinden itibaren kopyalayan programı yazınız.
MVI D, 10H LXI H, xx50H LXI B, xx70H atla:MOV A, M STAX B INX H INX B DCR D JNZ atla HLT
Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.