Arş. Gör. Ebru AYDOĞAN
Arş. Gör. Mehmet AYAN
BM 310 Mikroişlemciler Dersi Laboratuvarı (LAB3)
1.ÖN ÇALIŞMA SORUSU
Soru: 0’dan 7’e kadar olan sayıların faktöriyellerinin toplamını bulup yığıta atan bir program yazın.
Açıklama: 2. Labın föyünde 0’dan 5’e kadar olan sayıların faktöriyellerinin toplamını bulan programın
çözümünü vermiştim. Orada mevcut yazmaçları kullanarak programı yazabiliyorduk. Yalnız bu soruda
mevcut yazmaçlardan fazla yere ihtiyacınız olacak. Bu yüzden yığını kullanmanız gerekecek.
2.ÖN ÇALIŞMA
2.1
2.2
2.3
2.4
PUSH, POP KOMUTLARI
BAYRAK YAZMAÇLARI
DENETİM AKTARMA BUYRUKLARI
CMP KOMUTU
2.1 STACK: PUSHING ve POPPING OPERASYONLARI
Yığın(Stack) nedir ve neden ihtiyaç duyulur?
 SS (yığın segmenti) ve SP (stack pointer) yığına erişmek için bellekte yüklü olması gerekir.
 CPU’daki her register (Segment register ve SP hariç) yığına saklanabilir veya yığından
yüklenebilir.
 Sınırlı sayıda yazmaç olduğu için CPU bu depolama alanlarına ihtiyacı duyar.
Yığına İTME(Pushing) yapma
 Yığında CPU yazmaçlarına saklama işlemi PUSH olarak adlandırılır.
Örn: SP(STACK POINTER)=1236, AX=24B6, DI=85C2, ve DX=5F93, Aşağıdaki komutlar çalıştığında
yığının durumu nasıl olur?
PUSH AX
PUSH DI
PUSH DX
2013-2014 Bahar Dönemi
Öğr. Gör. Dr. Muhammed ÜNAL
Arş. Gör. Ebru AYDOĞAN
Arş. Gör. Mehmet AYAN
Cevap:
SS:1230
93
SS:1231
5F
SS:1232
C2
C2
SS:1233
85
85
SS ;1234
B6
B6
B6
SS ;1235
24
24
24
Sonra
Sonra
Sonra
PUSH AX
PUSH DI
PUSH DX
SP=1234
SP=1232
SP=1230
SS:1236
START
SP=1236
• Not:8086 da alt bayt küçük adreste saklanır.
Yığına ÇEKME(Popping) yapma
 Yığında CPU yazmaçlarından yükleme işlemi POP olarak adlandırılır.
Ex: SP=18FA, Aşağıdaki komutlar çalıştığında yığının durumu nasıl olur?
POP CX
POP DX
POP BX
Cevap:
SS:18FA
23
SS:18FB
14
SS:18FC
6B
6B
SS:18FD
2C
2C
SS ;18FE
91
91
91
SS ;18FF
F6
F6
F6
START
After
POP CX
After
POP DX
After
POP BX
SP=18FA
SP=18FC
SP=18FE
SP=1900
CX=1423
DX=2C6B
BX=F691
SS:1900
S
2.2 BAYRAK YAZMAÇLARI
CF, the Carry Flag: Toplama ve çıkarma işleminde taşma bitini tutar.
PF, the Parity Flag: Odd Parity(Tekt eşlik) için 0, Even Parity(Çift eşlik) için 1.
AF, the Auxiliary Carry Flag: BCD toplama ve çıkarma işleminde kullanılır.
2013-2014 Bahar Dönemi
Öğr. Gör. Dr. Muhammed ÜNAL
Arş. Gör. Ebru AYDOĞAN
Arş. Gör. Mehmet AYAN
ZF, the Zero Flag: Aritmetik ve mantık işleminin sonucu sıfır olduğunu(Z=1 için) belirtir. Diğer
durumda (Z=0) işlem sonucu sıfırdan farklıdır.
SF, the Sign Flag: Aritmetik ve mantık işleminin sonucunun işaretini tutar. (S=1 negatif, S=0 pozitif)
TF, the Trap Flag: Mikroişlemcinin debug modunda çalışmasını(T=1) sağlar.
IF, Interrupt Enable Flag: Interupt biti INTR giriş pinini kontrol eder.
DF, the Direction Flag: DI, SI registerlarının artma veya azalma modunda olmasını denetler.(DI=1
için registerlar azalır, 0 için artar)
OF, the Overflow Flag: Taşmayı gösterir
2.3 DENETİM AKTARMA BUYRUKLARI
FAR ve NEAR : (given CS:IP)
• NEAR: Mevcut code segmentinin içerisindeki atlamalarda kullanılır. IP değişir.
• FAR: Mevcut code segmentinin dışarısına atlamalarda kullanılır. Hem CS hem de IP değişir.
Koşullu Atlamalar
Koşullu atlama, belirli bir koşul gerçekleştiğinde kontrol(program sayacı) istenilen yere atlar.
JC (jump if carry) [CF is checked], JNZ (jump if not zero) [ZF is checked].
Mnemonic
JA/JNBE
JAE/JNB
JB/JNAE
JBE/JNA
JC
JE/JZ
JG/JNLE
JGE/JNL
JL/JNGE
JLE/JNG
JNC
JNE/JNZ
JNO
JNP/JPO
JNS
JO
JP/JPE
JS
Condition Tested
(CF=0) and (ZF=0)
CF=0
CF=1
(CF or ZF)=1
CF=1
ZF=1
((SF xor OF) or ZF) = 0
((SF xor OF) = 0
((SF xor OF) = 1
((SF xor OF) or ZF) = 1
CF=0
ZF=0
OF=0
PF=0
SF=0
OF=1
PF=1
SF=1
“Jump if …”
above/not below nor equal
above or equal/not below
below/not above nor equal
below or equal/not above
carry
equal/zero
greater/not less nor equal
greater or equal/not less
less/not greater nor equal
less or equal/not greater
not carry
not equal/not zero
not overflow
not parity/parity odd
not sign
overflow
parity/parity equal
sign
Not: “above” ve “below işaretsiz sayılarda ; “greater” and “less” işaretli sayılarda kullanılır.
2013-2014 Bahar Dönemi
Öğr. Gör. Dr. Muhammed ÜNAL
Arş. Gör. Ebru AYDOĞAN
Arş. Gör. Mehmet AYAN
Kısa Atlamalar
• Tüm koşullu atlamalar kısa atlamadır. Kısa atlamada hedefteki adres belleğin –128 - +127
değerleri arasında olmalıdır.
• Koşullu atlama 2 baytlık bir komuttur: İlk baytı J koşulunun işlem kodudur(opcode). İkinci
baytıda 00 ile FF arasında alabileceği değerdir.
• Bir geriye doğru atlamada ikinci bayt öteleme değerinin 2 ye tümleyenidir.
Koşulsuz Atlama
“JMP label” program akışının koşulsuz olarak hedef etikete geçtiği atlamadır.
Aşağıdaki gibi gösterimleri vardır.
1. KISA ATLAMA, “JMP SHORT label” formatıyla gösterilir. Hedef adres o anki mevcut IP’nin 128 ile +127 aralığında olabilir
2. YAKIN ATLAMA, “JMP label”. Mevcut Code Segmentin içinde atlar. Aynı kısa atlama gibi
ama farkı hedef adres o anki mevcut IP’nin +32767 ile–32768 aralığında olabilir.
3. UZAK ATLAMA, “JMP FAR PTR label” formatıyla gösterilir. Burada hem Code segment
değeri hem de IP değeri değişir.
CALL STATEMENTS
CALL Etiket
#Mevcut adresi yığına atar(PUSH) ve Etiket’ e atar.
.
.
Etiket:
.
.
Ret
#Ret komutu geldiğinde yığına atılan adresi yığıntan çeker ve o adrese
gider.
Not: Etiketten sonra herhangi bir PUSH veya POP işlemi yaparsak yığın değişeceği için ret komutu
geldiğinde program yanlış adrese geri dönecektir.
2.4 CMP KOMUTU
CMP operand1
- operand2
Sonuçlar yazılmaz sadece sonuca göre bayrak yazmaçları
değişir.(OF, SF, ZF, AF, PF, CF)
Örnek
MOV AL, 5
MOV BL, 5
CMP AL, BL ; AL-BL=0 olduğu için , ZF = 1 olacak(o zaman eşittir)
RET
2013-2014 Bahar Dönemi
Öğr. Gör. Dr. Muhammed ÜNAL
Arş. Gör. Ebru AYDOĞAN
Arş. Gör. Mehmet AYAN
3. ÇALIŞMA SORUSU
Soru: 100'den küçük 3'e ve da 2'e tam bölünebilen doğal sayıların toplamını bulan ve bu
toplamı DX yazmacına yazan program yazın.
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
Download

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