EMU8086 Klavyeden Girilen Sayıları Toplama
EMU8086’da Klavyeden girilen sayıları diziye atıp daha sonra bu sayıların toplamını BL’de tutan bir program yazacağız. Öncelikle ekrana “Sayı giriniz” yazısını oluşturalım. Daha sonra girilen sayıları tutacak diziyi tanımlayalım.
.model small .stack 64 .data yaz db “Sayi Giriniz:$” dizi db 4dup(00)
Yaz isimli değişkende “Sayı Giriniz” yazdıktan sonra $ işareti koyarak yazının bittiğini belirtmiş olduk. Dizimizi 4 elemanlı olarak tanımlıyoruz. İsteğe göre değiştirebilirsiniz.
Tanımlamalarımızı yapalım.
.model small .stack 64 .data yaz db “Sayi Giriniz:$” dizi db 4dup(00) .code mov ax,@data mov ds,ax lea si,dizi mov bx,0000 mov cx,4
Code içindeki ilk iki satırı çıktının 0714:0000 adresinde gözükmesi için yazdık. Daha sonra si ye dizinin başlangıç adresini atadık. Sayıların toplamını BL’de tutacağımız için BX’i sıfırladık. Son olarak döngü değişkeni olan cx e adımızın uzunluğu olan 4 değerini atadık.
Ekrana “Sayı giriniz:” yazısını yazdıralım.
.model small .stack 64 .data yaz db "Sayi Giriniz:$" dizi db 4 dup(00) .code mov ax,@data mov ds,ax lea si,dizi mov bx,0000 mov cx,4 mov ah,09h lea dx,yaz int 21h
Hangi değeri yazdırmak istiyorsak onu Dx’e atayıp mov ah,09h komutuyla ekrana yazımızı yazdırıyoruz.
Son olarak elemanları diziye atayıp BL’de toplamlarını gösterelim.
.model small .stack 64 .data yaz db "Sayi Giriniz:$" dizi db 4 dup(00) .code mov ax,@data mov ds,ax lea si,dizi mov bx,0000 mov cx,4 mov ah,09h lea dx,yaz int 21h don: mov ah,01h int 21h sub al,48 mov [si],al add bl,[si] inc si loop don mov ah,4ch int 21h end
Klavyeden girilen sayı ASCII kodu olarak tutulur. Sub komutuyla ASCII kodunu tuşun sayısal değerini almak için yazdık. Mov si,al komutuyla klavyeden girilen sayıları diziye atıyoruz. Add komutuyla dizideki değerleri bl’de toplatıyoruz. İnc si komutuyla si’yi bir arttırıyoruz. Loop don komutuyla döngü 4 kez çalışır. Döngü bitince Mov ah,4ch komutuyla programı sonlandırdık.
EKRAN ÇIKTISI: