Belleğin 0x1300 adresinden başlayan bir karakter dizisi olsun. Dizinin bittiğini sonundaki 00 değerleri belirtiyor olsun. Biz de bu bilgiden yaralanarak dizinin uzunluğunu bulalım ve bunu belleğe kaydedelim.
—————
org 1000
;heksadecimal 42h sayısı B harfini ifade eder. 43h C harfini ve bu şekilde devam etmektedir. örneğin: 4243h BC olarak düşünülebilir.
;Aşağıdaki komutlarla belleğe bir karakter dizisi yazdırdık.
mov cx,4243h ;
mov [0x1300],cx ;
mov cx,4445h ;
mov [0x1302],cx ;
mov cx,4647h ;
mov [0x1304],cx ;
mov cx,4849h ;
mov [0x1306],cx ;
Mov [0x1308], 0x00h ; string sonu belleğe kopyalandı
;Uzunluğu bulma
mov bx, 0000h ; karakter dizisinin uzunluğunu tutacağımız bx ‘i sıfırladık.
mov si, 0x1300 ;bellek adreslerini si ‘da tutacağız.
dongu: ; buraya dongu adlı etiket(label) kondu
mov dh, [si] ;si ‘ın gösterdiği adresteki 2 karakter dh içerisine taşındı.
inc si ;si ‘ın tuttuğu bellek adresi 1 artırıldı
inc bx ;bx 1 artırıldı.
cmp dh,00h ;dh içerisindeki karakterler ile 00 (hekzadesimal) karşılaştırıldı
jnz dongu ;eğer bir önceki komutta eşleşme olmazsa dongunun başına, olursa aşağı geçilecek
dec bx ;bx ‘teki 1 fazla değer atıldı.
mov [0x1002],bx ;bx te tutulan dizi uzunluğu 0x1002 adresine kopyalandı
hlt ;program sonlandırıldı
——————–
Aşağıdaki resimde örnek bir çalışma anını görebilirsiniz.