今度は、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)