LD

Retrojen Wiki sitesinden
22.35, 22 Ağustos 2014 tarihinde Admin (mesaj | katkılar) tarafından oluşturulmuş 9 numaralı sürüm (Yeni sayfa: "kategori:Z80 İşlemci Komutları kategori:Veri Transferi Komutları == Komut detayları == {| class="wikitable" |- ! Komut ! Süre (ts) ! Açıklama ! Bayrak Etkis...")
(fark) ← Önceki sürüm | Güncel sürüm (fark) | Sonraki sürüm → (fark)
Gezinti kısmına atla Arama kısmına atla


Komut detayları

Komut Süre (ts) Açıklama Bayrak Etkisi Yapılan İş
LD A,(BC) 7 (BC) adresindeki değeri akümülatöre yükle. ------ hedef=kaynak
LD A,(DE) 7 (DE) adresindeki değeri akümülatöre yükle. ------ hedef=kaynak
LD A,I 9 I (kesme vektörü yazmacı) değerini akümülatöre yükle. **0*0- A=i -> (i=I,R)
LD A,(nn) 13 nn adresindeki değeri akümülatöre yükle.. -------- hedef=kaynak
LD A,R 9 R (bellek tazeleme yazmacı) değerini akümülatöre yükle. **0*0- A=i -> (i=I,R)
LD (BC),A 7 Akümülatördeki değeri (BC)'ye yükle -------- hedef=kaynak
LD (DE),A 7 Şu adrese: (DE) , akümülatördeki değeri yükle.
LD (HL),n 10 Şu adrese: (HL) , n değerini yükle
LD (IX+d),n 19 Şu adrese: (IX+d) , n değerini yükle
LD (IY+d),n 19 Şu adrese: (IY+d) , n değerini yükle
LD (nn),A 13 Şu adrese: (nn) , akümülatördeki değeri yükle.
LD (nn),BC 20 Şu adrese: (nn) , BC yazmaç çiftini yükle..
LD (nn),DE 20 Şu adrese: (nn) , DE yazmaç çiftini yükle..
LD (nn),HL 16 Şu adrese: (nn), HL'yi yükle.
LD (nn),SP 20 Şu adrese: (nn) , SP yazmaç çiftini yükle.
LD (nn),IX 20 Şu adrese: (nn), IX değerini yükle.
LD (nn),IY 20 Şu adrese: (nn), IY değerini yükle.
LD BC,nn 10 Şu yazmaç çiftine: BC, nn değerini yükle..
LD DE,nn 10 Şu yazmaç çiftine: DE, nn değerini yükle..
LD HL,nn 10 Şu yazmaç çiftine: HL, nn değerini yükle..
LD SP,nn 10 Şu yazmaç çiftine: SP, nn değerini yükle..
LD BC,(nn) 20 Şu yazmaç çiftine: BC, (nn) adresindeki içeriği yükle..
LD DE,(nn) 20 Şu yazmaç çiftine: DE, (nn) adresindeki içeriği yükle..
LD HL,(nn) 16 HL yazmacına, (nn) adresindeki içeriği yükle.. (Önce L)
LD SP,(nn) 20 Şu yazmaç çiftine: SP, (nn) adresindeki içeriği yükle..
LD (HL),r 7 Şu adrese: (HL), r yazmacını yükle..
LD (IX+d),r 19 Şu adrese: (IX+d), r yazmacını yükle..
LD (IY+d),r 19 Şu adrese: (IY+d), r yazmacını yükle..
LD I,A 9 Load I , akümülatördeki değeri yükle.
LD IX,nn 14 IX'e nn'yi yükle.
LD IX,(nn) 20 Load IX, (nn) adresindeki içeriği yükle..
LD IY,nn 14 IY'ye nn'yi yükle.
LD IY,(nn) 20 IY'ye, (nn) adresindeki içeriği yükle..
LD R,A 9 R'ye , akümülatördeki değeri yükle.
LD r,(HL) 7 R yazmacına şu adresteki değeri yükle: (HL).
LD r,(IX+d) 19 R yazmacına şu adresteki değeri yükle: (IX+d).
LD r,(IY+d) 19 R yazmacına şu adresteki değeri yükle: (IY+d).
LD r,n 7 R yazmacına n değerini yükle
LD r,r' 4 R yazmacına r' yazmacını yükle.
LD SP,HL 6 SP yazmacına şu yazmacı yükle: HL.
LD SP,IX 10 SP yazmacına şu yazmacı yükle: IX.
LD SP,IY 10 SP yazmacına şu yazmacı yükle: IY.

Z80 yükleme komutları

Yükleme komutları bir registere, bir register çiftine veya bir adrese sabit bir sayı, başka bir registerin içeriği veya herhangi bir adresin içeriğini yüklemek için kullanılır.

Derslerimizde daha anlaşılır olması bakımından aşağıdaki kısaltmaları kullanacağız.

Komutun biçimi LD hedef,kaynak şeklindedir.

d : mesafe, r : register, rp : register çifti, nn : bir baytlık sayı, nnnnn : iki baytlık sayı, (nnnn) : adres, (rp) : Bir register çiftinde bulunan sayının belirttiği adresin içeriği anlamına gelmektedir.

ÖRNEK : LD BC,16384 olsun, LD A,(BC) komutuyla, BC register çiftinde bulunan 16384 numaralı adresin içeriği Aküye yüklenir.

Z80'de oldukça çok adresleme modları vardır ve bunları bilmemiz gerekiyor.

HATIRLATMA : Parantez içindeki ifadeler, ilgili registerlerin kendisine değil, gösterdikleri adrese yükleme yapılacağını belirtir. ÖRNEK : LD BC,60000 ile BC registerine 60000 sayısısı yükleyelim. LD A,210 komutu ile aküye 210 sayısını yükleyelim. LD (BC),A komutu ile Aküdeki 210 sayısını 60000 adresine yüklemiş oluruz. Eğer hedef adres sabit ise, register çifti kullanılmadan LD (nnnn),A komutuyla ilgili adrese yükleme yapılır. Örneğimizden devam edersek LD A,210 ; LD (60000),A şeklinde kullanabiliriz. [Bu kısmı genel assembler kısmına taşıyalım]


LD r,nn

Bir registere bir baytlık sayı yüklenir.

Örnek : LD A,0 ---> A registerine (Aküye) sabit 0 sayısı yüklenir. Örnek : LD L,255 -> L registerine 255 sayısı yüklenir.

Bu adresleme modunda A,B,C,D,E,H,L registerlerine bir baytlık sabit sayı yüklenir. Bu adresleme moduna LD (HL),nn ;LD (IX+d),nn ve LD (IY+d),nn komutlarıda dahildir. Son üç komut ile ilgili registerlerin gösterdiği adrese nn sabit sayısı yüklenir.

LD rp,nnnn

Bir register çiftine 2 baytlık bir sayı yüklenir.

Örnek : LD BC,32000 ---> BC register çiftine 32000 sayısı yüklenir. Örnek : LD HL,0 -------> HL register çiftine 0 sayısı yüklenir.

Bu adresleme modunda BC,DE,HL,IX,IY ve SP registerlerine iki baytlık sabit bir sayı yüklenir. LD BC,nnnn LD DE,nnnn LD HL,nnnn LD IX,nnnn LD IY,nnnn LD SP,nnnn


LD r,r

Bir registere başka bir registerin içeriği yüklenir.

Örnek : LD D,A ----> D registerine A registerinin içeriği yüklenir. D ile A'da aynı değer bulunur. A'nın içeriği kaybolmaz.

Bu adresleme modunda A,B,C,D,E,H,L registerlerinin herhangi birinden herhangi birine yükleme yapılır. Kaynak ve hedef registerler aynı olabilir. Yani LD C,C gibi bir komut olabilir.

Ayrıca I (İnterrupt) ve R (Refresh) registerleri sadece A registeriyle birlikte kullanılır.

LD I,A LD R,A LD A,R LD A,I


LD rp,rp

Bu adresleme modunda sadece SP registerine HL, IX veya IY registerlerinden yükleme yapılabilir.

LD SP,HL LD SP,IX LD SP,IY


LD (rp),r

Bu modda ise A,B,C,D,E,H ve L registerlerinden herhangi birinin içeriği (HL), (IX+d), (IY+d) 'ye yüklenir. Bu registerlerden sadece A registeri (BC), (DE) ve (nn) ile birlikte kullanılabilir.

LD (HL),r LD (IX+d),r LD (IY+d),r

Sadece A registeri ile kullanılan LD komutları

LD (BC),A LD (DE),A LD (nnnn),A


LD r,(rp)

Bu modda bir register çiftinin gösterdiği adresin içeriği A,B,C,D,E,H,L registerlerinden birine yüklenir. (rp) ise (BC),(DE),(HL),(IX+d),(IY+d),(nnnn) olabilir. (BC),(DE) ve (nnnn) sadece A registeri ile kullanılabilir.

LD r,(HL) LD r,(IX+d) LD r,(IY+d)

Sadece A registeri ile kullanılan komutlar. LD A,(BC) LD A,(DE) LD A,(nnnn)

ÖRNEK : LD HL,22528 ; LD D,(HL) Bu örnekte HL registerinde belirttiğimiz adresin içeriği D registerine yüklenir. Eğer kaynak adres sabit ise LD A,(nnnn) komutu kullanılabilir.



LD rp,(nnnn)

Bu adresleme modunda kaynak adresteki sayının kendisi değil, sayının belirttiği adresin ve bir fazlasının içeriği yüklenir. ÖRNEK : 60000 adresinde 100, 60001 adresinde ise 20 olsun. LD HL,(60000) komutunu verdiğimizde HL'ye 60000 değil 256*20+100 sayısı yüklenir. Formül 256*(nnnn+1)+(nnnn)'dır.

Bu modda BC,DE,HL,IX,IY ve SP registerleri kullanılır. LD BC,(nnnn) LD DE,(nnnn) LD HL,(nnnn) LD IX,(nnnn) LD IY,(nnnn) LD SP,(nnnn)


8- LD (nnnn),rp ----> Yukarıdaki adresleme modunun tersidir ve herhangi bir register çiftindeki sayıları (nnnn) ve (nnnn+1) ile belirtilen adreslere kopyalar. ÖRNEK : LD HL,22528 ; LD (30000),HL komutlarıyla HL register çiftinde bulunan 22528 sayısın LOW-BYTE'ı 30000 adresine, HIGH-BYTE'ı 30001 adresine yüklenir.

Bu son modda da BC,DE,HL,IX,IY ve SP registerleri kullanılır. LD (nnnn),BC LD (nnnn),DE LD (nnnn),HL LD (nnnn),IX LD (nnnn),IY LD (nnnn),SP

EK BİLGİ : BC,DE,HL register çiftlerinde kullanılan ilk harfler HIGH byte, ikinci harfler LOW byte değerini taşır.

Zx Spectrum ULA Komut Detayı

LD (HL),n 48k/+2 pc:4,pc+1:3,hl:3 +2AB/+3 pc:4,pc+1:3,hl:3
LD (ii+n),n pc:4,pc+1:4,pc+2:3,pc+3:3,pc+3:1 x 2,ii+n:3 pc:4,pc+1:4,pc+2:3,pc+3:5,ii+n:3
LD A,(nn) pc:4,pc+1:3,pc+2:3,nn:3 pc:4,pc+1:3,pc+2:3,nn:3
LD (nn),A
LD HL,(nn) pc:4,pc+1:3,pc+2:3,nn:3,nn+1:3 pc:4,pc+1:3,pc+2:3,nn:3,nn+1:3
LD (nn),HL
LD dd,(nn) pc:4,pc+1:4,pc+2:3,pc+3:3,nn:3,nn+1:3 pc:4,pc+1:4,pc+2:3,pc+3:3,nn:3,nn+1:3
LD (nn),dd

Kaynakça

Retrojen Üyeleri: Hades Ref

Retrojen Forum: "Z80 makine diline meraklı olan?" yazan Hades

Zx Spectrum Contended Memory Sinclair Techwiki

Geocities Z80 Page Web Archive Mirror

"https://zx.tr/wiki/index.php?title=LD&oldid=9" sayfasından alınmıştır