HP-42S では, 英数字データ, つまり文字列は ALPHA レジスターという特別なレジスターを用いて保存・呼び出しを行う.
せっかくなのでまとめておく.
● ALPHA レジスターからのデータの保存, 呼び出し: $\mathrm{ASTO}$ 命令と $\mathrm{ARCL}$ 命令
ALPHA レジスターから他の変数やレジスターへのデータのコピーには $\mathrm{ASTO}$ 命令を用いる.
変数やレジスターに保存されているデータを ALPHA レジスターに呼び出すには $\mathrm{ARCL}$ 命令を用いる.
HP-42S のディスプレイは上下 2 段あって, 通常は上段に $\mathrm{Y}$ レジスターの内容, 下段に $\mathrm{X}$ レジスターの内容が表示されている.
\begin{align*}
\newcommand{\Ar}[1]{\mathrm{Ar}(#1)}
\newcommand{\ar}{\mathrm{ar}}
\newcommand{\arop}{\Opp{\mathrm{ar}}}
\newcommand{\Cocone}[2]{\mathrm{Cocone}(#1,#2)}
\newcommand{\Colim}{\mathrm{colim}}
\newcommand{\CommaCat}[2]{(#1 \downarrow #2)}
\newcommand{\Cone}[2]{\mathrm{Cone}(#1,#2)}
\newcommand{\Func}[2]{\mathrm{Func}(#1,#2)}
\newcommand{\Hom}{\mathrm{Hom}}
\newcommand{\Id}[1]{\mathrm{id}_{#1}}
\newcommand{\Mb}[1]{\mathbf{#1}}
\newcommand{\Mr}[1]{\mathrm{#1}}
\newcommand{\Ms}[1]{\mathscr{#1}}
\newcommand{\Mt}[1]{\mathtt{#1}}
\newcommand{\Nat}[2]{\mathrm{Nat}(#1,#2)}
\newcommand{\Ob}[1]{\mathrm{Ob}(#1)}
\newcommand{\Opp}[1]{{#1}^{\mathrm{op}}}
\newcommand{\Pos}{\mathbf{Pos}}
\newcommand{\q}{\hspace{1em}}
\newcommand{\qq}{\hspace{0.5em}}
\newcommand{\Rest}[2]{{#1}|{#2}}
\newcommand{\Sub}{\mathrm{Sub}}
\newcommand{\Src}{d^{0,\mathrm{op}}}
\newcommand{\Tgt}{d^{1,\mathrm{op}}}
\Mt{Y:} & \qq\Mt{990} \\
\Mt{X:} & \qq\Mt{1,539}
\end{align*}
ALPHA レジスターには最大 44 文字 (= 44 バイト) まで保存できる.
$\Mr{ALPHA}$ キーを押すと, 文字列の ALPHA レジスターへの入力が開始される.
次の 47 バイトの文字列を入力してみる.
\begin{equation*}
\Mt{The~wind~howls,~but~the~mountain~remains~still.}
\end{equation*}
最後の $\Mt{still}$ の $\Mt{i}$ (44 バイト目) まで入力した時点でビープ音がして, それ以上の入力ができなくなる.
$\Mr{ENTER}$ キーを入力して入力を終了する.
これによって文字列
\begin{equation*}
\Mt{The~wind~howls,~but~the~mountain~remains~sti}
\end{equation*} が ALPHA レジスターに保存される. この状態で ALPHA レジスターの内容を表示すると, 画面 2 段いっぱいに
\begin{align*}
& \Mt{The~wind~howls,~but~th} \\
& \Mt{e~mountain~remains~sti}
\end{align*} と表示される. ディスプレイの 2 段を用いて表示できる最大の文字数が 44 バイトなのだとわかる.
上記の ALPHA レジスター内の文字列をレジスターや変数に保存する場合には, $\Mr{ASTO}$ 命令を使用する.
ただし, $\Mr{ASTO}$ 命令による保存は, ALPHA レジスター内のデータ全体ではなくて, 最初の 6 バイトのみを保存先の変数やレジスターにコピーする.
たとえば, レジスター $\Mr{R_{05}}$ に ALPHA レジスターの内容を保存する場合を考える.
\begin{equation*}
\Mr{ASTO} \qq \Mr{05}
\end{equation*} 保存した後にレジスター $\Mr{R_{05}}$ の内容を呼び出す.
\begin{equation*}
\Mr{RCL} \qq \Mr{05}
\end{equation*} するとディスプレイには
\begin{align*}
\Mt{Y:} & \qq\Mt{1,539} \\
\Mt{X:} & \qq\Mt{"The~wi"}
\end{align*} と表示される.
$\Mr{X}$ レジスターに ALPHA レジスターの内容の最初の 6 バイトが呼び出されている.
つまりレジスター $\Mr{R_{05}}$ に保存されているデータは $\Mt{The~wi}$ という 6 バイトのデータである.
次に, 上の状態で $\Mr{Y}$ レジスター内の数値データ $1539$ を ALPHA レジスターに呼び出してみる.
ALPHA レジスターに, 変数やレジスターの内容を呼び出すには $\Mr{ARCL}$ 命令を使用する.
この場合, 数値は 5 バイト長の文字列 $\Mt{1,539}$ に変換されて ALPHA レジスター内のデータの末尾にコピーされる.
現在, ALPHA レジスターにはすでに最大の 44 バイト長のデータ:
\begin{align*}
& \Mt{The~wind~howls,~but~th} \\
& \Mt{e~mountain~remains~sti}
\end{align*} が保存されている.
これに対して $\Mr{Y}$ レジスターの内容を呼び出す.
\begin{equation*}
\Mr{ARCL} \qq \bullet \qq \Mr{ST Y}
\end{equation*} この状態で ALPHA レジスターの内容をディスプレイに表示する.
\begin{equation*}
\Mr{PGM.FCN} \qq \Mr{AVIEW}
\end{equation*} するとディスプレイには次のようなデータが表示される.
\begin{align*}
& \Mt{ind~howls,~but~the~mou} \\
& \Mt{ntain~remains~sti1,539}
\end{align*} つまり ALPHA レジスターがすでに一杯の場合には, ALPHA レジスターの左端の文字 (一番古い文字) から消えていき, 新規データの入力場所が作られる.
この例では, 文字列 $\Mt{"1,539"}$ を ALPHA レジスターの末尾に追加するために, 元々のデータの先頭の 5 バイト $\Mt{"The~w"}$ が消去される.
このような, 計算機の動作に関することはイメージが把握できるととても面白い.
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image
-
no image