Assembly String İşlemleri

C

ChangeForGiving

Thread Starter
Banned Member
Joined
Dec 2, 2019
Messages
269
Reaction score
4
Location
REALİTY KİNGDOM
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.
 
SPAM IS FORBIDDEN!
  • SPAMMERS ARE BANNED FROM THE FORUM AND CANNOT USE ANY OF THE CHEATS
  • For example: thanks, thx, very good, asdqwe, working, ty and so on!
  • For example: Writing the same message over and over. thanks, thx and so on!
  • Copying and copying someone else's message is prohibited.
  • It is forbidden to send messages to increase the number of comments on threads that you have no knowledge of.
  • Write your own opinion when commenting!
  • If you see spam message, please let us know with the REPORT button!

Theme editor

Top Bottom