EMU8086 Kullanıcıdan Alınan Veriyi Diziye Atama

EMU8086’da Ekrana girilen ad değerini diziye atamayı ve yazdırmayı göreceğiz. Öncelikle ekrana “ad giriniz” yazısını oluşturalım. Daha sonra ad girildikten sonra bu adı atayacağımız diziyi oluşturalım.

.model small
.stack 64
.data
	Yaz db “Ad Giriniz:$” 
	Ad db 6dup(00)

Yaz isimli değişkende “Ad Giriniz” yazdıktan sonra $ işareti koyarak yazının bittiğini belirtmiş olduk. Benim ismim 6 harf olduğu için 6 karakterlik bir dizi oluşturdum siz kendinize göre düzenleyebilirsiniz.

Önce tanımlamalarımızı yapalım.

.model small
.stack 64
.data
      yaz db "AD:$"
      ad db 6 dup(00)
.code
   mov ax,@data
   mov ds,ax
   lea si,ad
   mov cx,6
 

Code içindeki ilk iki satırı çıktının 0714:0000 adresinde gözükmesi için yazdık. Daha sonra si ye ad dizisinin başlangıç adresini atadık. Son olarak döngü değişkeni olan cx e adımızın uzunluğu olan 6 değerini atadık.

Ekrana “Ad giriniz:” yazısını yazdıralım.

.model small
.stack 64
.data
      yaz db "AD:$"
      ad db 6 dup(00)
.code
   mov ax,@data
   mov ds,ax
   lea si,ad
   mov cx,6

  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.

Şimdi girilen değeri diziye atayalım.

.model small
.stack 64
.data
      yaz db "AD:$"
      ad db 6 dup(00)
.code
   mov ax,@data
   mov ds,ax
   lea si,ad
   mov cx,6

   mov ah,09h
   lea dx,yaz
   int 21h   
   
   diziyeyaz:
   mov ah,01h
   int 21h 
   mov [si],al 
   inc si
   loop diziyeyaz

İnt 21h satırında basılan tuşun ASCII kodu AL’ye alınmış oldu. Mov komutuyla al deki değer diziye atandı ve si bir arttırıldı. Cx değerine 6 dediğimiz için diziyeyaz döngüsü 6 kere çalıştı ve girilen değer diziye eklenmiş oldu.

Son olarak diziyi ekrana yazdıralım ve programımızı tamamlayalım.

.model small
.stack 64
.data
      yaz db "AD:$"
      ad db 6 dup(00)
.code
   mov ax,@data
   mov ds,ax
   lea si,ad
   mov cx,6

   mov ah,09h
   lea dx,yaz
   int 21h   
   
   diziyeyaz:
   mov ah,01h
   int 21h 
   mov [si],al 
   inc si
   loop diziyeyaz

   mov cx,6
   lea si,ad
   bas:
   mov ah,02h
   mov dl,[si]
   int 21h   
   inc si
   loop bas 
  
   mov ah,4ch
   int 21h
   end
 

Cx değerimizi 6 olarak tanımladık çünkü dizi boyutumuz 6 olduğu için. Si’ye tekrar ad dizisinin başlangıç adresini atadık. Daha sonra ah,02h komutuyla dl’ye attığımız dizi elemanlarını ekrana tek tek yazdırdık. Mov ah,4ch komutuyla programı sonlandırdık.

EKRAN ÇIKTISI:

Furkan Aktaş

Bilgisayar Mühendisiyim. Microsoft MCSA Web Applications Sertifikasına Sahibim. Aktif iş hayatımda Full Stack .Net Developer olarak çalışmaktayım.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir