• ベストアンサー

MP-Z80(10進数の加算)

助けてください!全く分かりません MP-Z80で10進数1から10まで加算し、その結果をAレジスタに格納し、A以外のレジスタの内容は保存されるようにするプログラムの作成を教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • Mr_Holland
  • ベストアンサー率56% (890/1576)
回答No.1

EX AF,A'F'   ; AF←→A'F' でFレジスタの内容を保存 EXX       ; BC←→B'C',DE←→D'E', HL←→H'L' でB,C,D,E,H,Lレジスタの内容を一括保存 ; ここは PUSH BC でもいいが EXX の方がステート数が少なくて済む。 XOR A ; Aレジスタの内容をリセット。 LD A,0 でもいいが XOR A の方がプログラム・バイト数とステート数が少なくて済む。 LD B,0Ah ; Bレジスタに10進10を入力。 10進表記で LD B,10 としてもよい。 LOOP: ADD A,B ; A←A+B の加算 DEC B ; B←B-1 の減算。 演算の結果Bレジスタが0になればZフラグ=1。それ以外は Zフラグ=0 JR NZ,LOOP ; Zフラグが0(NZ=1)ならLOOPに戻る(相対ジャンプ)。 Zフラグが1(NZ=0)ならスルー。 EXX ; BC←→B'C',DE←→D'E', HL←→H'L' でB,C,D,E,H,Lレジスタの内容を一括保存 ; 2行目の EXX をPUSH BC としたときは POP BC に置き換える。  ※ 文字がずれて読みづらいときは 「テキスト・ドキュメント」などにコピー&ペースとして読み直してください。  使用している命令は若干異なりますが、このサイトが役に立つかもしれません。 http://www.infonet.co.jp/ueyama/ip/software/assembler.html

Fromv
質問者

お礼

ありがとうございます

関連するQ&A