Murat ERDEM - Personal Research Blog




Assembly Programing - 0x03: Flag

August 25, 2020

Bu yazımızda assembly programlamada işlenen komutun sonucu hakkında bilgi veren flaglara bakacağız.

Assembly flaglar bir 32 bitlik bir registerde tutulur. bir komutun sonunda bu flag değerleri set edilir. Bu flaglara bakılarak if blokları gibi yapılar çalıştırılır. Flag registerinin yapısşı aşağıdaki gibidir.

Carry Flag (CF)

Toplama işleminde elde, çıkarma işleminde borç ortaya çıkıyorsa cf 1 olarak set edilir. Kaydırma işlemlerinde MSB yada LSB bitinden düşen biti tutar. Ayrıca çarpma işlemlerinde sonuç göstericisi gibi hareket eder. Diğer durumlarda 0 durumundadır.

Parity Flag (PF)

Yapılan bir aritmetik işlem sonucunda sayının ikilik tabanındaki karşılığında 1 sayısı çift ise 1 tek ise o olarak set edilir.

Auxiliary Carry Flag (AF)

işaretsiz sayılar için 4 bitlik değer üzerinde taşma olduğunda 1 olarak set edilir.

Zero Flag (ZF)

Bir işlemin sonucu o ise zf 1 olarak set edilir, diğer durumlarda 0 dır.

Sign Flag (SF)

Yapılan aritmetik işleminin sonucu negatif ise sf 1 olarak set edilir.

Trap Flag (TF)

Debug işleminde komutların adım adım işlenmesi için kullanılır tf 1 olarak set edildiğinde komutlar adım adım işlenir.

Interrupt Enable Flag (IF)

IF 1 olarak set edildiğinde işlemci harici cihazlardan gelen kesmelere izin verir.

Direction Flag (DF)

Veri işleme işlemlerinde hareketin ileri yönlü (küçük adresten büyük adrese) yada geri yönlü (büyük adresten küçük adrese) olacağının kararını verir. DF 1 olarak set edilmiş ise geri yönlü, 0 olarak set edilmiş ise ileri yönlüdür.

Overflow Flag (OF)

Yapılan işlem sırasında herhangi bir hata ile karşılaşılırsa yada bellek taşması yaşanırsa OF 1 olarak set edilir.

I/O Privilage Level (IOPL)

korumalı mod işleminde I/O muafiyet düzeyinin seçilmesinde kullanılır. Eğer muafiyet düzeyi yüksek seçilmiş ise yada IOPL den daha güvenilirse I/O cihazı engele takılmadan çalışır.

Nested Task (NT)

Korumalı mod işleminde o anki görevin başka bir görev ile iç içe geçmesi durumunda NT 1 olarak set edilir.

Resume Flag (RF)

Debug işlemlerinde bir sonraki komuta devam edilmesi kontrolünde kullanılır.

Virtual Mode (VM)

Korumalı mod işleminde sanal mod seçilmesinde kullanılır. Sanal mod DOS sisteminde belleğin parçalara ayrılmasını sağlar.