80×86 Assembly – MOVSX Komutu

MOVSX Komutu

MOVSX komutu 8 bitlik değeri, işareti ile birlikte 16 veya 32 bitlik alana, 16 bitlik değeri işareti ile birlikte 32 bitlik alana yerleştirir. İşaret en anlamlı bitin, yüksek anlamlı byte veya word boyunca tekrar edilmesi ile aktarılmaktadır. Genel olarak ilk işlenen, ikinci işlenenden en az bir üst boyutta olmalıdır. Böylece ikinci işlenende bulunan değer daha üst büyüklüğe işaretli sayı olarak atanmış olur.

Bu komut 32 bit ve üstü işlemcilerde kullanılmamaktadır.

MOVSX -> Move with Sign Extention

  • Desteklenen mimarilar: 80386/80486

80×86 Assembly serisini sıralı şekilde takip etmiyor veya aradan zaman geçtiği için unutmuş olabilirsiniz. sreg, mem gibi deyimleri 8. derste hangi anlamlara geldiklerini belirten bir tablo oluşturmuştuk. Bu tabloyu farklı bir sayfa da açık tutmanızda fayda var.

Olası MOVSX işlenen kombinasyonları;

Komut İşlenen 1 İşlenen 2
MOVSX reg reg
MOVSX reg mem

 

MOVSX Komutu Örnekleri

AL yazmacındaki 8 bitlik değeri 32 bite uzatarak EAX yazmacına aktarır. Bu işlem sırasında AL yazmacının işaret biti (7. bit), 8’den 31. bite kadar tekrarlanır. Mesela; AL 89H olduğunu varsayarak bu işlemi uyguladığımızda, EAX 00000089H olacaktır.

ESI yazmacındaki 16 bit değeri 32 bite uzatarak EDI yazmacına aktarır. 15. bit ile ifade edilen işaret, 16’dan 31. bite kadar tekrarlanacaktır.

DL yazmacındaki 8 bitlik değeri 16 bite uzatarak CX yazmacına aktarır. Mesela; DL 24H olduğunu varsayarak bu işlemi uyguladığımızda, CX 0FF24H olacaktır.

Leave a Reply

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