Arş. Gör. Ebru AYDOĞAN Arş. Gör. Mehmet AYAN BM 310 Mikroişlemciler Dersi Laboratuvarı (LAB4) 1.ÖN ÇALIŞMA SORUSU "paket" etiketinden itibaren bellekte 10 tane sayı vardır. Sayıları koyan kişinin yalnızca 10 bayt yeri ama 20 tane 4 bitlik sayısı olduğundan bu sayıların ilk 4 bitleri ile son 4 bitleri ayrı iki sayı belirtmektedir. Bu 10 bayt içine paketlenmiş 20 sayının toplamını DX yazmacına yazan bir program yazın. Paket db 12H,86H,23H,A6H,FBH,45H,78H,96H,54H,12H 1+2+8+6+2+3+10+6+15+11+4+5+7+8+9+6+5+4+1+2 NOT: SHL ve SHR komutları ilk dört bit ve son dört biti ayırmada yardımcı olabilir. 2.ÖN ÇALIŞMA PROGRAM SEGMENTLERİNE GİRİŞ Segment: Segment (bölüt), 64K bayta kadar çıkabilen hafıza alanıdır ve 16 ile kalansız bölünebilen bir adres ile başlar. (böyle bir adres 0H ile biter). Assembly Programlama Dili üç segmentten oluşur: • Kod segmenti: program kodunu içerir (talimatlar, komutlar) • Veri segmenti: program tarafından işlenecek olan verinin (bilgi) saklanmasında kullanılır • Yığın segmenti: bilginin geçici olarak saklanmasında kullanılır. Mantıksal ve Fiziksel Adres Fiziksel Adres gerçekten adres yoluna koyulan 20-bit adrestir. (8086’da) • 00000H - FFFFFH aralığına sahiptir Offset Adres 64K bayt segment aralığında bir konumdur. • 0000H - FFFFH aralığındadır Mantıksal Adres segment adresi ve offset adresten oluşur. Kod segmentinde adresleme 8086, programı çalıştırmak için komutları kod segmentinden çeker. Bir komutun mantıksal adresi CS (kod segmenti) ve IP (komut işaretçisi) den oluşur. 2013-2014 Bahar Dönemi Öğr. Gör. Dr. Muhammed ÜNAL Arş. Gör. Ebru AYDOĞAN Arş. Gör. Mehmet AYAN CS 2 5 IP 0 0 : 9 5 F 3 Mantıksal Adres: CS:IP Offset adres • Fiziksel Adres, CS nin bir hex basamak sola kaydırılması ve IP nin eklenmesi ile üretilir. Örnek: CS:IP => 2500:95F3H CS ile başla CS’yi sola kaydır IP’yi ekle 1. 2. 3. 2500 25000 2E5F3 (25000+95F3) Mikroişlemci 2E5F3 adresinden başlayarak hafıza alanlarından dönüşümlü olarak komutları alacaktır. Ör: CS=24F6H ve IP=634AH ise, aşağıdakileri belirleyiniz: a) b) c) d) e) Mantıksal adres Offset adres Fiziksel adres Kod segmentinin alt aralığı Kod segmentinin üst aralığı a) Mantıksal adres; 24F6:634A b) Offset adres; 634A c) Fiziksel adres; 24F60+634A= 2B2AA d) Kod segmentinin alt aralığı: 24F6:0000 e) Kod segmentinin üst aralığı: 24F6:FFFF => 24F60+0000 =24F60 => 24F60+FFFF=34F5F Veri segmenti Hafızanın kesin bir şekilde veri için ayrılan kısmına veri segmenti (DS) denir. Code segmenti nasıl CS ve IP ile ilişkiliyse, veri segmenti de DS ve bir offset değeri kullanır. 8086 da, BX, SI ve DI offset adreslerini tutmak için kullanılır. Ör: DS=7FA2H ve ofset 438EH ise, aşağıdakileri belirleyiniz: a) b) c) d) 2013-2014 Bahar Dönemi Fiziksel adres Veri segmentinin alt aralığı Veri segmentinin üst aralığı Mantıksal adresi gösterin Öğr. Gör. Dr. Muhammed ÜNAL Arş. Gör. Ebru AYDOĞAN a) Fiziksel adres; b) Alt aralık: c) Üst aralık: d) Mantıksal adres; Arş. Gör. Mehmet AYAN 7FA20+438E= 83DAE 7FA20(7FA20+0000) 8FA1F(7FA20+FFFF) 7FA2:438E Veri segmentinin kullanımı 5 bayt veri eklemek için bir programın gerekli olduğunu varsayalım (25H, 12H, 15H,1FH ve 2BH) Birinci yol: MOV AL,00H ; AL sıfırlanır ADD AL,25H ADD AL,12H ADD AL,15H kod ve veri karışmıştır ADD AL,1FH ADD AL,2BH ; AL=25+12+15+1F+2B Diğer yol: Veri segmenti için offsetin 200H den başladığını varsayalım DS:0200 = 25 DS:0201 = 12 DS:0202 = 15 within data segment DS:0203 = 1F DS:0204 = 2B MOV AL,0 ADD AL,[0200] ADD AL,[0201] ADD AL,[0202] ADD AL,[0203] ADD AL,[0204] ;AL temizlenir ;DS:200 in içeriği AL’ye eklenir ;DS:201 in içeriği AL’ye eklenir ; DS:202 in içeriği AL’ye eklenir ; DS:203 in içeriği AL’ye eklenir ; DS:204 in içeriği AL’ye eklenir Küçük sonlu kuralı (Little endian convention) 8-bit (1-bayt) veri göz önüne alındığında, baytlar hafızada birbiri ardına saklanır. Fakat 16-bit (2-bayt) veri göz önüne alındığında veri nasıl saklanır? Ör: MOV AX,35F3H : AX’e 35F3H yükle MOV [1500],AX : AX’in içeriği 1500H ofsetine kopyala Böyle bir durumda düşük bayt düşük hafıza alanına ve yüksek bayt yüksek hafıza alanına gider. 2013-2014 Bahar Dönemi Öğr. Gör. Dr. Muhammed ÜNAL Arş. Gör. Ebru AYDOĞAN Arş. Gör. Mehmet AYAN DS:1500 = F3 DS:1501 = 35 Bu kural küçük sonlu kuralı (little endian convention) olarak adlandırılır: bu kural Intel tarafından kullanılmaktadır. Büyük sonlu kuralı (big endian convention) bunun tam tersidir, yüksek bayt düşük adrese ve düşük bayt yüksek adrese gider. Motorolla mikroişlemsi bu kuralı kullanır. Yığının mantıksal ve fiziksel adresi Yığın için fiziksel adresin hesaplanmasında, kod ve veri segmentleri için kullanıldığı gibi, aynı prensip uygulanır. Fiziksel adres yığın segmenti (SS) yazmacı ve yığın işaretçisinin (SP) değerine bağlıdır. Ör: SS=3500H ve SP:FFFEH ise; a) Fiziksel adresin hesaplanması: b) Yığının segmentinin alt aralığının hesaplanması: c) Yığın segmentinin üst aralığının hesaplanması: d) Yığının mantıksal adresi: 35000+FFFE = 44FFE 35000+0000 = 35000 35000+FFFF = 44FFF 3500:FFFE VERİ TİPLERİ VE VERİ TANIMI Assembler Veri Talimaları • ORG (Origin) : ORG, offset adresinin başlangıcını göstermek için kullanılır. ORG’dan sonra gelen sayı hex veya decimal olabilir. Çoğunlukla Veri segmentinde kullanılır. Ör: DTSEG SEGMENT DATA_IN DW 234DH,1DE6H,3BC7H,566AH ORG 10H SUM DW ? DTSEG ENDS • • DB (define byte) : DB, decimal, binary, hex ve ASCII bayltlar için bellek tahsisine olanak sağlar. Ör: DATA1 ;DECIMAL D IS OPTIONAL DATA2 DATA3 DATA4 2013-2014 Bahar Dönemi DB 25 DB 10001001B DB 12H ORG 0010H DB 0RG ‘2591’ 0018H ;BINARY ;HEX ;ASCII NUMBERS Öğr. Gör. Dr. Muhammed ÜNAL Arş. Gör. Ebru AYDOĞAN • Arş. Gör. Mehmet AYAN DATA5 DB ? ORG 0020H DATA6 DB ;SET ASIDE A BYTE ‘My name is Joe’ DUP (duplicate) : DUP, karakterlerin belirli bir sayıda çoğaltılması için kullanılır. Ör: DATA1 DB ;FILL 4 BYTES WITH FF DATA2 DB BYTES WITH FF 0FFH,0FFH,0FFH,0FFH Ör: 32 BYTES 4 DUP(0FFH) ;FILL 4 DATA3 DB 32 DUP (?) DATA4 BYTES WITH 99 DB 5 DUP (2 DUP (99)) ;FILL 10 • ;SET ASIDE DW(define word) : DW, aynı anda bellekte 2 bayt (bir kelime) yer tahsis etmek için kullanılır. DUP karakterlerin belirli bir sayıda çoğaltılması için kullanılır. Ör: • ;ASCII CHARACTERS DATA1 DATA2 DATA3 DATA4 DATA5 DW DW DW DW DW 954 ;DECIMAL 100101010100B ;BINARY 253FH ;HEX 9,2,7,0CH,00100000b,5,’HI’ ;MISCELLANEOUS 8 DUP (?) EQU(equate) : EQU, hafızada yer işgal etmeden bir sabit tanımlamak için kullanılır. Ör: COUNT EQU 25 MOV CX,COUNT LEA(Load Effective Address) KOMUTU. Yazmaç = efektif adres yükler.(address of memory (offset)) Örnek: MOV BX, 35h MOV DI, 12h LEA SI, [BX+DI] ; SI = 35h + 12h = 47h Örnek2: ORG 100h LEA AX, m ; AX = offset of m RET m DW 1234h END 2013-2014 Bahar Dönemi Öğr. Gör. Dr. Muhammed ÜNAL Arş. Gör. Ebru AYDOĞAN Arş. Gör. Mehmet AYAN LDS KOMUTU (MemoryLoad memory double word into word register and DS) REG = first Word DS = second word Örnek: ORG 100h LDS AX, m RET m DW 1234h DW 5678h END AX is set to 1234h, DS is set to 5678h. LES KOMUTU(Load memory double word into word register and ES) REG = first Word ES = second word Örnek: ORG 100h LES AX, m RET m DW 1234h DW 5678h END AX is set to 1234h, ES is set to 5678h. XCHG KOMUTU operand1 < - > operand2 Örnek: MOV AL, 5 MOV AH, 2 XCHG AL, AH ; AL = 2, AH = 5 XCHG AL, AH ; AL = 5, AH = 2 RET NOT: XCHG AX,[1234H] Bellekten yazmaca veya bellekten belleğe olmaz. 2013-2014 Bahar Dönemi Öğr. Gör. Dr. Muhammed ÜNAL Arş. Gör. Ebru AYDOĞAN Arş. Gör. Mehmet AYAN XLATB KOMUTU AL = DS:[BX + unsigned AL] Örnek: ORG 100h LEA BX, dat MOV AL, 2 XLATB ; AL = 33h RET dat DB 11h, 22h, 33h, 44h, 55h LAHF KOMUTU AH = flags register AH bit: 7 6 5 4 3 2 1 0 [SF] [ZF] [0] [AF] [0] [PF] [1] [CF] bits 1, 3, 5 are reserved. SAHF KOMUTU flags register = AH AH bit: 7 6 5 4 3 2 1 0 [SF] [ZF] [0] [AF] [0] [PF] [1] [CF] bits 1, 3, 5 are reserved. POPF KOMUTU Yığından 2 bayt alır bayrak yazmacına atar. flags = SS:[SP] (top of the stack) SP = SP + 2 PUSHF KOMUTU Bayrak yazmacını alır 2 bayt olarak yığıta kaydeder. SP = SP - 2 SS:[SP] (top of the stack) = flags SHL KOMUTU Birinci operandı sola kaydırır. Kaydırma sayısı ikinci operandla belirtilir. Örnek: Mov al, 11100000b Shl al,2; al10000000b cf1 2013-2014 Bahar Dönemi Öğr. Gör. Dr. Muhammed ÜNAL Arş. Gör. Ebru AYDOĞAN Arş. Gör. Mehmet AYAN SHR KOMUTU Birinci operandı sağa kaydırır. Kaydırma sayısı ikinci operandla belirtilir. Örnek: Mov al, 11100000b Shl al,2; al00111000b cf0 3. ÇALIŞMA SORUSU 2013-2014 Bahar Dönemi Öğr. Gör. Dr. Muhammed ÜNAL Arş. Gör. Ebru AYDOĞAN Arş. Gör. Mehmet AYAN BM 310 Mikroişlemciler Dersi Laboratuvar Raporu Öğrenci No: Tarih:___/___/_____ Adı Soyadı : Asistan Onayı: Şube: Ön Çalışma Sorusu Cevabı (Laboratuvar Öncesinde Doldurulacaktır) Kod Açıklama 1. ___________________________________ _________________________________________ 2. ___________________________________ _________________________________________ 3. ___________________________________ _________________________________________ 4. ___________________________________ _________________________________________ 5. ___________________________________ _________________________________________ 6. ___________________________________ _________________________________________ 7. ___________________________________ _________________________________________ 8. ___________________________________ _________________________________________ 9. ___________________________________ _________________________________________ 10. __________________________________ _________________________________________ 11. __________________________________ _________________________________________ 12. ___________________________________ _________________________________________ 13. ___________________________________ ________________________________________ 13. ___________________________________ ________________________________________ 14. ___________________________________ ________________________________________ 15. ___________________________________ ________________________________________ 2013-2014 Bahar Dönemi Öğr. Gör. Dr. Muhammed ÜNAL Arş. Gör. Ebru AYDOĞAN Arş. Gör. Mehmet AYAN Laboratuvarın Konusu(Laboratuvar Sırasında Doldurulacaktır) _________________________________________________________________________________ _________________________________________________________________________________ _________________________________________________________________________________ _________________________________________________________________________________ İşlem Adımları (Laboratuvar Sırasında Doldurulacaktır) Kod Açıklama 1. ___________________________________ _________________________________________ 2. ___________________________________ _________________________________________ 3. ___________________________________ _________________________________________ 4. ___________________________________ _________________________________________ 5. ___________________________________ _________________________________________ 6. ___________________________________ _________________________________________ 7. ___________________________________ _________________________________________ 8. ___________________________________ _________________________________________ 9. ___________________________________ _________________________________________ 10. __________________________________ _________________________________________ 11. __________________________________ _________________________________________ 12. ___________________________________ _________________________________________ 13. ___________________________________ ________________________________________ 14. ___________________________________ ________________________________________ 15. ___________________________________ ________________________________________ 16. ___________________________________ ________________________________________ 17. ___________________________________ ________________________________________ 18. ___________________________________ ________________________________________ 2013-2014 Bahar Dönemi Öğr. Gör. Dr. Muhammed ÜNAL Arş. Gör. Ebru AYDOĞAN Arş. Gör. Mehmet AYAN 19. ___________________________________ ________________________________________ 20. ___________________________________ ________________________________________ 21. ___________________________________ ________________________________________ 22. ___________________________________ ________________________________________ 23. ___________________________________ ________________________________________ 24. ___________________________________ ________________________________________ 25. ___________________________________ ________________________________________ 26. ___________________________________ ________________________________________ 27. ___________________________________ ________________________________________ 28. ___________________________________ ________________________________________ 29. ___________________________________ ________________________________________ 30. ___________________________________ ________________________________________ Laboratuvar Sonuçları (Laboratuvar Sonunda Doldurulacaktır) _________________________________________________________________________________ _________________________________________________________________________________ _________________________________________________________________________________ _________________________________________________________________________________ Kazanımlar (Laboratuvar Sonunda Doldurulacaktır) _________________________________________________________________________________ _________________________________________________________________________________ _________________________________________________________________________________ _________________________________________________________________________________ 2013-2014 Bahar Dönemi Öğr. Gör. Dr. Muhammed ÜNAL
© Copyright 2024 Paperzz