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