初心者です。下記アセンブラを使った「数値表記」プログラムの中で、「10進数と2進数とのXOR処理 33行」をするというCASLⅡのメカニズムが全く解りません。どなたか御教授お願いします。
A=-32145(10進数)をビット反転処理を用いてGR1(16進数対応)にインデックスとしての数値-32145をSTする。)
; 初期設定
1 XOR GR1,GR1 GR1:編集格納領域のインデックス
2 LAD GR2,1 GR2:定数1(計算用)
3 LAD GR3,4 GR3:重みテーブルのインデックス
4 LD GR0,A GR0:変換するデータ
; GR0の2の補数を求めて、符号を反転する
33 XOR GR0,=#FFFF ビット反転・・・・・ビット反転をCASLⅡはどう処理するのか?
34 ADDA GR0,GR2 +1する
44 A DC -32145
4行目GR0,Aに10進数を入力しておきながら 33行で16進数GR0との間ででXOR のビット反転処理をしておりますが私にはこの処理が全く不自然に写ります。
やさしく説明シテいただくようよろしくお願いしたします。 SK
No.2
- 回答日時:
高校の数学の教科書にでもあたれば「同じ数であってもいろいろな表し方がある」ことは書いてあると思うよ.
お答え有難うございました。残念ながら私の質問とは別のカテゴリーのようです。質問が悪かったようです。申し訳ありませんでした。 sk1952
No.3ベストアンサー
- 回答日時:
10進数と16進数でXOR演算をしていることが不自然、ということでしょうか?
ひとことで言えばアセンブラソースリストでの表現法が違うだけでメモリーに記憶させてしまえば同じ状態になります。つまり電圧の高い状態と低い状態が16個並んだものになります。その内容が10進数なのか16進数であるのかといった情報は記憶されません。
お尋ねの -32145 は10進数ですね。これは、
2進数で表現すると 1000 0010 0110 1111 になり、
16進数で表現すると 826F となります。
この3つの表現方法はマシン語になってしまえば同じ形になります。
XORという演算でビット反転ができるのか、との疑問でしょうか。
できます。XOR演算は2つの入力A、Bに対して次のような演算をします。
A B 結果
0 0 0
0 1 1
1 0 1
1 1 0
一方の入力(例えばA)が1なら結果は他の入力(例えばB)の逆になっていますね。これを使います。
33行のXORでは、
( 1000 0010 0110 1111 ) XOR ( 1111 1111 1111 1111 ) の演算をします。
対応するビットごとに上の表をあてはめてください。結果は左の 1000・・・の1と0を逆にしたものになります。
余計なことですが自分自身とXORすると全ビットがクリアーされます。
上の表で 0 XOR 0 = 0 、 1 XOR 1 = 0 となることでわかりますね。
プログラム1行目でこれを使っています。XORはこのようなちょっと変わった使い方もできます。
うまく書けなくて申しわけありません。不明点は補足に書き込んでください。
小生アセンブラ専門でやっていました。6800からZ80、6502やPICもやりました。CASLは全く知りませんがnetにリファレンス一覧表があったので何とかお答えできると思います。
m-jiro様
明快かつ懇切丁寧なる回答をいただき、大変「嬉しい」気持ちです。これで次のステップに行けると思うとやる気満々になりました。重ね重ねお礼申し上げます。 sk1952
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 【CASLプログラム】 定数(80と55)を確保し、その和をGR1に、その差をGR2に求めるCASL 1 2022/12/16 01:17
- 数学 以下の問題が分かりません。 8ビット浮動小数点数が、最上位ビットから順に符号1ビット、指数部3ビット 4 2023/07/22 16:06
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- 情報処理技術者・Microsoft認定資格 2進数の問題を教えてください。 1 2022/07/27 09:42
- 工学 疑似乱数生成器 3 2023/01/05 02:06
- Oracle ビットで表せる数値について 3 2022/09/12 16:37
- 情報処理技術者・Microsoft認定資格 情報技術の問題についてです。 10進数の−36を以下のような16ビットの浮動小数点表示にするといくつ 3 2022/05/21 19:53
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0xffffとは?
-
エクセルVBAのIf,Then 構...
-
16進数でのAND演算
-
ULONGLONGよりも大きい整数を扱う
-
命令について
-
ビットシフトってどんな時使うの?
-
8ビットのデータの、先頭ビット...
-
符号無し整数xを右にnビット回転
-
剰余の法が大きい場合のアルゴ...
-
コンピュータが処理できるビッ...
-
アセンブリ言語の質問のコト
-
整数除算の意味とは?
-
パソコンに使われているn進法は...
-
CASLIIでかけ算
-
アルゴリズムの計算量とオーダ
-
三菱PLCについて聞きたいです。...
-
BigDecimal小数計算について
-
ビット立つの意味
-
if($a & $b) の意味
-
算術右シフトの結果が1/2になる...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0xffffとは?
-
エクセルVBAのIf,Then 構...
-
8ビットのデータの、先頭ビット...
-
ビットシフトってどんな時使うの?
-
verilog 符号付加減算(最上位...
-
一般のソフトで画像を扱う場合...
-
符号無し整数xを右にnビット回転
-
文字参照は10進数と16進数では...
-
シーケンス制御についての質問...
-
BMP画像のネガを作成するプログ...
-
アクセス(2003)のVBAでビット...
-
03分22秒36のような時間の単位...
-
命令について
-
10進数(+-)→2進数への変換(2)
-
C言語で128bitの2進数のビット...
-
1の補数
-
ビット列を表示するプログラム
-
Python: 数値を反転させたい
-
ビットの取り出し方法
-
PS3に搭載されている"Cell"は、...
おすすめ情報