%=====================================================================
% 秋田高専 3E 電子計算機用テキスト
%    論理加算・減算と論理演算
%      last updated 2005.12.8
%        created by  Masashi Yamamoto
%        e-mail yamamoto@akita-nct.jp
%=====================================================================
\documentclass[10pt,a4paper]{jarticle}
\usepackage{graphicx,amsmath,amssymb,ascmac,float,float}
\usepackage{html}
\oddsidemargin 0mm  %左の余白 25.4mm-0mm　奇数ページ
\evensidemargin 0mm %左の余白 25.4mm-0mm　偶数ページ
\textwidth 160mm
%
\newcommand{\tw}[1]{\texttt{#1}}
\newcommand{\vbt}[1]{\begin{verbatim} #1 \end{verbatim}}
\newcounter{linenum}
\newcommand{\wrtlinenum}{\multicolumn{1}{|r|}{\arabic{linenum}}
   \addtocounter{linenum}{1}}
%
%
\newcounter{toi_num}
\newcommand{\toi}{\textbf{\texttt [問\arabic{toi_num}]}
   \addtocounter{toi_num}{1}}
%
\begin{document}
\title{シミュレーターWCASL-IIについて}
\date{2005年12月9日}
\author{山本昌志\thanks{国立秋田工業高等専門学校　電気工学科}}
\maketitle
%
%=====================================================================
\section{本日の学習}
%=====================================================================
今後，アセンブラ言語CASL II での実際のプログラムの作成方法を学習することになる．
実際のプログラムの作成の学習では，それを実行できる環境が絶対に必要である．しかし，
COMET IIというコンピューターは実際にはないので，コンピューターでコンピューターを
模擬することになる．諸君の前にあるWindosでCOMET IIをシミュレーションするわけであ
る．本日は，WindowsでCOMET IIをシミュレーションするプログラムの使用方法を学習す
る．
%
%
%=====================================================================
\section{シミュレーター}
%=====================================================================
%---------------------------------------------------------------------
\subsection{シミュレーターの紹介}
%---------------------------------------------------------------------
フリーウェアーのシミュレーターを紹介しておく．Windowsで動作するので，ダウンロー
ドして学習に役立てると良いだろう．情報教育ルームのパソコンにも，インストールされ
ているので，課題等に使うと便利である．

私は，以下のシミュレーターを使ったことがある．いずれも良くできたシミュレーターな
ので，使ってみると良いだろう．実際，シミュレーターが無いと，CASL IIの学習は大変
である．私の場合，試験問題やプログラムの検証には，これらのシミュレーターを用いて
おり，道具として使っている．

\begin{description}
\item[Infocasl]
教科書のp.187以降に説明がある．シンプルで使いやすいシミュレーターである．
	   \begin{description}
	    \item[URL]\htmladdnormallink{http://www.rs.kagu.tus.ac.jp/~infoserv/j-siken/infocasl/}{http://www.rs.kagu.tus.ac.jp/~infoserv/j-siken/infocasl/}
	   \end{description}

\item[WCASL-II]
ハードウェアー，COMET IIの動作のシミュレートでき，コンピューターの動作が良くわか
	   る．このシミュレーターを本日の授業で使用する．
	   \begin{description}
	    \item[URL]\htmladdnormallink{http://www.ics.teikyo-u.ac.jp/wcasl2/}{http://www.ics.teikyo-u.ac.jp/wcasl2/}
	   \end{description}
\end{description}

%---------------------------------------------------------------------
\subsection{WCASL-II}
%---------------------------------------------------------------------
本日の講義では，WCASL-IIを紹介する．これは，以下のURLにあり，実行ファイルをダウ
ンロードできる．さらに，非常に優れたマニュアル等があり，自習ができるようになって
いる．
\begin{quote}
 http://www.ics.teikyo-u.ac.jp/wcasl2/
\end{quote}

図\ref{fig:program}のプログラムを書いて，COMET IIシミュレーターを実行させると図
\ref{fig:comet}の画面になる．これがCOMET IIのブロック図です．通常のコンピューター
のCPUとメモリ(主記憶装置)とほとんど同じです．ただし，現在使われているCPUの機能よ
りは，かなり単純化されています．その分，コンピューターの本質を学ぶには良いでしょ
う．

このシミュレーターで使われているレジスタを表\ref{tab:register_wcasl}にまとめる．ただ
し，COMET IIの仕様(教科書P207〜)に無いものもある．なぜなら，アセ
ンブラ言語の仕様にはなくても差し支えないが，実際のハードウェアーを構成
する場合，必要不可欠なものがあるからである．COMET IIの仕様になくて，WCASL IIにあ
るものは，表\ref{tab:register_wcasl}の中で

IR  MAR  MDR

である．これらの3個のレジスタは，皆さんがアセンブラ CASL IIを記述する場
合は，気にする必要はない．

また，レジスタ以外のモジュールを表\ref{tab:module_wcasl}に書いておく．これらのモジュール
も，COMET IIやCASL IIの仕様には書かれていない．したがって，アセンブ
ラ言語を記述する場合，これらを考える必要はないが，コンピューターの仕組み上，必須
のものである．したがって，必要不可欠なハードウェアーとして，シミュレーターには，
備え付けられている．

%
\begin{table}[H]
 \caption{WCASL-IIのレジスター} 
 \label{tab:register_wcasl}
 \begin{center}
  \begin{tabular}{|l|l|l|p{50mm}|}\hline
   \multicolumn{1}{|c}{記号} &
   \multicolumn{1}{|c}{語源}　&
   \multicolumn{1}{|c}{日本語}　&
   \multicolumn{1}{|c|}{機能} \\ \hline\hline
   %
   \tw{GR} & General Register & 汎用レジスター &　計算などに用いる \\
   \hline
   \tw{SP} & Stack Pointer & スタックポインター & スタック領域の最上段
   のアドレスを保持 \\
   \hline
   \tw{FR} & Flag Register & フラグレジスター & 演算結果の状態を示す \\
   \hline
   \tw{IR} & Instruction Register & 命令レジスタ & 命令そのものを格納
   \\ \hline
   \tw{MAR} & Memory Address Register & メモリアドレスレジスター & メ
   モリを読み書きする際に，アクセスするアドレスを格納 \\
   \hline
   \tw{MDR} & Memory Data Register & メモリデータレジスタ & メモリとの
   データのやり取りをする際のデータを格納 \\
   \hline
   %
  \end{tabular}
 \end{center}
\end{table}
%
\begin{table}[H]
 \caption{WCASL-IIのレジスター以外のモジュール}
 \label{tab:module_wcasl}
 \begin{center}
  \begin{tabular}{|l|p{25mm}|l|p{72mm}|}\hline
   \multicolumn{1}{|c}{記号} &
   \multicolumn{1}{|c}{語源}　&
   \multicolumn{1}{|c}{日本語}　&
   \multicolumn{1}{|c|}{機能} \\ \hline\hline
   %
   \tw{ALU} & Arithmetic and Logical Unit & 演算装置 & 算術演算と論
   理演算他を実施\\ \hline
   \tw{Decoder} &  & 命令解読器 & 命令を解読するモジュール \\
   \hline
   \tw{Controler} &  & 制御装置 & 命令の実行のための制御を行うモジュール \\
   \hline
   \tw{Bus} &  & バス & レジスタやALUなどの間をデータが通る線\\
   \hline
   \tw{Adder} &  & アドレス加算器 & 命令のアドレス部とインデックスレジスタの内容
   から有効アドレスを求める加算器 \\
   \hline
   \tw{Memory} &  & 記憶装置 & プログラムやデータを記憶しておく場所\\
   \hline
   %
  \end{tabular}
 \end{center}
\end{table}
%
\begin{figure}[hbtp]
 \begin{center}
  \includegraphics[keepaspectratio, scale=1.0]{figure/PROGRAM.eps}
 \end{center}
 \caption{WCASL-IIのプログラム記述画面}
 \label{fig:program}
\end{figure}
%
%
\begin{figure}[hbtp]
 \begin{center}
  \includegraphics[keepaspectratio, scale=1.0]{figure/COMET.eps}
 \end{center}
 \caption{WCASL-IIでCOMET IIのシミュレート}
 \label{fig:comet}
\end{figure}
%
%
\begin{figure}[hbtp]
 \begin{center}
  \includegraphics[keepaspectratio, scale=1.0]{figure/CASL.eps}
 \end{center}
 \caption{WCASL-IIでCASL IIのシミュレート}
 \label{fig:casl}
\end{figure}
%
\newpage
%=====================================================================
\section{WCASL-IIの実行}
%=====================================================================
以下の手順で，これまで学習してきたCSAL IIの復習とWCASL-IIの使い方を学習しよう．
\begin{enumerate}
 \item WCASL-IIのホームページに移動する．
      \begin{description}
       \item[URL]\htmladdnormallink{http://www.ics.teikyo-u.ac.jp/wcasl2/}{http://www.ics.teikyo-u.ac.jp/wcasl2/}
       \end{description}
 \item 「WCASL-IIの概要」を読む．
 \item 「WCASL-IIの使い方」に従いプログラムを作成し，実行する．
 \item チュートリアルを読む．
\end{enumerate}
%=====================================================================
\section{課題(レポート)}
%=====================================================================
\setcounter{toi_num}{1}
CASL IIのプログラムの方法になれたら，以下のプログラムを作成せよ．
\begin{quote}
 \begin{itemize}
  \item[\toi] 5+6+9を計算するプログラム．
  \item[\toi] 999-1000を計算するプログラム．
	      \begin{quote}
	       レジスタ\tw{GR1}とラベル\tw{B}に格納されている値との和を計算し，
	       その結果を\tw{GR1}に代入する文は\tw{ADDA GR1,B}と書いた．すなわち，
	       \begin{align*}
		&\tw{GR1}\leftarrow \tw{GR1+B}& &\Rightarrow& &\tw{ADDA GR1,B}&
	       \end{align*}
	       である．ここでは，引き算なので，
	       \begin{align*}
		&\tw{GR1}\leftarrow \tw{GR1-B}& &\Rightarrow& &\tw{SUBA GR1,B}&
	       \end{align*}
	       とする．
	      \end{quote}
 \end{itemize}
\end{quote}
%---------------------------------------------------------------------
\subsection{レポート提出要領}
%---------------------------------------------------------------------
提出方法は，次の通りとする．
% 
\begin{quote}
 \begin{tabular}{lp{140mm}}
  期限 & 12月16日(金)PM1:00まで \\
  用紙 & A4 \\
  提出場所 & 山本研究室の入口のポスト \\
  表紙 & 表紙を1枚つけて，以下の項目を分かりやすく記述すること．\\
       & \qquad 授業科目名「電子計算機」\\
       & \qquad 課題名「課題6　シミュレーターWCASL IIによるプログラム作成」\\
       & \qquad 3E\quad 学籍番号\quad 氏名\\
       & \qquad 提出日\\
  内容 & プリントアウトした\textbf{\texttt [問1]}と\textbf{\texttt [問2]}のソースプログラム\\
      & wcasl IIの機能のうちCOMET IIのシミュレーションを完了した画面．windowsの
  画面は，\tw{[Alt]}キーを押したまま\tw{[Print Screen]}を押せばバッファーに取り込まれ，
  wordの画面で\tw{[Ctrl]}キーを押したまま\tw{[v]}キーを押すと張り付けられる．
 \end{tabular}
\end{quote}
%
%=====================================================================
\end{document}
