LD
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 Forum: "Z80 makine diline meraklı olan?" yazan Hades