1 / 60

Veri Transfer Komutları

Veri Transfer Komutları. I) Adres Yükleme Komutları. Bu komutlar, bir saklayıcıya veya bir saklayıcı ile bir segment saklayıcısına bir adres yüklemede kullanılmaktadır. LEA (Load Effective Adress). LEA komutu, bir saklayıcıya operand ile belirtilen adresi yükler. Örn:.

violet
Download Presentation

Veri Transfer Komutları

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Veri Transfer Komutları Mikroişlemciler ve Mikrobilgisayarlar

  2. I) Adres Yükleme Komutları Bu komutlar, bir saklayıcıya veya bir saklayıcı ile bir segment saklayıcısına bir adres yüklemede kullanılmaktadır. LEA (Load Effective Adress) LEA komutu, bir saklayıcıya operand ile belirtilen adresi yükler. Örn: LEA AX, SUBADR ; AX saklayıcısı SUBADR içeriği ile değil SUBADR adresiyle yüklenmektedir. Mikroişlemciler ve Mikrobilgisayarlar

  3. ÖRNEK MOV komutunun LEA komutu yerine kullanılması bazı durumlarda söz konusu olabilir. BUFFER DB “Bilgisayar Mühendisliği”,0Ah,0Dh,24h MOV DX, OFFSET BUFFER İfadesinin eşdeğeri; BUFFER DB “Bilgisayar Mühendisliği”,0Ah,0Dh,24h LEA DX, BUFFER Mikroişlemciler ve Mikrobilgisayarlar

  4. LDS ve LES LDS ve LES komutları bir 16 bit saklayıcıya bir ofset adres ve DS(LDS ile) veya ES(LES ile) segment saklayıcısına yeni bir segment adresi yükler. LDS DI, LIST ; DI ve DS LIST adres ile yüklenir. LES BX, VEC1 ; BX ve ES VEC1’deki adres ile yüklenir. Bu komutlardan her birinde hafızadan mikroişlemciye iki tane 16 bit kelime yani toplam 4 byte veri transferi sağlar. Mikroişlemciler ve Mikrobilgisayarlar

  5. Örnek: LDS BX, [SI] komutunu yürütülmesi DS1000h AX 34 34 20 12000 BX 20 12001 SP 00 12002 BP 20 00 12003 SI 30 DI CS 00 30 DS Mikroişlemciler ve Mikrobilgisayarlar

  6. ÖRNEK MOV [BX], 8 komutu neyi ifade etmektedir? Hafızaya byte boyutunda 5 değerini taşır. (08) Hafızaya word boyutunda 5 değerini taşır. (0008) Mikroişlemciler ve Mikrobilgisayarlar

  7. Burada hafızaya taşınacak bilginin boyutu net olarak verilmelidir. MOV byte ptr [BX], 8 gibi bir kullanım 1 byte’lık değer aktarır. MOV word ptr [BX], 8 gibi bir kullanım 2 byte’lık değer aktarır. MOV dword ptr [BX], 8 gibi bir kullanım 4 byte’lık değer aktarır. Mikroişlemciler ve Mikrobilgisayarlar

  8. II) Dizi (String) Komutları Üç çeşit dizi veri transfer komutu vardır. Bunlar LODS, STOS ve MOVS’tur. Bu komutlar, mikroişlemci ile hafıza arasında, bir blok veya tek bir byte veya kelime transferinde kullanılır. Bu komutların çalışmasına etki eden 3 tane yapı vardır: D (Direction) Bayrağı DI (Destination Index) SI (Source Index) kaydedicileridir. Mikroişlemciler ve Mikrobilgisayarlar

  9. D (Direction) Bayrağı Yön bayrağı, dizi işlemleri sırasında, DI ve SI saklayıcıları için otomatik arttırma (D=0) veya otomatik azaltma (D=1) çalışma modunu belirler. CLD( Clear Direction) ve SED(Set Direction) komutlarıyla 0’lanır veya 1’lenir. DI (Destination Index) ve SI (Source Index) Bir dizi komutunda DI, SI veya her ikisi de kullanılabilir. Normalde SI, DS için ve DI ise ES için ofset adres olmaktadır. SI’in ilişkili olduğu segment DS olmasına rağmen değiştirilmesi mümkündür. Fakat aynı durum DI için mümkün değildir. Mikroişlemciler ve Mikrobilgisayarlar

  10. LODS (Load String) LODS komutu SI ile işaretli hafıza hücresinden AL’yi 1 byte veya AX’e 2 byte aktarabilmektedir. Mikroişlemciler ve Mikrobilgisayarlar

  11. STOS (Store String) STOS komutu, AL veya AX’i, DI ile işaretli hafıza hücresine saklamaktadır. REP Komutu Repeat (REP) öneki herhangi bir dizi komutunun önüne getirilebilir. Bu, dizi işleminin, CX sayma değeri 0 oluncaya kadar devam etmesine neden olur. Mikroişlemciler ve Mikrobilgisayarlar

  12. Örnek Assembly Kodu Açıklama LES DI, BUFFER ; BUFFER adresini yükle MOV CX, 10 ; Sayacı yükle CLD ; Otomatik arttırma aktif (D=0 ) MOV AL, 0 ; AL saklayıcısına 0h aktarılmakta REP STOSB ; BUFFER bölgesi 0’lanarak temizlenmektedir. Bu program, BUFFER adresli yerden başlayan 10 byte, sıfır ile temizlenmektedir. Mikroişlemciler ve Mikrobilgisayarlar

  13. Örnek Hafıza bloğunu daha hızlı bir şekilde temizleyecek olan assembly programı ise aşağıdadır. Assembly Kodu Açıklama LES DI, BUFFER ; BUFFER adresini yükle MOV CX, 5 ; Sayacı yükle CLD ; Otomatik arttırma aktif (D=0 ) MOV AX, 0 ; AX saklayıcısına 0h aktarılmakta REP STOSW ; BUFFER bölgesi 0’lanarak temizlenmektedir. Mikroişlemciler ve Mikrobilgisayarlar

  14. MOVS (Move String) Hafızanın bir alanından diğer bir alanına bir byte veya bir kelime aktarımı yapılır. Diğer bir deyişle, bu komut hafızadan hafızaya ver transferi yapar (LODS ve STOS ise CPU kaydedicileri ile hafıza arasında veri transferi yapmakta idi). Data segmentte bulunan ve SI saklayıcısı ile adreslenen hafıza hücresini, ES’de bulunan ve DI ile adreslenen hafıza alanına aktarır. Mikroişlemciler ve Mikrobilgisayarlar

  15. Örnek Assembly Kodu Açıklama LES DI, BUFFER1 ; BUFFER1 adresini yükle LDS SI, BUFFER2 ; BUFFER2 adresini yükle CLD ; Otomatik arttırma aktif (D=0 ) MOV CX, 100 ; CX saklayıcısına 100 değeri aktarılmakta REP MOVSB ; BUFFER2’den BUFFER1’e aktarım. Bu programda BUFFER2 alanından 100 byte BUFFER1 alanına aktarılmaktadır. MOVS komutu kullanılmadan önce LES ve LDS komutları ile hafıza işretçileri DI ve SI yüklenerek, BUFFER1 ve BUFFER2 alanlarına işaret etmeleri sağlanmaktadır. Mikroişlemciler ve Mikrobilgisayarlar

  16. III) Diğer Veri Transfer Komutları Bu grupta yer alan komutlar IN,OUT, XCHG, XLAT, LAHF ve SAHF’dır. IN ve OUT Komutu 8085A mikroişlemcisi açılanırken bu komutlar üzerinde durmuştuk. Bu komutlar ile mikroişlemci giriş/çıkış cihazları ile haberleşir. Hatırlanacağı gibi bu komutlar 2 byte uzunluktadırlar (1 byte op-code, 1 byte operand) Mikroişlemciler ve Mikrobilgisayarlar

  17. XCHG Komutu Bu komut, herhangi bir saklayıcının içeriğini diğer bir saklayıcı veya bir hafıza hücresi ile değiştirmektedir. XCHG komutu , segment saklayıcılarının içeriğini veya hafızadan hafızaya veri içeriğini değiştirmekte kullanılmaz. Mikroişlemciler ve Mikrobilgisayarlar

  18. XLAT Komutu Genellikle tablo olarak tasarlanan dizilere erişmek için kullanılır. AL kaydedicisine tablonun elemanlarından birini yükler. Örn: Assembly Kodu TABLO DB 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F MOV AL, 0Bh MOV BX, TABLO XLAT Tablodaki 12. elemanın ASCII karşılığını (hex olarak) AL’ye yükler. Mikroişlemciler ve Mikrobilgisayarlar

  19. LAHF ve SHAF Komutları Bu komutlar bayrakları AH kaydedicisine yükler veya AH’a yüklenen bayrak kaydedicilerinin durumlarını kayar nokta kaydedicisine ( floating point register ) yükler. Uygulamada çok sık kullanılan komutlar değillerdir. Mikroişlemciler ve Mikrobilgisayarlar

  20. Aritmetik ve Lojik Komutlar Mikroişlemciler ve Mikrobilgisayarlar

  21. I) Toplama, Çıkarma, Karşılaştırma ADD Komutu Bu komutun farklı adresleme modlarına göre gösterimi aşağıdadır: Mikroişlemciler ve Mikrobilgisayarlar

  22. ADC Komutu ADD komutundan farklı olarak elde bayrağı da (Carry Flag) toplamada dikkate alınır. Mikroişlemciler ve Mikrobilgisayarlar

  23. ADD ve ADC komutları işlemcinin bayrak kaydedicindeki bitlere şöyle etki ederler: İşaretli sayılarla işlem yaparken işaret taşmalarını göstermesi amacıyla V (overflow) bitine. İşaretsiz sayılarda işlem yaparken boyut taşmalarını göstermesi amacıyla C bitine. Sonuç negatif bir değerse S=1 değilse S=0 olur. sonuç 0 olursa Z=1 aksi halde Z=0 olur. BCD olarak yapılan toplama işlemlerinde A bitine. Elde edilen sonuçtaki binary 1 ler çift sayıda olursa, örneğin 0000 0101 değerinde 2 tane 1 vardır bu durumda P=1 olur. Mikroişlemciler ve Mikrobilgisayarlar

  24. INC Komutu Segment saklayıcısı dışında herhangi bir saklayıcıya veya hafıza hücresine 1 ekler. Mikroişlemciler ve Mikrobilgisayarlar

  25. SUB Komutu Bu komutun farklı adresleme modlarına göre gösterimi aşağıdadır: Mikroişlemciler ve Mikrobilgisayarlar

  26. SBB Komutu SBB, operand ile birlikte elde bayrağını (Carry) çıkarmada kullanır. Çıkartma komutları toplama komutlarında da olduğu gibi bayrak kaydedicisinin, Z, S, V, A, P ve C bitini etkilerler. Mikroişlemciler ve Mikrobilgisayarlar

  27. DEC Komutu Bu komut bir segment saklayıcısı dışında herhangi bir saklayıcıdan veya bir hafıza hücresinden 1 çıkarmaktadır. Mikroişlemciler ve Mikrobilgisayarlar

  28. Karşılaştırma Komutu CMP(Compare) komutuSUB komutu ile aynı işi yapar fakat çıkarma işleminin sonucunu herhangi bir kaydediciye yüklemez. Bu komut genelde şartlı dallanma komutlarından önce bayrakları etkilemek için kullanılır. Sadece hafızadan hafızaya ve segmet saklayıcı karşılaştırmasına izin verilmemektedir. Bu komut A, C, O, P, S ve Z bayraklarını etkiler. Mikroişlemciler ve Mikrobilgisayarlar

  29. Mikroişlemciler ve Mikrobilgisayarlar

  30. MOV AX, 5h ; AX=05h MOV BX, 5h ; BX=05h CMP AX,BX ; CMP işleminin sonucunda 0 değeri elde edilir ve Z ve Parity bayrağı kurulur (Z=1 ve P=1) CMP işleminin sonucunda sadece Parity bayrağı etkilenir ve P=1 olur. MOV AX, 15 ; AX=0Fh MOV BX, 10 ; BX=0Ah CMP AX,BX ; CMP işleminin sonucunda negatif bir değer elde edileceği için S bayrağı kurulur (S=1). Ayrıca ilk 4 bitten barrow oluşacağı ve 8 bitin sonunda da barrow oluşacağı için A ve C bayrakları kurulur. MOV AL, 10 ; AL=Ah MOV BL, 15 ; BL=Fh CMP AL,BL ; Mikroişlemciler ve Mikrobilgisayarlar

  31. II) Çarpma ve Bölme İlk mikroişlemciler çarpma ve bölme birimlerine sahip değildiler. Çarpma ve toplama işlemleri sağa ve sola kaydırma komutları ile gerçekleştirilmekteydi. Çarpma ve bölme yapabilme özelliği 16 bit mikroişlemcilerle gerçekleşmiştir. Fakat burada da sadece tamsayılar (integer) üzerinde çarpma ve bölme yapılabilmekteydi. Kayan nokta işlemleri ya yazılım alt programları ile veya yardımcı matematik işlemciler yardımıyla gerçekleştirilmiştir. 80486 ve Pentium işlemcilerle beraber, kayan nokta işlemleri, artık tümdevre üzerinde gerçekleştirilmeye başlanmıştır. Mikroişlemciler ve Mikrobilgisayarlar

  32. ÇARPMA Çarpma işlemi 8 bit veya 16 bit işaretsiz MUL veya işaretli IMUL komutları ile yapılır. Çarpım, operandlar 8 bit ise 16 bit; 16 bit ise 32 bittir. Çarpma komutlarında ayrıca ivedi adresleme modunun dışındaki adresleme modları kullanılır . İlk operand her zaman AL (8 bitlik işlemlerde) veya AX (16 bitlik işlemlerde)’de bulunur. Mikroişlemciler ve Mikrobilgisayarlar

  33. 8 Bit Çarpma Çarpanlardan biri her zaman için AL kaydedicisinde ve sonuç değeri de AX kaydedicisinde bulunur. Operand AL x AX Mikroişlemciler ve Mikrobilgisayarlar

  34. 16 Bit Çarpma Çarpanlardan biri her zaman için AX kaydedicisinde ve sonuç değeri de AX-DX kaydedici çiftinde bulunur. Operand AX x DX AX Mikroişlemciler ve Mikrobilgisayarlar

  35. Mikroişlemciler ve Mikrobilgisayarlar

  36. BÖLME Çarpma işlemi gibi bölme de işaretsiz DIV veya işaretli (IDIV) 8 bit veya 16 bit sayılar üzerinde gerçekleştirilir. Mikroişlemciler ve Mikrobilgisayarlar

  37. 8 Bit Bölme Bölünen her zaman AX saklayıcısında bulunur. Bölme işleminde kullanılan diğer saklayıcılar aşağıdadır : Operand (8 bit) AX - AL AH 8 bit bölme işleminde, bölünecek sayı 8 bit ise bu sayıyı 16 bite çevirmek için CBW (Convert Byte to Word) komutu kullanılır. Bu komut, AL saklayıcısında bulunan 8 bit sayıyı 16 bit olarak değiştirir. Genellikle bölme işleminden önce kullanılır. Mikroişlemciler ve Mikrobilgisayarlar

  38. 16 Bit Bölme 16 bit bölme işleminde bölünen her zaman DX:AX saklayıcı çiftinde bulunur. AX DX Operand (16 bit) - AX DX 16 bit bölme işleminde, bölünecek sayı 16 bit ise bu sayıyı 32 bite çevirmek için CWB(Convert Word to Double) komutu kullanılır. Bu komut AX’de bulunan 16 bitlik değeri 32 bitlik hale (DX:AX çifti) çevirir. Mikroişlemciler ve Mikrobilgisayarlar

  39. III)BCD FORMAT BCD kodlama sisteminde hatırlanacağı gibi her sayı 4 bit ile ifade edilmekte idi. Toplama ve çıkarma işleminde ise, toplanacak ve çıkarılacak syılar bir byte içinde 2 hane olarak AL’de saklanırlar. Bu işleme BCD formatı denir. Örn: AL=36h ise, ve bu bir BCD sayıyı belirtiyorsa bu sayı BCD kodlu 36 sayısıdır. Mikroişlemciler ve Mikrobilgisayarlar

  40. BCD gösterim şekli BCD kodlama bölümünde bahsedildiği gibi her rakam 4 bit ile ifade edilmektedir. Bu gösterim ondalık gösterimin bir alt kümesidir. Mikroişlemciler ve Mikrobilgisayarlar

  41. ÖRNEK BCD formatta gerçekleştirilen aritmetik işlemler daha önce öğrendiğimiz aritmetik işlemlerden biraz farklıdır. Bu farklılığı BCD toplama işlemi üzerinde gösterelim. Bellekte saklı bulunan 8 bitlik bir ikili değer ya -128 +128 aralığında ikiye tümleyen biçimindeki işaretli bir değeri ya da 00-99 aralığında BCD basamağını gösterir. Daha önce bahsedilen tüm artimetik komutlar verilerin ikiye tümleyen biçiminde ikili olarak saklandıklarını kabul ederler. Bu nedenle, BCD sayılar üzerinde işlem yaparken, doğru sonuçları üretebilmek için normal ikili sonuçlar üzerinde bazı ayarlamalar yapmak gerekmektedir. Mikroişlemciler ve Mikrobilgisayarlar

  42. A= 0011 0100 B= 0010 0001 A= 34 BCD B= 21 BCD + + 0101 0101 55 BCD A= 0111 0110 B= 0001 0101 A= 76 BCD B= 15 BCD + + 91 BCD X 1000 1011 8 B A= 0100 1000 B= 0100 1001 A= 48 BCD B= 49 BCD + + 97 BCD X 1001 0001 9 1 Mikroişlemciler ve Mikrobilgisayarlar

  43. Toplama işlemi üzerinde doğru BCD sonuçları üretebilmek için normal ikili sonuçlar üzerinde gerçekleştirilen işlem : Eğer her bir 4-bit grubun ikili toplamı 9’dan küçük bir sonuç üretirse ve küçük değerlikli BCD basamakları birbirine eklenirken elde üretilmezse, sonuç doğrudur. Fakat, eğer normal ikili toplamanın sonucu dokuzdan büyük ise veya en küçük değerlikli BCD basamağının toplamı elde üretirse, normal ikili toplama sonucuna düzeltme payı olarak +6 eklenir. Mikroişlemciler ve Mikrobilgisayarlar

  44. A= 0011 0100 B= 0010 0001 A= 34 BCD B= 21 BCD + + 0101 0101 55 BCD A= 0111 0110 B= 0001 0101 1000 1011 A= 76 BCD B= 15 BCD 0000 0110 + + + X 91 BCD 1001 0001 1000 1011 8 B A= 0100 1000 B= 0100 1001 A= 48 BCD B= 49 BCD 1001 0001 + + 0000 0110 + X 97 BCD 1001 0001 9 1 1001 0111 Mikroişlemciler ve Mikrobilgisayarlar

  45. DAA (Decimal Adjust After Addition) Assembly Kodu Açıklama MOV BX, 1234h ; BX=1234 MOV CX,3099h ; CX=3099 MOV AL,BL ; AL=BL ADD AL, CL ; AL 34h+99h = CDh ile hex olarak yüklenmiştir. Fakat bu değer BCD değildir. Bunun için BCD karşılığıa dönüştürmek gerekir. DAA ; İşletiminden sonra AL=33 ve C = 1 olur MOV DL, AL ; DL 33 BCD sayısı ile yüklenir. MOV AL, BH ; AL=BH ADC AL, CH ; AL 12h+30h+C = 43h ile yüklenir. İkinci DAA istenirse işletilmeyebilir DAA ; MOV DH, AL ; DH= 43 Mikroişlemciler ve Mikrobilgisayarlar

  46. DAS (Decimal Adjust After Subtraction) Assembly Kodu Açıklama MOV BX, 1234h ; BX=1234 MOV CX,3099h ; CX=3099 MOV AL,BL ; AL=BL SUB AL, CL ; AL=AL-CL DAS ; İşletiminden sonra AL=65 ve C = 1 olur MOV DL, AL ; DL 65 BCD sayısı ile yüklenir. MOV AL, BH ; AL=BH SBB AL, CH ; AL-CH DAS ; MOV DH, AL ; DH= 18 Mikroişlemciler ve Mikrobilgisayarlar

  47. AAM (Adjust After Multiplication) Assembly Kodu Açıklama MOV AL, 5h ; AL=05h MOV CL, 6h ; CL=06h MUL ; AAM ; Çarpım işleminin sonucunda AX=1Eh olacaktır. Fakat bu değer BCD değildir. Bu yüzden bir AAM komutu işletilir. Komutun işletilmesinden sonra AX= 0300h olur. Mikroişlemciler ve Mikrobilgisayarlar

  48. AAD (Adjust After Division) Açıklama Assembly Kodu MOV BL, 9h ; AL=05h MOV AX, 0702h ; CL=06h AAD ; DIV BL Bu komut bölme işleminde önce kullanılmalıdır. Mikroişlemciler ve Mikrobilgisayarlar

  49. IV) Lojik Komutlar Lojik işlemler, bitlerin reset (lojik 0), set (lojik 1 ) veya tersinin alınmasını sağlar. Bütün lojik işlemler bayrak kaydedicilerinin durumlarını etkilerler. Mikroişlemciler ve Mikrobilgisayarlar

  50. AND AND işlemi lojik çarpma işlemini gerçekleştirir. Bu işlem, bir ikili sayıdaki bitleri resetlemede kullanılır. Bu işlem, maskeleme, sıfırlama olarak da adlandırılır. Assembly Kodu Açıklama MOV CX, 3531h ; AND CX, OFOFh ; 3531h AND OFOFh gerçekleşir. Bu kod bloğu, 16 bit ASCII bilginin BCD koda çevrilmesini sağlar. Mikroişlemciler ve Mikrobilgisayarlar

More Related