1.ön çalışma sorusu 2.ön çalışma

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; al10000000b cf1
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; al00111000b cf0
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