You are on page 1of 22

EMU8086 İLE ASSEMBLY PROGRAMLAMA ÖRNEKLERİ

BÖLÜM 6: TEMEL KOMUTLAR


COM DOSYASI ÖRNEKLERİ
1.Örnek
sayilar db 2,3,5,7
sayilar2 db 4 dup(?)

sayilar dizisindeki elemanları sayilar2 dizisine kopyalama işlemini gerçekleştiren program?

2.Örnek
ad db ‘Mert’

tersAd db 4 dup(?)

ad karakter dizisindeki elemanları tersAd dizisine tersten kopyalama işlemini gerçekleştiren program?
EXE DOSYASI ÖRNEKLERİ
3.Örnek
indis db 2,0,1

sayilar db 4h,8h,0Ch

hedef db 3 dup(?)

XLATB komutunu kullanarak indis dizisinde bulunan elemanlara göre sayilar dizisindeki elemanları
hedef dizisine ekleme işlemini gerçekleştiren program?
4.Örnek
sayilar db 2,3,4,5

sayilar dizisindeki elemanları dizi içerisinde değerlerini 1 arttıran program?

BÖLÜM 7: STACK (YIĞIN)


1.Örnek
Stack üzerinde tutulan 16 bitlik 2 veriyi AX kaydedicisine çekin. Çekilen bu verileri düşük değerli 8
bitini dusukDegerli dizisine yüksek değerli 8 bitini yuksekDegerli dizisine yazdırın.
(Stack üzerinde bulunacak 1.veri=2244h, 2.veri=3366h)
BÖLÜM 8: ARİTMETİK VE MANTI KOMUTLARI
1.Örnek
Her elemanı bayt (byte) boyutunda olan toplam 4 elemanlı bir “sayilar” dizisinin her elemanının
karesini alıp “kare” dizisine ekleyen programı yazınız. (Kare dizisinin her elemanı word boyutunda
olsun.)

2.Örnek
sayilar db 2,5,4,8 dizisindeki elemanların her birini bulunduğu indis değerinden çıkartan ve fark db 4
dup(?) dizisine ekleyen programı yazınız.
3.Örnek
metin db ‘turkiye’ dizisinde bulunan her elemanı aynı dizi içerisinde büyük harf yapan programı
yazınız. (Bu işlem için mantıksal komutlardan faydalanmanız gerekmektedir.)
4.Örnek
sayilar db 14,28,18,42 dizisinde bulunan her elemanı 0-15 aralığına çeken programı yazınız. (Bu işlem
için mantıksal komutlardan faydalanmanız gerekmektedir.)

BÖLÜM 9: PROGRAM AKIŞ KONTROLÜ


1.Örnek
sayilar db 2,5,4,6 dizisinin her elemanının değerini 1 arttıran programı tekrarlı işlem yapmadan ve
LOOP komutunu kullanmadan yazınız.

2.Örnek:
8 bitlik işaretsiz iki sayının toplanması sonucunda eğer sınır değerler aşılıyorsa “tasma” isimli değişken
1 değerine ayarlansın.
3.Örnek:
sayilar db -2,1,0,-1,4 dizisinde bulunan elemanlardan negatif olanları negatif dizisine pozitif olanları
pozitif dizisine aktaran programı yazınız. (Sıfır değeri için herhangi bir işlem yapmayacak.)
4.Örnek:
ad db ‘Mert’ dizisinde bulunan değer ile girilenAd dizisinde bulunan değer karşılaştırılacak ve eşitse
“onay” değişkeni 1 değerine ayarlanacak.
BÖLÜM 10: KAYDIRMA VE DÖNDÜRME KOMUTLARI
1.Örnek
sayi db 00111000b değişkeni içerisinde kaç tane 1 değerinin olduğunu bulan programı yazınız.
Bulunan 1 değerlerinin sayısını birSayisi isimli değişkende tutunuz.

2.Örnek
01110011b 8 bitlik sayısına 8 kere kaydırma işlemi uygulayarak elde edilen her değeri 8 elemanlı
“basamaklar” dizisine aktaran programı yazınız. Ayrıca sayının mevcut değerinin kaybolmamasını
sağlayınız.
BÖLÜM 11: DİZİ (STRING) KOMUTLARI
1.Örnek
metin db “Turkiye Cumhuriyeti” karakter dizisindeki ifadeyi boşluk karakterine göre ikiye ayıran ve
ayırdığı birinci parçayı “parca1” değişkenine ayırdığı ikinci parçayı “parca2” değişkenine ekleyen
programı yazınız.
2.Örnek
Örnek1 deki örneğin aynısını farklı segmentler üzerinde gerçekleştiriniz.
3.Örnek
sayilar db 2,3,5,8 dizisinde “al” kaydedicisi içerisinde bulunan değeri arayan ve dizi içerisinde kaç kere
bulduğunu “buldundu” değişkenine ekleyen programı yazınız. Bu işlem için dizi komutlarından
yararlanın.
BÖLÜM 12: PROSEDÜRLER VE MAKROLAR
1.Örnek:
metin db “Emu8086 Assembly Programlama” dizisi içerisinde bulunan boşluk sayısını boslukSayisi
isimli değişken içerisinde tutan programı yazınız. Boşluk sayısını hesaplamak için bir fonksiyon yazınız.
2.Örnek
kaynak db 1,2,3,4 dizisindeki değerleri hedef db 4 dup(0) dizisi içerisine makro yardımıyla kopyalayın.
(Başka diziler için kopyalama yapabilecek seviyede makroyu oluşturun.)
BÖLÜM 13: KESMELER
BIOS KESMELERİ
1.Örnek
metin db “Mert” dizisindeki elemanları tek tek ekrana yazdıran programı oluşturunuz.
(İmleç varsayılan konumunda olsun ve birer birer ilerletilsin.)
2.Örnek
Kullanıcıdan aldığı 5 karakteri ekrana yazdıran programı yazınız.
3.Örnek
Kullanıcıya “Bir renk seciniz(0:mavi 1:kirmizi):” şeklinde mesaj verip girdiği değere göre ekranı
boyayan programı yazınız(Farklı bir değer girdiği zaman program sonlandırılsın).
MS-DOS KESMELERİ
1.Örnek
Bir dizi içerisindeki karakterleri alt alta ekrana yazdıran programı yazınız.
2.Örnek
Kullanıcıdan aldığı iki sayıyı toplayıp ekrana yazan programı yazınız(0-9 arasında girilebilsin).
3.Örnek
Kullanıcının adını ve soyadını farklı dizilere alan programı yazınız.
BÖLÜM 14: KLASÖR VE DOSYA İŞLEMLERİ
1.Örnek
Dosya oluşturma, dosyaya veri yazma ve dosyadaki veriyi okuma işlemlerine ait genel örnektir.

Yukarıdaki örnekte varsayılan sürücü (C dizininde varsayılan dizin ayarlanmamışsa) ve varsayılan dizin
üzerinde yani C:\emu8086\MyBuild klasörü içerisine myfile.txt dosyası oluşturulur. Daha sonra dosya
içerisine data dizisi içerisinde bulunan “ hello files! ” ifadesi yazılır. Dosya içerisinden veri okunmadan
önce imleç (işaretçi) dosya başından itibaren 7 bayt ileriye ayarlanır ve dosyadan 4 karakter okunarak
buffer dizisi içerisine “file” ifadesi eklenir. Son olarak açık dosya kapatılır.

NOT: $ ifadesi bulunduğu yerdeki adresi verir.

You might also like