17 Ekim 2014 Cuma

Sistem Durum Flagları ve Dallanma Komutları


Asm-One 1.44 sürümünü kullanmayı uygun gördüm. Aminet'ten aratıp indirebilirsiniz.

flag.asm

;Karsilastirma sonrasi sistem durum flaglarinin durumu ve
;dallanmalarina iliskin ornekler

move.b #$18, d0

cmp.b #$28, d0
beq.b l0001

; d0 #$28 ile karsilastirilirsa 
; esit oldugundan
; z=1 n=0 c=0 flag
; beq ile l0001'e dallanir

bmi.b l0002

bpl.b l0003

; bcc.b l0002

; bcs.b l0003


rts

l0001:
move.b #$99, result
rts
l0002:
move.b #$9a, result
rts
l0003:
move.b #$9b, result
rts

result: dc.b $00


Yukarıdaki örnekten yola çıkarsak;

D0 data registerine değer vermek için

move.b #$28, D0

komutu kullanıldı. Değer ile oynayarak debuggerda ilgili flag değişimleri incelenebilir.

D0 data registerinin değeri #$28 değeri ile karşılaştırıldığındaki flagların durumlarına göre ilgili labele dallanmasını inceleyelim

Eğer D0 data registeri $28'e eşitse Z=1 olur. Z=1 ise BEQ ile başlayan dallanma komutunun gösterdiği labele gider

Eğer D0 data registeri $28'den küçük bir değer ise, N ve C flagları 1 olur. C=1 olduğundan BCS ile başlayan dallanma komutunun gösterdiği labele gider. N=1 olduğundan BMI ile karşılaşsaydı bu komuta ait labele gidecekti.

Eğer D0 data registeri $28'den büyük bir değer ise hiçbir flag set olmaz. BPL veya BCC komutu ile başlayan labele dallanma olur.



Hiç yorum yok:

Yorum Gönder