Assembly String İşlemleri

Assembly String İşlemleri

Assembly String İşlemleri

Assembly String İşlemleri

 

String (karakter dizisi) komutları bellekte blok halinde byte , word ve doubleword verileri üzerinde çalışmada kullanılır.

Bir dizi verinin string olabilmesi için belli özelliklerde tanımlanması gerekir. Tek bir veri string olarak kullanılamaz.

Dizi        DB 200 DUP (‘*’)

Liste      DW 10 DUP (0)

Text       DW ‘Bilgisayar Muhendisligi’

Bos        DW ‘             ‘

String tanımlanırken byte ve word (üst işlemcilerde doubleword) tanımlaması yapılabilir.

MOVSB/MOVSW              Bellekteki byte/word veriyi bir yerden başka bir yere kopyalar.

LODSB/LODSW                 Bellekten byte olarak AL’ye, word olarak AX’e veri yüklemeye yarar.

STOSB/STOSW                  AL veya AX’teki veriyi bellekte saklamaya yarar.

CMPSB/CMPSW               Bellekteki byte/word verileri karşılaştırmaya yarar.

SCASB/SCASW                  AL veya AX’teki değeri bir bellek içeriğiyle karşılaştırmaya yarar.

MOVSB/MOVSW              komutu bellekteki bir gurup verinin başka bir yere kopyalanmasını sağlarken, aynı sırada kopyalanmasını sağlar. Yani veriler soldan sağa veya sağdan sola alınarak aynı sırada başka bir yere kopyalanır

String komutları genellikle iki operanda ihtiyaç duyar, fakat burada operand komutun bir parçası gibi düşünülmez. Bunun yerine işlemci otomatik olarak değerleri belirli kaydediciler üzerinde kullanır. Kaydedici olarak AL ve AX (32bitlik işlemcide EAX), kaynak veya hedef bellek alanı olarak SI ve DI indis kaydedicileri kullanılır.

Tekrarlama Takıları

String işlemlerinde kullanılan bazı komutlar kullanıldıklarında sayıcı olarak CX’in kullanılması gerekir. REP ile başlayan bu takılar komutun önünde kullanıldıklarında, CX kaydedicisinin değeri otomatik olarak azalarak komutun tekrarlanmasını sağlarlar.  Tekrarlama takıları kullanılırken ZF (sıfır bayrağı) etkilenir.

REP

REP ön takısı string komutlarının hemen önüne konularak o komutun CX=0 olana dek işlemesini sağlarlar.

MOVSB, MOVSW, LODSB, LODSW, STOSB, STOSW komutlarının önünde kullanılır, komutlar her işlediğinde CX değeri 1 azalır. İşlem CX=0 olana dek devam eder.

REPE/REPZ        

REP gibi işlem yapar, CMPSB, CMPSW, SCASB, SCASW komutlarıyla beraber kullanılır. CX=0 olana dek ZF=1 olduğu sürece devam eder.

REPNE/REPNZ

REP gibi işlem yapar, CMPSB, CMPSW, SCASB, SCASW komutlarıyla beraber kullanılır. CX=0 olana dek ZF=0 olduğu sürece devam eder.

Yön Bayrağının Ayarlanması

String komutlarında stringin okunup kaydedilmesinde DF’nin (Direction Flag-Yön bayrağı) değeri önemlidir. DF’nin değerine göre SI ve DI indis kaydedicileri her tekrarda ya artacak ya da azalacaktır. Bu nedenle DF’nin işlemden önce set edilmesi gerekebilir. Bu durumda DF’yi set eden komutlar kullanılır.

CLD        DF=0 yapar, CMPSB, CMPSW, LODSB, LODSW, MOVSB, MOVSW, STOSB, STOSW komutlaryla birlikte her tekrarda SI ve DI indisçileri artarak devam edecektir.

STD        DF=1 yapar, CMPSB, CMPSW, LODSB, LODSW, MOVSB, MOVSW, STOSB, STOSW komutlaryla birlikte her tekrarda SI ve DI indisçileri azalarak devam edecektir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir