You are on page 1of 11

8086

BİLGİ TRANSFER KOMUTLARI


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.

You might also like