EMU8086 Dizideki Yazıyı Tersten Yazdırma

Emu8086 da dizideki yazıyı tersten yazdıran kodu anlatacağım. Öncelikle yazının olduğu bir diziyi ve tersini tutacağımız diğer diziyi data segmentte oluşturalım.


.model small
.stack 64
.data
isim db "furkan"
tersisim db ?

“?” işareti, bellekte boyutu belli olmayan otomatik bir dizi oluşturmayı sağlıyor. Şimdi .code kısmına geçelim ve kodlarımızı yazmaya başlayalım. Öncelikle tanımlamaları yapalım.


.model small
.stack 64
.data
isim db "furkan"
tersisim db ?
.code
mov ax,@data;      1
mov ds,ax ;       1
lea si,isim;        2
lea di,tersisim;     3
mov cx,6 ;        4
mov si,5;         5

1 numaralı kod satırlarını yazmamızın sebebi programı çalıştırdıktan sonra memory kısmından sonuca bakarken 0714:0000 adresinde dizilerimizin gözükmesi içindir.

2 numaralı kod satırında isim dizisinin başlangıç adresini si ye atadık.

3 numaralı kod satırında tersisim dizisinin başlangıç adresini di ye atadık.

4 numaralı kod satırında döngümüzün kaç defa döneceğini tanımladık. Dizi 6 elemanlı olduğu için 6 yaptık.

5 numaralı kod satırında si’nin son elamanına ulaşmak için si’yi 5 yaptık. Dizilerde başlangıç sıfır kabul edildiği için 5 yazdık.

Şimdi döngümüzü kuralım.


.model small
.stack 64
.data
isim db "furkan"
tersisim db ?
.code
mov ax,@data
mov ds,ax
lea si,isim
lea di,tersisim
mov cx,6
mov si,5
don:mov bl,[si]
mov [di],bl
dec si
inc di
loop don

“[si]” yazarak si’nin içindeki elemana ulaşmış olduk. Daha sonra si yi bl ye atadık. Bl yi de di nin içine atadık. Dec si diyerek si’yi bir azalttık. İnc di diyerek di’yi bir arttırdık. Loop don diyerek döngünün cx kadar don etiketine dönmesini sağladık.

Son olarakta programın bitmesi için gerekli kodları ekleyip programımızı tamamlamış olalım.


.model small
.stack 64
.data
isim db "furkan"
tersisim db ?
.code
mov ax,@data
mov ds,ax
lea si,isim
lea di,tersisim
mov cx,6
mov si,5
don:mov bl,[si]
mov [di],bl
dec si
inc di
loop don

mov ah,4ch
int 21h
end

Programı run deyip çalıştırdıktan sonra view menüsünden memory kısmına tıklıyoruz. Daha sonra sol üstte rakam yazan yere 0714:0000 yazıyoruz ve aşağıdaki çıktıyı elde ediyoruz.

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