Tweet

Makine Komutlarının İncelenmesi

Makine Komutlarının İncelenmesi

Her makina komunun firma tarafından belirlenmiş biçimleri bulunmaktadır.Bir komut öğrenilirken bütün bu biçimlerin öğrenilmesi gerekir.Komutların açıklamasında kullanılacak kısaltmalar ise şunlardır;[...]

sreg : Segment Register
reg : Register
reg/mem : Register yada Memory
sabit : Sabir bir sayı


MOV KOMUTU

Bu komut register ve memory arasında transfer işleminde kullanılmaktadır..

Biçimleri ise şunlardır..

reg <- -> reg/mem
reg/mem <- -> sabit
sreg <- -> reg/mem


Not:

Bir işlem yapılacaksa ilk tercih edilecek register AL ya da AX olmalıdır.Nedeni ise işlemci eğer operand AL ya da AX ise bazı komutları daha etkili çalıştırmaktadır.Doğrudan segment register'a sabit atılmamalıdır..

Yani ;

CODE:
MOV SS, 1234   yerine ;

CODE:
MOV AX, 1234
MOV SS, AX yapılabilir..


Mov makine komutu hiçbir flah register'ını etkilememektedir.Bellekteki istenilen bir bölgeyi görüntülemek için bellek penceresine gelinir, mouse sağ click yapılarak goto seçilir.Orada ise şunlar geçerlidir;

*Yalnızca offset
Sreg:offset
Segment:offset


Hatırlatma

Hex sistemde alfabetik karakterlerle başlayan sayılar değişken isimleriyle karşılaşabileceği için başına 0 eklenerek girilmelidir.

Örnek olarak ;

FC10 şeklinde değil -->> 0FC10 biçiminde yazılmalıdır..

ADD KOMUTU

Biçimleri

reg <- -> reg/mem
reg/mem <- -< sabit


Örnek :

CODE:
MOV AX,BX
MOV AX,[SI]


Bu komutun etkili olduğu bayraklar ise ;

AF,CF,OF,PF,ZF bayraklarıdır..

ADC KOMUTU

Biçimleri

reg <- -> reg/mem
reg/mem <- -> sabit


Mikroişlemcilerin hemen hemen hepsinde bu işlemi yapan bir toplama komutu vardır.ADD komutundan farklı olarak iki operandın toplamından başka birde CF bayrağınıda toplamaktadır.Bu komut yardımıyla işlemcinin register uzunluğundan büyük iki tamsayı toplanabilir.Böylelikle 16 bit sistemde 32 bitlik iki sayı önce düşük anlamlı WORD değerleri ADD komutuyla , sonra yüksek anlamlı byte'ları ADC komutuyla toplanabilir.

Örneğin:

Dos altında C'de iki long sayıyı topladğımızda işlemler aşağıdaki gibi yapılacaktır..

CODE:
long a = 0x12345678,6 = 0x87654321;

DS:200 12345678
DS:204 12345678
MOV AX,[200]
ADD AX,[204]
MOV[208],AX
MOV AX,[202]
ADC AX,[206]
MOV[20A],AX


Not: Belleğin istediğimiz bir bölgesine değer girmek için mouse bellek bölgesine getirilip click yapılır ve istenilen sayılar klavyeden girilir..


thecoders.net | Oguzz


Oguzz
oguz@thecoders.net
21 Kasim 2008 21:25

İlgili Olabilecek Makaleler


Yorumlar (0)




Ziyaretçi olarak yorum yazamazsınız. Üye olmak için tıklayın Üye iseniz giriş yapın.



MENÜ » FORUM
Menü » Takip et
RSS Facebook Twitter Friendfeed
Sık Kullanılanlar Google Yahoo Live
Menü » Paylaş
E-Posta ile gönder Twitter Facebook Friendfeed
Buzz Stumbleupon Delicious Digg