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.
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.
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.
işaretsiz sayılar için 4 bitlik değer üzerinde taşma olduğunda 1 olarak set edilir.
Bir işlemin sonucu o ise zf 1 olarak set edilir, diğer durumlarda 0 dır.
Yapılan aritmetik işleminin sonucu negatif ise sf 1 olarak set edilir.
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.
IF 1 olarak set edildiğinde işlemci harici cihazlardan gelen kesmelere izin verir.
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.
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.
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.
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.
Debug işlemlerinde bir sonraki komuta devam edilmesi kontrolünde kullanılır.
Korumalı mod işleminde sanal mod seçilmesinde kullanılır. Sanal mod DOS sisteminde belleğin parçalara ayrılmasını sağlar.