Murat ERDEM - Personal Research Blog




Assembly Programing - 0x06: Döngüler

August 27, 2020

Her programlama dili gibi assembly programlama yaparken de döngüler işimizi çok kolaylaştırmaktadır. Bazı döngü komutları ve görevleri aşağıda verilmiştir.


Komut Açıklaması
loop eğer cx değeri 0 değilse, cx değerini 1 azaltır ve ilgili etikete zıplama yapar.
loope eğer cx değeri sıfır değil ve zf 1 ise etikete zıplama yapar, cx değerini bir azaltır
loopne eğer cx değeri sıfır değil ve zf 0 ise etikete zıplama yapar, cx değerini bir azaltır
loopnz eğer eğer cx 0 değilse ve zf 0 ise zıplama yapar, cx değerini bir azaltır
loopz eğer eğer cx 0 değilse ve zf 1 ise zıplama yapar, cx değerini bir azaltır
jcxz eğer cx 0 ise zıplama yapar

Bu kodlar ile örnek olarak 1 den 10 a kadar olan sayıların toplamını bulan bir kod parçası yazmak istersek aşağıdaki gibi yazabiliriz.

       
    
        mov cx,10
    
        topla:
            add ax,cx
            loop topla
    

Programda ihityaca göre aşağıdaki gibi karşılaştırmalar da yapılabilir. örnek olarak aşağıda döngünün 100 adet dönmesi gerekiyorken cx 50 olduğunda break komutu gibi döngüyü sonlandırmak için loopne komutunu kullanabiliriz.

       
    
        mov cx,100
    
        dongu:
            cmp cx,50
            loopne  dongu
            hlt