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