2. GİRİŞ/ÇIKIŞ KOMUTLARI • Bu komutlar IN ve OUT ‘ dur. • Assembly programlama dilinde, giriş/çıkış işlemlerini gerçekleştiren programların yazılması oldukça güçtür. Çünkü giriş/çıkış işlemlerinin donanımsal özelliklere sahip olmasıdır. Bunun için assembly dilini çok iyi bilen programcılar dahi, giriş çıkış işlemleri için kendi programlarını oluşturmak yerine, işletim sistemi içinde yer alan özel rutinlerden(interrupt’lardan) yararlanırlar. • IN ve OUT komutları, maksimum sayısı 65536 olan çeşitli portları kullanarak, bilgilerin bytler veya wordlar halinde transfer edilmesini sağlarlar. Transfer işlemi daha çok CPU ile çevre aygıtlar arasında gerçekleşir. IN ve OUT komutları • Seri veya paralel bağlantılı portlar ile CPU arasında veri transferi yapan IN ve OUT komutlarının genel formları aşağıda verilmiştir. • IN Akümülatör, PortNO • OUT PortNO, Akümülatör • IN komutu, numarası PortNo olarak belirtilen bir portdan bir bytelık veya bir wordlük bilgiyi alarak akümülatöre aktarır. OUT komutu ise, akümülatördeki bir bytelık veya bir wordlük bilgiyi yine PortNo olarak belirtilen porta gönderir. • IN ile alınacak veya OUT ile gönderilecek bilginin uzunluğunun ne olacağı seçilen porta bağlıdır. Transfer edilecek bilgi bir byte uzunlukta ise AL registeri, bir word uzunlukta ise AX registeri akümülatör olarak kullanılacaktır. PortNo olarak kullanılan değer sabit bir değer yada DX registeri olabilir. Sabit değer kullanılırsa değer maksimum 255 olmalıdır aksi halde DX registerini kullanmak gerekir. 3. ADRES TRANSFER KOMUTLARI Bu komutlar • LEA • LDS • LES ‘ dır. LEA komutu • Bu komut, programlarını debug kullanarak yazan programcılar için pek önemi yoktur. Daha çok assembler derleyici programı ile çalışırken yararlanılır. • Genel formu LEA Alıcı, Değişken • LEA komutu, bir bellek bölgesini temsil eden bir değişkenin offset adresini alıcı alan operandı olarak kullanılan registere aktarır. • Alıcı alan olarak kullanılan registerin 16 bit uzunluğunda bir genel amaçlı register olmak zorundadır. • Aşağıdaki iki örnekte aynı işlemi yapar. Lea AX, Sayac ;sayac adında değişken Mov AX, Offset Sayac ;sayac adında değişken LDS komutu • Bu komut da LEA gibi assembler derleyici programı kullanan programcılar için anlamlıdır. • Bu komut LEA komutuna ek olarak, istenilen değişkenin sadece offset adresini değil aynı zamanda segment adresini elde etmek için kullanılır. • Genel formu LDS Alıcı, Değişken • Alıcı alan 16 bit uzunluğunda genel amaçlı register olmalıdır. LDS komutu işlemi sırasında offset adresi alıcı alan registerine segmen adresi de DS(data segment) registerine aktarılır. • Aşağıdaki iki örnekte aynı işlemi yapar. LDS AX, Sayac MOV BX, Offset Sayac MOV AX, Seg Sayac Mov DS, AX LES komutu • Bu komut gerek genel kullanım gerekse işlev biçimi ile LDS komutundan farksızdır. • LDS komutu bir değişkenin segment adresini DX registerine aktarırken, LES komutu ES(extra segment) adresine aktarır. Offset adresi ise alıcı alan olarak belirtilen 16 bit uzunluktaki genel amaçlı bir registere aktarılır.