ワンボードマイコンをつくろう!(パソコンの原点はここから始まった)
TK80ソフトコンパチブル!8080、Z80マシン語からBASICまでこれ1台でこなせます
当記事は2009年11月から「TTLでCPUをつくろう!」というタイトルの もとにほとんど毎日連載をしてきたものを再編集したものです。 |
2011.7.7 前へ 次へ 目次へ戻る ホームページトップへ戻る |
☆ルート計算プログラム ND80ZVをご購入いただいたお客様からTK−80応用プログラムを送っていただきました。 プログラムを解析する過程でND80ZV組立キットに附属しているZ80アセンブラ、Z80逆アセンブラを使います。それらのプログラムの使用例としても参考になると思います。 |
[第117回]
●ルート計算プログラム(TK−80応用プログラム)(その5)
前回はTK−80用のルート計算プログラムで使われている、減算用レジスタに2を加算するサブルーチンの動作を確認するために、そのサブルーチンだけを取り出してブレークポイントを設定して少しずつ実行するところを、はじめの少しだけ説明して終わってしまいました。
今回はその続きです。
前回はアドレス8009でブレークさせるため、
bp 8009
と入力したあと、
rt
を入力して、そこでブレークしてレジスタ表示されたところまで説明をしました。
そこまでのところでは、まず99に02が加算されてAレジスタの値が9Bになりました。
まだ十進数の加算ではなくて2進数の加算になっています。
そのあとDAAが実行されて、Aレジスタの値が十進数加算99+02の結果に正しく補正されて、01になりました。
また上位桁に桁上げがあることを示すキャリーフラグ(右端のC)がセットされて1になっています。
もういちど、プログラムリストをお見せします。
8000 0603 HIKUSUADD2:LD B,03 8002 21B382 LD HL,HIKUSU78 8005 7E LD A,(HL) 8006 C602 ADD A,02 8008 27 DAA 8009 77 LD (HL),A 800A 2B HIKUSUADD2_2:DEC HL 800B 7E LD A,(HL) 800C CE00 ADC A,00 800E 27 DAA 800F 77 LD (HL),A 8010 05 DEC B 8011 C20A80 JP NZ,HIKUSUADD2_2 8014 C9 RET |
>bp 800c >rt A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC 9911 0306 4FCD 82B2 0044 0000 0000 0000 800C F7FA 0000 F1A1 FF 00010001 |
>bp 800e >rt A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC 9A88 0306 4FCD 82B2 0044 0000 0000 0000 800E F7FA 0000 F1A1 FF 10001000 |
>bp 800f >rt A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC 0055 0306 4FCD 82B2 0044 0000 0000 0000 800F F7FA 0000 F1A1 FF 01010101 |
>bp 8011 >rt A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC 0003 0206 4FCD 82B2 0044 0000 0000 0000 8011 F7FA 0000 F1A1 FF 00000011 |
>bp 800c >rt A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC 0903 0206 4FCD 82B1 0044 0000 0000 0000 800C F7FA 0000 F1A1 FF 00000011 |
800A 2B HIKUSUADD2_2:DEC HL 800B 7E LD A,(HL) 800C CE00 ADC A,00 800E 27 DAA 800F 77 LD (HL),A 8010 05 DEC B 8011 C20A80 JP NZ,HIKUSUADD2_2 |
>bp 800e >rt A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC 0A08 0206 4FCD 82B1 0044 0000 0000 0000 800E F7FA 0000 F1A1 FF 00001000 |
>bp 800f >rt A F B C D E H L A'F' B'C' D'E' H'L' PC SP IX IY I SZ H PNC 1010 0206 4FCD 82B1 0044 0000 0000 0000 800F F7FA 0000 F1A1 FF 00010000 |