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.