C - U-netSURF

C - U-netSURF C - U-netSURF

www2.u.netsurf.ne.jp
from www2.u.netsurf.ne.jp More from this publisher
24.01.2015 Views

H8/3687 のレジスタ H8/300H の 内 部 には, 一 時昷 的 にデータをセットするために 使 う 汎 用 レジスタ(ER0~ER7)と, CPU の 制 御 のために 使 うコントロールレジスタ(PC と CCR)があります。レジスタはメモみたいなもので, ちょっとデータを 記 録 しておく,というような 感 じで 使 います。これからこのマニュアルで TK-3687mini (H8/3687)について 調 べていきますが,レジスタはよく 出 てくるため,ここでまとめて 取 り 上 げます。 • 汎 用 レジスタ H8/300H は 32 ビット 長 の 汎 用 レジスタを 8 本曓 持 っています。それぞれ,ER0~ER7 という 名 前 が つけられています。 この 32 ビットレジスタを 上 位 16 ビットと 下 位 16 ビットにわけて,それぞれを 16 ビットレジスタとし て 使 うことができます。E0~E7,R0~R7 という 名 前 がつけられていて,16 ビットレジスタを 最暷 大 16 本曓 使 うことができます。 さらに,R0~R7 については 上 位 8 ビットと 下 位 8 ビットにわけて,それぞれを 8 ビットレジスタとし ても 使 うことができます。R0H~R7H,R0L~R7L という 名 前 がつけられていて,8 ビットレジスタを 最暷 大 16 本曓 使 うことができます。 これらの 汎 用 レジスタは「 汎 用 」と 名 付 けられているとおり, 全 て 同 じ 機 能 を 持 っています。つまり, ER0 でできることは ER1~ER7 でもできますし,R0L でできることは R0H~R7H,R1L~R7L でもでき ます。また, 各 レジスタは 独 立 して 32,16,8 ビットレジスタとして 使 うことができます。 汎 用 レジスタの 構 成 について 図 で 示 すと 次 のようになります。(n=0~7) ERn(32 ビット) 半 分 にする En(16 ビット) Rn(16 ビット) 半 分 にする RnH(8 ビット) RnL(8 ビット) 汎 用 レジスタは 全 て 同 じ 機 能 を 持 っているのですが,ER7 だけは 汎 用 レジスタとしての 機 能 にプ ラスして,スタックポインタとしての 機 能 も 持 っています。 5 TK-3687mini ユーザーズマニュアル C 言 語 版

• コントロールレジスタ H8/300H には 2 つのコントロールレジスタがあります。1 つはプログラムカウンタ(PC)です。PC は 24 ビットのレジスタで,CPU が 次 に 実 行 する 命 令 のアドレスを 示 しています。H8/3687 は PC の 下 位 16 ビットを 使 用 しています。 プログラムカウンタ(24 ビット) もう 1 つはコンディションコードレジスタ(CCR)です。CCR は 8 ビットのレジスタで,それぞれのビ ットが CPU の 内 部 状 態 を 表 しています。 演 算 結 果 が 0 になったとか,マイナスになったとか,キャリや ボローやオーバフローが 発 生 したという 情 報 がセットされます。おもに 分 岐 命 令 で 使 われます。どん な 種 類 があるのか 下 記 に 示 します。 コンディションコードレジスタ(8 ビット) I UI H U N Z V C ビット ビット 7 ビット 6 ビット 5 ビット 4 ビット 3 ビット 2 ビット 1 ビット 0 ビット 名 称 I UI H U N Z V C 機 能 割 り 込 みマスクビット このビットが‘1’にセットされると 割 り 込 み 要 求 がマスクされます。 ユーザビット ユーザが 自 由 に 定 義 , 設 定 できるビットです。 ハーフキャリフラグ 8 ビット 算 術 演 算 のときは,ビット 3 にキャリが 生 じたとき‘1’, 生 じなかったとき‘0’になりま す。16 ビット 算 術 演 算 のときは,ビット 11 にキャリが 生 じたとき‘1’, 生 じなかったとき‘0’に なります。32 ビット 算 術 演 算 のときは,ビット 27 にキャリが 生 じたとき‘1’, 生 じなかったとき ‘0’になります。 このフラグは 10 進 補 正 命 令 (DAA,DAS)のときに 使 用 されます。 ユーザビット ユーザが 自 由 に 定 義 , 設 定 できるビットです。 ネガティブフラグ データの 最暷 上 位 ビットを 符 号 ビットと 見 なし, 最暷 上 位 ビットの 値 を 格 納 します。 ゼロフラグ データがゼロのときに‘1’,ゼロ 以 外 のときに‘0’になります。 オーバフローフラグ 算 術 演 算 命 令 の 実 行 によりオーバフローが 発 生 したときに‘1’,それ 以 外 のときは‘0’にな ります。 キャリフラグ 演 算 の 結 果 ,キャリが 生 じたときに‘1’, 生 じなかったときに‘0’になります。キャリには1 加 算 結 果 のキャリ,2 減浦 算 結 果 のボロー,3シフト/ローテート 命 令 のキャリがあります。 ダウンロードした「H8/300H シリーズ プログラミングマニュアル」の 各 命 令 のページに,「●コン ディションコード」という 項 目 があります。その 命 令 を 実 行 した 結 果 ,CCR がどのように 変 化 するか 説 明 されています。 「…」という 感 じでしょうか。でも 心 配 には 及 びません。このマニュアルでも 関 係 するところ で 説 明 しますし,プログラムを 作 ったり 動 かしたりしていくうちにだんだんわかってくると 思 います。「 習 うより 慣 れろ」と 言 いますしね。 6 TK-3687mini ユーザーズマニュアル C 言 語 版

• コントロールレジスタ<br />

H8/300H には 2 つのコントロールレジスタがあります。1 つはプログラムカウンタ(PC)です。PC は<br />

24 ビットのレジスタで,CPU が 次 に 実 行 する 命 令 のアドレスを 示 しています。H8/3687 は PC の 下 位<br />

16 ビットを 使 用 しています。<br />

プログラムカウンタ(24 ビット)<br />

もう 1 つはコンディションコードレジスタ(CCR)です。CCR は 8 ビットのレジスタで,それぞれのビ<br />

ットが CPU の 内 部 状 態 を 表 しています。 演 算 結 果 が 0 になったとか,マイナスになったとか,キャリや<br />

ボローやオーバフローが 発 生 したという 情 報 がセットされます。おもに 分 岐 命 令 で 使 われます。どん<br />

な 種 類 があるのか 下 記 に 示 します。<br />

コンディションコードレジスタ(8 ビット)<br />

I UI H U N Z V C<br />

ビット<br />

ビット 7<br />

ビット 6<br />

ビット 5<br />

ビット 4<br />

ビット 3<br />

ビット 2<br />

ビット 1<br />

ビット 0<br />

ビット<br />

名 称<br />

I<br />

UI<br />

H<br />

U<br />

N<br />

Z<br />

V<br />

C<br />

機 能<br />

割 り 込 みマスクビット<br />

このビットが‘1’にセットされると 割 り 込 み 要 求 がマスクされます。<br />

ユーザビット<br />

ユーザが 自 由 に 定 義 , 設 定 できるビットです。<br />

ハーフキャリフラグ<br />

8 ビット 算 術 演 算 のときは,ビット 3 にキャリが 生 じたとき‘1’, 生 じなかったとき‘0’になりま<br />

す。16 ビット 算 術 演 算 のときは,ビット 11 にキャリが 生 じたとき‘1’, 生 じなかったとき‘0’に<br />

なります。32 ビット 算 術 演 算 のときは,ビット 27 にキャリが 生 じたとき‘1’, 生 じなかったとき<br />

‘0’になります。<br />

このフラグは 10 進 補 正 命 令 (DAA,DAS)のときに 使 用 されます。<br />

ユーザビット<br />

ユーザが 自 由 に 定 義 , 設 定 できるビットです。<br />

ネガティブフラグ<br />

データの 最暷 上 位 ビットを 符 号 ビットと 見 なし, 最暷 上 位 ビットの 値 を 格 納 します。<br />

ゼロフラグ<br />

データがゼロのときに‘1’,ゼロ 以 外 のときに‘0’になります。<br />

オーバフローフラグ<br />

算 術 演 算 命 令 の 実 行 によりオーバフローが 発 生 したときに‘1’,それ 以 外 のときは‘0’にな<br />

ります。<br />

キャリフラグ<br />

演 算 の 結 果 ,キャリが 生 じたときに‘1’, 生 じなかったときに‘0’になります。キャリには1 加<br />

算 結 果 のキャリ,2 減浦 算 結 果 のボロー,3シフト/ローテート 命 令 のキャリがあります。<br />

ダウンロードした「H8/300H シリーズ プログラミングマニュアル」の 各 命 令 のページに,「●コン<br />

ディションコード」という 項 目 があります。その 命 令 を 実 行 した 結 果 ,CCR がどのように 変 化 するか 説 明<br />

されています。<br />

「…」という 感 じでしょうか。でも 心 配 には 及 びません。このマニュアルでも 関 係 するところ<br />

で 説 明 しますし,プログラムを 作 ったり 動 かしたりしていくうちにだんだんわかってくると 思 います。「 習<br />

うより 慣 れろ」と 言 いますしね。<br />

6<br />

TK-3687mini ユーザーズマニュアル C 言 語 版

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!