80×86 Assembly Dersleri 8 – 80×86 Komutları ve Komut Yapısı

80×86 Komutları ve Komut Yapısı

8086 işlemci ailesi, karmaşık komut kümeli bilgisayarların mimarisine yani (CISC’e) uygun olarak tasarlanmış olup her komut birbirinden bağımsız büyüklüklerde bellek işgal ederler. 80×86 Assembly dilinde komut satırı genel olarak şu şekilde yazılır;

  • Her satırda Etiket kullanılması şart değildir, fakat eğer kullanılmak isteniyorsa hemen ardından iki nokta (:) işareti de kullanılmalıdır ki etiket olduğunu derleyici bilsin.
  • mnemonic gerçekleştirilmek istenen işlemin ne olduğunu belirleyen sembolik işlem kodudur.
  • Birden fazla işlenen olması durumda işlenenleri virgül (,) ile birbirlerinden ayrılması gerekir. İlk işlenen hedef (destination – işlenen1) ikinci işlenen ise kaynak (source – işlenen2) dır.
  • Assembly’de açıklama satırları noktalı virgül (;) ile tanımlanır.

 

Assembly dili derleyicisi yani assembler sembolik (mnemonic) komutları işleyip, işlemciye ne tür bir işlemi, ne büyüklükteki (byte, word, vs.) ve ne tipteki (yazmaç, bellek alanı vs.) işlenen ve/veya işlenenler üzerinde gerçekleştireceğini belirleyen makine kodunu üretmekten sorumludur.

Assembly dilinde işlem yönü sağdan sola doğrudur. Yani sonuç her zaman hedef olarak adlandırılan işlenen1 üzerinde oluşacaktır.

işlenen1 <- işlenen1 işlem işlenen2

İşlenenler mutlaka aynı veri tipinde olmalıdır veya aynı tipe dönüşüm yapılmasını sağlayan bazı sözde (pseudo) komutlar kullanılarak (casting) işlem gerçekleştirilmelidir.

acc Akümülatör (EAX/AX/AL yazmaçlarından herhangi biri)
reg 8/16/32 bit’lik herhangi bir yazmaç
regb 8 bit’lik yazmaç
regw 16 bit’lik yazmaç
reg32 32 bit’lik yazmaç
sreg Herhangi bir kesim yazmacı
mem Herhangi bir bellek adresini simgeler
idata 8/16/32 bit’lik herhangi bir değer (3, 0Ah, 012EFh, ‘A’ gibi)
[..] İşaret grubu yazmaç veya göreli konum değerini gösteren sayı ile erişilen bellek içeriği
disp8 / disp16 8 bit (-128..0..127) / 16 bit (-32768..0..32767) ile ifade edilebilecek büyüklükteki bir sayı kadar ilerleme
des / src Varış işleneni / Kaynak işleneni
opr / opr # İşlenen / İşlenen 1 / İşlenen 2 / İşlenen 3
0 / 1 / x / ? / – İşlem sonucunda bayrak değeri; clear (0), set (1), işleme göre değişmiş (x), belirsiz (?), değişmemiş (-) olabilir
16p 16 bit korumalı kip

 

Aşağıdaki başlıklar gönderi olacağından ve bu gönderiler yazı yazıldıkça güncellenecektir, yine aynı şekilde menü > seriler kısmından da takip edebilirsiniz.

  • Veri Aktarım Komutları
  • Aritmetik Komutlar
    • ADD, ADC, XADD, SUB, SBB, INC, DEC, NEG, CMP, CMPXCHG, MUL, IMUL, DIV, IDIV
  • Dallanma Komutları
    • Koşullu Dallanmalar
      • Basit Koşullu Dallanma Komutları
        • JZ / JE, JNZ / JNE, JS, JNS, JO, JNO, JP / JPE, JNP / JPO
      • İşaretsiz Sayı İşlemlerine Ait Koşullu Dallanmalar
        • JB / JNAE / JC, JA / JNBE, JAE / JNB / JNC, JBE / JNA
      • İşaretli Sayı İşlemlerine Ait Koşullu Dallanmalar
        • JL / JNGE, JNL / JGE, JLE / JNG, JG / JNLE
    • Koşulsuz Dallanmalar
      • JMP, JMP FAR PTR
    • Çağırma Komutları
      • CALL, CALL FAR PTR, INT, INTO
    • Dönüş Komutları
      • RET, RETF, IRET
  • Döngü Komutları
    • LOOP, LOOPZ / LOOPE, LOOPNZ / LOOPNE, JCXZ
  • Bayraklar ile İlgili Komutlar
    • CLC, CMC, STC, CLD, STI, CLU, LAHF, SAHF
  • Mantıksal Komutlar
    • NOT, OR, AND, XOR, TEST, SETxxx, BT, BTC, BTR, BTS
  • Öteleme ve Döndürme Komutları
    • SHL, SHLD, SAL, SHR, SHRD, SAR, RCL, RCR, ROL, ROR
  • String Komutları
    • MOVSB, MOVSW, MOVSD, CMPSB, CMPSW, CMPSD, SCASB, SCASW, SCASD, LODSB, LODSW, LODSD, STOSB, STOSW, STOSD, CBW, CWD, CWDE, CDQ
  • Ön Ekler
    • REP, REPE / REPZ, REPNE / REPNZ, LOCX
  • Yığın Komutları
    • POP, POPA, POPAD, POPF, POPFD, PUSH, PUSHA, PUSHAD, PUSHSF, PUSHFD
  • Giriş / Çıkış Komutları
    • IN, INSB, INSW, INSD, OUT, OUTSB, OUTSW, OUTSD
  • Durdurma ve Bekletme Komutları
    • HLT, NOP, WAIT
  • BCD Düzenleme İçin Kullanılan Komutlar
    • AAA, AAD, AAM, AAS, DAA, DAS
  • Diğer Komutlar

Leave a Reply

Your email address will not be published. Required fields are marked *