蒼天在眼 (そうてんまなこにあり)ーベランダで星を見る

昔、昔、天文少年でした。そして、今は、ベランダから、星を見ています。
いろいろの忘備録

PiDP-11を使う その9 引き算と負の整数の表現の巻

2023-12-12 09:14:12 | コンピュータ

前回、機械語で、足し算を紹介しました。今回は引き算の紹介です。引き算はニーモニックで SUB(struct)です。機械語では16****で、機械語命令の後の後の番地のデータから、機械語の後の番データを引き算して、機械語の後の後の番地にに格納しする場合は、163737と書きます。

前回出てきたオペランドという言葉をを使うと、destination <- destination - sourceの操作をします。 source は第一オペランド、destination は第二オペランドに当たります。

では実際に2−4の計算してみます。コンソールパネルで操作すると長くなるので、ターミナルで見てみます。

コンソール・パネルで見るとこんな感じに。

最上位の15ビットが1だと負の数です。引き算の結果が負の数になると、PDP-11では負の整数は、2の補数で表します。終わり。

これでは少し不親切なので補数について説明します。まず、私たち人類が1番親しんでいる10進数の10の補数から、説明します。今ここに10進数で計算する簡単な2桁の計算機があるとします。10の補数の定義は、この二桁の計算機の場合、加算して、3桁目に桁あふれを生じる数のうち最小の整数を補数とします。例えば、2に対する10の補数は、98となります。10であれば、90が10の補数です。この10の補数を元の数の負の表現とするのが補数表現で、-2を98で表すと、これに6を加える計算をすると、和の104のうち1の位は、2桁計算機の場合、桁あふれになるので、2桁表示の04が残り、これが、計算結果となります。この方式で、二桁で、表現できる正の整数は、49まで負の数は−50です。もっと桁数を増やせば、大きな数を表現できます。

PDP-11の場合、基本は、2進16桁で計算しますから、2の補数表現で、-2を表現すると、

177776(8進)が2の補数表現になります。これに、000006を加えると2000

04となり、1番左端の2は桁あふれを起こして無くなるので、000004と、10進の時と同じ結果が得られます。負の数を補数で表現する時のメリットは、加算、減算の計算命令に特別な変更を加えなくても、正の数、負の数が混在する計算ができることにあります。

木村泉先生の講義OHPでは、こんな感じに説明されています。

負の数の表現方法には2の補数以外に、1の補数、符号+絶対値などが考えられます。私の知る限り、1の補数表現は、DECの最初のコンピュータであったPDP-1、UNIVAC 1100/2200のような太古のコンピュータ以外にはないようです。参考までにぞれぞれの例を2進3桁表現で、木村泉先生のOHPを見ますと、なかなか味わい深いものがあります。

(機械語命令の観光地図の巻につづく)

 


PVバーナー

PVアクセスランキング にほんブログ村