10h kesmesi, 16h kesmesi, loop, push, pop kullanımı.
Ondalıklı sonucun sadece integer kısmını alır. Ondalık kısım için ekstradan kod yazmamız gerekli.
org 100h
;klavyeden 4 tane rakam alacagimiz icin
;loop dongumuz icin CX'e 4'u atadik
mov CX, 4
;dongu baslangic yeri
sayici:
;16h kesmesi ve AH'a atadigimiz
;0 fonksiyonu ile klavyeden AL'e rakam alinir
mov AH, 0
int 16h
;push komutu ile AX'deki bilgimizi
;stacka aliyoruz (push komutu operandi word olmali!)
push AX
;10h kesmesi ve AH'a atadigimiz
;0e fonksiyonu ile AL'deki Ascii degeri ekrana yazdiriyoruz
mov AH, 0eh
int 10h
;AL'ye 1 bosluk atiyoruz ve
;bunu ekrana yazdirarak
;girdigimiz rakamlarin arasinda
;1 bosluk olmasini sagliyoruz
mov AL, ' '
mov AH, 0eh
int 10h
loop sayici ;dongumuz bitti, her dongude CX 1 azalacak
;CX degeri 0 olana kadar
;bu dongu tekrarlayacak
;stack da suan 4 deger var
;pop komutu ile stackdan deger cagiracagiz
;ilk cagirilan deger, stacka son gonderilen deger olacaktir.
pop AX ;klavyeden alinan 4. deger AX'e geldi
pop BX ;klavyeden alinan 3. deger BX'e geldi
add AX, BX ;AX ve BX toplandi, toplam AL'de
pop BX ;klavyeden alinan 2. deger BX'e geldi
add AX, BX ;AX ve BX toplandi, toplam AL'de
pop BX ;klavyeden alinan ilk deger BX'de
add AX, BX ;AX ve BX toplandi, toplam AL'de
mov AH, 0 ;AH'i sifirliyoruz
mov BL, 04h ;4 rakam girdik, ortalamayi bulmak icin BL'e 4 attik
div BL ;AX'i BL'e bolduk, kalan AH'da, bolum AL'de
mov AH, 0eh ;son olarak sonucu 10h ve 0eh fonksiyonu ile ekrana yazdiriyoruz
int 10h
ret




