練習問題 1

  1. 以下の命令を用いて A レジスターの内容を mod 0x100 で 5 倍するプログラムを書きなさい.
    47          Aレジスターの内容をBレジスターへコピー.  MOV B,A
    80          A+B を A(レジスター)に代入.           ADD B
    

  2. さらに以下の命令を用いて A レジスターの内容を mod 0x100 で 5 倍するより高速なプログラムを書きなさい.
    07          Aレジスターの内容を1左にシフト. 溢れた分は Carry flag へ.  RLC
    

練習問題 2

  1. 以下の命令を用いて メモリアドレス 9000H から 90FFH までに ABH を書き込むプログラムを書きなさい.
  2. メモリアドレス 9000H からに格納された数の2進数としてパターンが白黒画面の表示となるハードウエアがある. 1が白, 0 が黒となる. 画面は 256 X 128 ドットで構成されている. この画面を真っ白にするプログラムを書きなさい.


以下で数は 1 byte のサイズ.
3E 数         A レジスターに数を代入   LD A,数 [MVI A,数]
06 数         B レジスターに数を代入
26 数         H レジスターに数を代入
2E 数         L レジスターに数を代入
77            A レジスタの内容を HL レジスタに格納されたメモリアドレスに書き込む LD (HL),A  [MOV M,A]
70            B レジスタの内容を HL レジスタに格納されたメモリアドレスに書き込む
2C            L レジスターの内容を 1 増やす.      INC L  [INR L]
BD            A レジスターと L レジスターの内容を比較.  CP L
C2 数1 数2     比較の結果が 0 でないとき, 数2 数1 番地へジャンプ.  JNZ 
76            停止  HLT

参考

  1. 8080 CPU のマシン語
  2. Web での 8080 エミュレーター
  3. hexcurse を用いて emacs の Wrote メッセージを変更してみる.