概要
インタープリタを作ってみた。
avrインタープリター書いてみた。
アセンブラで数値表示bin2ascii書いてみた。
考え方
8bitなので、0から255を表示する。
100で、割れるなら、割って、カウント
もう一回、やる。
カウントに0x30足して、出力。
10で、割れるなら、割って、カウント
9回、やる。
カウントに0x30足して、出力。
残った数に0x30足して、出力。
レジスタ17、18、19は、破壊する。
入力は、レジスタ16。
サンプルコード
avr.ldi(16, 255)
avr.ldi(17, 0x00)
avr.ldi(19, 0x30)
avr.cpi(16, 100)
avr.brcc(2)
avr.inc(17)
avr.subi(16, 100)
avr.cpi(16, 100)
avr.brcc(2)
avr.inc(17)
avr.subi(16, 100)
avr.cpi(17, 0x00)
avr.breq(2)
avr.add(17, 19)
avr.out(0, 17)
avr.ldi(17, 0x00)
avr.ldi(18, 0x00)
avr.cpi(16, 10)
avr.brcc(2)
avr.inc(17)
avr.subi(16, 10)
avr.inc(18)
avr.cpi(18, 0x09)
avr.brne(-7)
avr.add(17, 19)
avr.out(0, 17)
avr.add(16, 19)
avr.out(0, 16)
成果物
以上。