(assembler) Z80 マシン語秘伝の書
日高 徹, 1989年, 啓学出版
1991/1995 MZNT(注文) 1800円 2006-01-17/02-14 ★4
55140
当時、パソコンに詳しい友人から薦められて購入した。もちろん、本屋に並んでいるはずもないので注文した。現在、ネット上で見るかぎり、かなり高い評価を得ているようだ。
今回、プログラミング言語を学ぶ(おさらいする)目的で、アセンブラから読み直すことにした。アセンブラ関連で最後の3冊目。いま思えば、x86系で勉強した方が良かったかもしれないけど、手元に書籍が無いのであきらめた。
購入当時、ひと通り読んだつもりだったが、最初の部分しか読んでなかったようだ。たぶん、難しかったのだろう。このため、読み直しでもないし、コードを理解するのも難しかったので、ひどく読むのが遅くなった。
アセンブラって、ルービックキューブのようなパズル性が強いと思う。アセンブラで、一度レジスタの内容を退避するところは、ルービックキューブで、いったん90度回転させて、位置が変わらないように退避させるのに似ている。
x86系やMS-DOS環境を理解するのに、次のウェブを読んでおこうと思う。
アセンブラ入門
http://www5c.biglobe.ne.jp/%7Eecb/assembler/assembler02.html
アセンブラ 〜MS-DOSの世界〜
http://www5c.biglobe.ne.jp/%7Eecb/assembler2/assembler12.html
Win32 MASM プログラミング入門
http://www7.plala.or.jp/keny01/asm/win32/
つか、MASMが無償で配布されてたのね
ダウンロードの詳細 : Microsoft Macro Assembler 8.0 (MASM) パッケージ (x86 用)
http://www.microsoft.com/downloads/details.aspx?FamilyID=7A1C9DA0-0510-44A2-B042-7EF370530C64&displaylang=ja
目次
正誤表:http://njprog.com/toruhidaka/permit_3.htm#hidenz8 2010-07-10追記
一の章 秘伝の書を読む前に
ニの章 秘伝の問答80
- その1 マイナスの数値
- その2 慣用句的論理演算
- その3 B=0の調べ方
- その4 RAMの特徴を活かす
- その5 HL=0の調べ方
- その6 無駄命令とは
- その7 「ADD HL,A」を表現
- その8 「ADD HL,1234H」を表現
- その9 「SUB HL,DE」を表現
- その10 JRとJPの違い
- その11 +/−を交互に
- その12 LD命令を減らす
- その13 ビット転送
- その14 サブルーチンへのジャンプ
- その15 命令の書き換え
- その16 フラグで合図を送る
- その17 範囲のある比較
- その18 ペアレジスタの値を2倍に
- その19 マイナスの値を1/2にする
- その20 かけ算を分解して高速化
- その21 ブロック転送
- その22 CP命令でのジャンプ
- その23 共通項のあるジャンプ
- その24 テーブルを利用したジャンプ
- その25 スタックを利用したジャンプ
- その26 ビット別のジャンプ
- その27 2つのプログラムを共有する
- その28 DJNZ命令の特徴
- その29 P/Vフラグとは
- その30 基礎的な擬似乱数
- その31 実用的な擬似乱数
- その32 擬似乱数利用の基礎
- その33 擬似乱数の応用
- その34 擬似乱数に変化をつける
- その35 裏レジスタとは
- その36 表/裏レジスタの共用
- その37 メモリを埋める
- その38 データ転送
- その39 データ高速転送
- その40 3バイトの加減算
- その41 十六進数を十進数に
- その42 BCD数値の加減算
- その43 データの左右反転
- その44 実用できる左右反転プログラム
- その45 Hフラグ、Nフラグとは
- その46 いち度のCP命令で5つの条件判断
- その47 「CP HL,DE」を実現
- その48 「CP BC,DE」を実現
- その49 ペアレジスタのNEG命令
- その50 ジャンプ代わりにリターン
- その51 「LD HL,SP」を実現
- その52 CPIR命令について
- その53 CPIR命令の効果的用法
- その54 CPDR命令とテーブル
- その55 ベスト5のチェック
- その56 1バイト数値ソート
- その57 2バイト数値ソート
- その58 ブロック単位の文字列サーチ
- その59 連続データからの文字列サーチ
- その60 ブロック単位の文字列ソート
- その61 A×B=HL(標準タイプ)
- その62 A×B=HL(筆算タイプ)
- その63 HL×BC=HL(筆算タイプ)
- その64 A÷B=C(小数第一位七捨八入)
- その65 HL÷DE=BC(小数第一位七捨八入)
- その66 HL÷DE=BC.A(小数第三位七捨八入)
- その67 BC.A×HL'=HL(小数第一位七捨八入)
- その68 HL÷DE=BC.A(筆算タイプ)
- その69 アスキーコードからHLレジスタへ変換
- その70 アスキーコードからBCDの数値へ変換
- その71 BCDの数値をアスキーコードへ変換
- その72 BCDをシフトする
- その73 BCD数値の四捨五入
- その74 BCD数値×A
- その75 BCDどうしのかけ算(筆算タイプ)
- その76 HLレジスタの値をBCDに変換
- その77 BCDどうしの割り算(割る数の桁数固定)
- その78 BCDどうしの割り算(割る数の桁数不定)
- その79 BCDに関するミニ・テクニック
- その80 テーブル処理で複雑な計算を
三の章 正しいマシン語のために