こんにちは〜、8/1 今日は港まつり・夜は花火があがります、会場への道路脇に住んでいるので、夕方からの
大渋滞は見ものです!?。
現在まだお昼なので、そうでもないですが、15時・16時になると・・・。
知り合いは会場近くに住んでいますが、歩いて10〜15分のところ、車だと帰りは2時間くらい掛かるって言ってたな〜。
私は部屋でインターネット中継観ます、でも実物をリアルで観るほうが、音とともに迫力は大違いなんだけどね!。
今は日本全国各地で、花火大会は開かれていますが、観てみたければ、『三津浜 港まつり 花火 2026』などで
検索すれば見つかるでしょう、日が沈んでからなので、時間は19:30〜21:00位じゃないかな〜??。
完全にタイトル詐欺で始まった、”今更 Z80マシン語 #6” 今日のお題は『定型句的』な事について幾つか書いてみます。
例1 Aレジスタは8ビット計算の主役です、ADD A,B (A=A+B)のニーモニックは有りますが、ADD B,C は無い。
完全に覚えている訳ではないので、確認しましたが、合っていました・・、8ビットの演算はAレジスタに対してのみ
のようです、最近のCPUだとレジスタは多いので、この制限はないのだと思います?。
例2 上記の制限から、演算前にAレジスタをクリアする(0にする)ことも多いと思われますが、この場合XOR A,A
など書くことが多いです、LD A,0 でもAレジスタを0に出来ますが、これだとマシン語では 3E 00 の2バイト必用です、
ですが、XOR A,Aだと1バイトで済む上、実行速度も早いはずです。
例3 特定回数のループを実現する場合、ループ数のカウンタには、Bレジスタがよく使われます、これはBレジスタを
カウンタとした専用の命令、DJNZ (デクリメント・ジャンプ・ノンゼロ)命令が備わっているからです。
他のレジスタをカウンタ(ループの)に使っても出来ますが、特別な事情のない場合、Bレジスタを使います。
他にも色々有ると思いますが、思いつかないので?、本日はこの程度にしておくことにします。
それではまた次回まで・・。
2026年08月01日
2026年07月30日
今更 Z80マシン語 #5
こんにちは、毎日暑いですね!。
こんな暑い季節に、お勉強?なんて出来な〜い、ってことです?、
Z80インストラクションコード(ニーモニックコード)見て、Print文もFor文もIf文無いじゃないか!、こんなのでどうやって
プログラムしろって言うんだ!?、って思いましたよね?。
私は入門当初そう思いました、レジスタに数値をセットしたり、コピーしたりで一体どうしろっていうんだ〜!。
って思ったものです、BASICで覚えた命令みたいなのは無いのか?、解説されている本を読んでみても、ロードだのストアだの
フラグだののカタカナ語ばかり・・。
ニーモニックコード眺めて沢山の種類の命令が用意されているのは、解りましたが全く意味が解りませんでした。
こんなまま、何ヶ月かまったく理解は進みませんでした・・。
未だに全て理解できてる訳でもないんですが、ある程度の行数のコードを書けば一定の仕事(操作)を行うことは出来るのが
解ってきました・・。
BASICのダイレクトモードで、Print 1+2 みたいな簡単な(単純な)ことならなんとか理解できてきました。
上の例なら
ニーモニック BASIC風
LD A,1 A=1
LD B,2 B=2
LD HL,8000h HL=$8000
ADD A,B A=A+B
LD (HL),A POKE $8000,A
みたいに書いてやればいいのが、なんとなく解ってきました、上の例だと答えの3が8000h番地のメモリに保存される、
のが解りましたが、たったこれだけのことに手間がかかりすぎ・・!
更に言うとCPUは上記のニーモニックコードを実行できませんので、マシン語に変換しなくてはダメです。
http://njprog.com/z80_007.htm
この表から LD A,1 は 3E 01 LD B,2 は 06 02 LD HL,8000hは 21 00 80 ADD A,Bは 80 LD(HL),Aは 77となるようです。
モニタなどで、$7000 から 3E 01 06 02 21 00 80 80 77 C9 と打ち込んで J 7000でプログラムを走らせると、$8000に
計算結果の03hがストア(メモリに書き込むこと)されているはずです。
LD HL,8000h がマシン語で21 80 00 でなく 21 00 80 となるのは、インテル系列特有のスモールエンディアンの特徴で
アドレスの16バイトの前後を入れ替えて、書くルールになっています。
3E 01 06 02 21 00 80 80 77 C9 の最後のC9はモニタに戻れ RETURN の意味のマシン語で、RET のマシン語です。

実行してみましたが、うまくいっているようで、一安心でした・・。(笑)
走らせてモニタに帰ってきた後、$8000を確認すると、03hになっているのを確認できました。
本日はここまでです・・。
こんな暑い季節に、お勉強?なんて出来な〜い、ってことです?、
Z80インストラクションコード(ニーモニックコード)見て、Print文もFor文もIf文無いじゃないか!、こんなのでどうやって
プログラムしろって言うんだ!?、って思いましたよね?。
私は入門当初そう思いました、レジスタに数値をセットしたり、コピーしたりで一体どうしろっていうんだ〜!。
って思ったものです、BASICで覚えた命令みたいなのは無いのか?、解説されている本を読んでみても、ロードだのストアだの
フラグだののカタカナ語ばかり・・。
ニーモニックコード眺めて沢山の種類の命令が用意されているのは、解りましたが全く意味が解りませんでした。
こんなまま、何ヶ月かまったく理解は進みませんでした・・。
未だに全て理解できてる訳でもないんですが、ある程度の行数のコードを書けば一定の仕事(操作)を行うことは出来るのが
解ってきました・・。
BASICのダイレクトモードで、Print 1+2 みたいな簡単な(単純な)ことならなんとか理解できてきました。
上の例なら
ニーモニック BASIC風
LD A,1 A=1
LD B,2 B=2
LD HL,8000h HL=$8000
ADD A,B A=A+B
LD (HL),A POKE $8000,A
みたいに書いてやればいいのが、なんとなく解ってきました、上の例だと答えの3が8000h番地のメモリに保存される、
のが解りましたが、たったこれだけのことに手間がかかりすぎ・・!
更に言うとCPUは上記のニーモニックコードを実行できませんので、マシン語に変換しなくてはダメです。
http://njprog.com/z80_007.htm
この表から LD A,1 は 3E 01 LD B,2 は 06 02 LD HL,8000hは 21 00 80 ADD A,Bは 80 LD(HL),Aは 77となるようです。
モニタなどで、$7000 から 3E 01 06 02 21 00 80 80 77 C9 と打ち込んで J 7000でプログラムを走らせると、$8000に
計算結果の03hがストア(メモリに書き込むこと)されているはずです。
LD HL,8000h がマシン語で21 80 00 でなく 21 00 80 となるのは、インテル系列特有のスモールエンディアンの特徴で
アドレスの16バイトの前後を入れ替えて、書くルールになっています。
3E 01 06 02 21 00 80 80 77 C9 の最後のC9はモニタに戻れ RETURN の意味のマシン語で、RET のマシン語です。
実行してみましたが、うまくいっているようで、一安心でした・・。(笑)
走らせてモニタに帰ってきた後、$8000を確認すると、03hになっているのを確認できました。
本日はここまでです・・。
2026年07月28日
今更 Z80マシン語 #4
はい、4回目で〜す。
#3でニーモニックとアセンブラについてを観てもらいました、ここまで一通り観てもらった方なら、ニーモニック(命令コード)
を見てもらっうのもいいかな?、とおもいます・・。
ニーモニックコードなど
↓ ↓ ↓
http://njprog.com/z80_room.htm
この中の機械語・ニーモニック対応表(1)〜(3)がZ80機械語(命令)の全てです。
PrintfもForもありません00〜FFまで1バイトの命令が列挙されています。
これだけで256種類の命令(インストラクションコード)があるってことです。
でもこれだけでは、足りないので命令を2バイトに拡張して512種類分に増やしました。
機械語・ニーモニック対応表(1)は隙間無く並んでいましたが、機械語・ニーモニック対応表(2)には抜けている部分があります。
これ全部覚えないといけないの?、当時の技術職の人は暗記してたのでしょうね?、ま〜暗記しなくてもこの表を持ってればOK
だったかも知れません。
これじゃ機械語でプログラム書ける人なんて生まれないわけで?、実際にニーモニックでプログラム書く場合には
ニーモニック⇔機械語対照表の方を参照したと思います、これらを組み合わせて目的の処理を実現します。
あ・・地震だ!、九州の人大丈夫だと良いな。
本日はここまでにします、ニーモニック⇔機械語対照表を眺めて楽しんでください!?。
#3でニーモニックとアセンブラについてを観てもらいました、ここまで一通り観てもらった方なら、ニーモニック(命令コード)
を見てもらっうのもいいかな?、とおもいます・・。
ニーモニックコードなど
↓ ↓ ↓
http://njprog.com/z80_room.htm
この中の機械語・ニーモニック対応表(1)〜(3)がZ80機械語(命令)の全てです。
PrintfもForもありません00〜FFまで1バイトの命令が列挙されています。
これだけで256種類の命令(インストラクションコード)があるってことです。
でもこれだけでは、足りないので命令を2バイトに拡張して512種類分に増やしました。
機械語・ニーモニック対応表(1)は隙間無く並んでいましたが、機械語・ニーモニック対応表(2)には抜けている部分があります。
これ全部覚えないといけないの?、当時の技術職の人は暗記してたのでしょうね?、ま〜暗記しなくてもこの表を持ってればOK
だったかも知れません。
これじゃ機械語でプログラム書ける人なんて生まれないわけで?、実際にニーモニックでプログラム書く場合には
ニーモニック⇔機械語対照表の方を参照したと思います、これらを組み合わせて目的の処理を実現します。
あ・・地震だ!、九州の人大丈夫だと良いな。
本日はここまでにします、ニーモニック⇔機械語対照表を眺めて楽しんでください!?。

