追加したjnc命令でLチカ

今度は、hlt命令を廃止してjnc (jump if no carry)命令を追加する -で追加したjnc命令を使ってLチカをしてみる。ビジーループ自体は2命令で済む。もっと遅くしたい場合はnop命令を挟む。nopも4クロックを要する。

F_CPU = 10E3
DELAY = 0.5 # sec
LOOPS = int(DELAY * F_CPU / 8)

LED = r0
DEC = r1
COUNTER = r2

_[0] = ldl(DEC, 1) # 減分をセット

_[1] = ldl(LED, 0xFF) # ledを点灯
_[2] = out(LED)

_[3:5] = ld_hl(COUNTER, LOOPS)   # ループ回数をセット
_[5] = sub(COUNTER, DEC)         # ループ回数をデクリメントし、
_[6] = jnc(5)                    # ループ回数が0を下回るまでループを繰り返す。

_[7] = ldl(LED, 0) # ledを消灯
_[8] = out(LED)

_[9:11] = ld_hl(COUNTER, LOOPS)   # ループ回数をセット
_[11] = sub(COUNTER, DEC)         # ループ回数をデクリメントし、
_[12] = jnc(11)                   # ループ回数が0を下回るまでループを繰り返す。

_[13] = jmp(1)