
このアセンブラのプログラムはIN命令によって3桁のレコードに入力された10進数の値を2進数に変換するプログラムです。
INPUT START (1)
RPUSH (2)
IN IBUF,ILEN ;レコードを入力 (3)
LD GR0,ILEN (4)
JMI FIN2 ;ファイルの終わり (5)
LD GR1,=0 ;けた数のカウンタ (6)
LD GR4,=0 ;数値の初期化 (7)
LOOP2 LD GR3,IBUF,GR1 (8)
AND GR3,=#000F ;数字を数値に変換 (9)
LD GR5,GR4;ここから↓4つの命令はGR4を10倍する (10)
SLL GR5,3; (11)
SLL GR4,1; (12)
ADDA GR4,GR5; (13)
ADDA GR4,GR3 (14)
ADDA GR1,=1 (15)
CPA GR1,GR0 (16)
JMI LOOP2 (17)
LD GR0,GR4 (18)
FIN2 RPOP (19)
RET
ILEN DS 1
IBUF DS 256
END
(8)のLOOP2 LD GR3,IBUF,GR1の命令なのですが、「これはIBUFとGR1のアドレスをたしてGR3にその内容を格納する。」という意味であり、その後(14)で10倍されたGR4にたしています。
質問としては、この2進数に変換するプログラムでGR3とGR4の役割を教えていただきたいです。
GR1はレコードの桁数に使われている領域だとわかります。
個人的な解釈としては、GR4はレコードに入力する10進数の数値なのですが、GR4をなぜ10倍すると2進数に変換されるのかなどやGR3の意味がわからないために全く理解できません。
よろしくお願いします。
No.5
- 回答日時:
ここでやっているのは要するに
「123 という表現を, それが表す数値に変換する」
ということですね. 「10進数」とか「2進数」とかいう表現をしているために, かえって混乱されているのかもしれません.
No.4
- 回答日時:
入力はおそらく"123"のような文字列なのでしょう。
「2進数」と言っているのはコンピュータの内部形式を指していると
推測されます。人間が分かる"123"は内部形式では(1111011)bです。
処理内容は左から1桁ずつ数値化し、10倍しながら加算するという
ことです。
A. "1"を数値の1にする(GR3←1)
B. 0(GR4の初期値)を10倍してGR3を足す。(GR4←1)
C. "2"を数値の2にする(GR3←2)
D. 1を10倍してGR3を足す。(GR4←12)
E. "3"を数値の3にする(GR3←3)
F. 12を10倍してGR3を足す。(GR4←123)
ループでなく記述すると以上のようになります。
この回答への補足
そのように処理が行われるということはわかりました。
しかし、このプログラムは10進数を2進数に変換する
プログラムです。(参考書にはそう書いてあります。)
nda23さんの言っていることを解釈すると、これは123
となった時点で2進数に変換されているということで
よろしかったのでしょうか?
No.3
- 回答日時:
すみません, 意味が分かりません.
・「(10)~(14) でレコードに入力している」というのはどういう意味でしょうか?
・「命令(4)のLD GR0,ILENというもので、GR0に二進数を変換して入力している」とはどういうことでしょうか? 「二進数を変換する」と書かれていますhが, この「二進数」とはなんですか? そして, それを何に変換するんですか?
すみません。
理解不足でした。
私もプログラミング初心者な物で、文字列を入力することで二進数に
変換されるとは知りませんでした。
レコードは文字を入力する領域であり、10倍してGR3を足すことで
レコードに文字列が一つ一つ入力されているのだと思っていました。
そして、レコードに入力された10進数の数値を二進数に変換する
プログラムなので、命令(4)で変換されているのだと思っていました。
おそらく、下記の方が解答されていらっしゃる解釈で問題ないと
思います。3度もかまっていただき、誠にありがとうございました。
No.2
- 回答日時:
そう, そしてその計算は
(2×10+5)×10+3
とすることができます.
(10)~(14) では結局
GR4 = GR4×10+GR3
という計算をしていることになります.
この 2つを見比べればわかるのではないでしょうか.
なるほど、(10)~(14) でレコードに入力しているのですね。
では、2進数に変換しているのは、LOOP2内での入力が完了したら
上記の命令(4)のLD GR0,ILENというもので、GR0に二進数を
変換して入力しているという解釈でよろしかったでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 There are various anatomical and mucogingival cond 3 2022/05/05 10:28
- 電気工事士 送りのケーブルのGRやDGRの連動試験をする際、LBSのトリップコイルに電圧をかける必要があるも思う 1 2022/08/28 11:33
- C言語・C++・C# 【CASLプログラム】 定数(80と55)を確保し、その和をGR1に、その差をGR2に求めるCASL 1 2022/12/16 01:17
- F1・モータースポーツ SUPER GT 2022 SERIES | トヨタ自動車 GT500 編 1 2022/05/15 04:04
- デジタルカメラ ricoh gr iiix の次は出ると思いますか?ricoh gr iiixを買おうか迷い中です 1 2023/04/15 17:54
- その他(車) GRヤリス や GRアクアといった スポーツモデルは煽られやすい? 4 2022/11/29 20:17
- 日用品・生活雑貨 ボタン電池「SR-927W」「GR-927」と互換できるボタン電池を教えて下さい。 5 2022/10/29 10:44
- デジタルカメラ 手持ちのRICOH GR DigitalをWebカメラとして使いたい。 2 2023/07/25 07:54
- 中古車 ランクル300 2 2022/08/20 11:33
- 国産車 トヨタGRカローラ GRヤリスの3気筒エンジン四駆システム ブースト圧上げてパワー絞り出しただけ。 12 2022/12/04 13:44
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
家電製品の電力周波数を変える機械
-
エクセルVBAの自動変換機能?
-
シーケンサのCPUはニーモニック...
-
C/C++→JAVAに変換するツール
-
三角形を逆三角形にしたいです...
-
VB.NETをJavaに変換するツール...
-
VB6からVB2010への変換について
-
gmtime()とlocaltime()は
-
UTF8→ShiftJISに変換したいです!
-
シフトJISのCSVファイルをUFT-8...
-
Mac 乗数の入力方法
-
vb.netの型変換について
-
緯度、経度の 10進法と 60進法...
-
php
-
NumericUpDownを使用してテキス...
-
マンセル⇔XYZ,RGB変換式或いは...
-
VB6で10進数を32進数に変換する...
-
F-BASICからC言語への変換
-
TIFF形式のイメージをBMPに変換...
-
VB 6 を VS 2012に変換するには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
家電製品の電力周波数を変える機械
-
緯度、経度の 10進法と 60進法...
-
Mac 乗数の入力方法
-
エクセルVBAの自動変換機能?
-
分を時間に変換するプログラム
-
マンセル⇔XYZ,RGB変換式或いは...
-
VB6からVB2010への変換について
-
10進数をBCDに変換する方法
-
なぜ通信には16進数文字列が使...
-
C/C++→JAVAに変換するツール
-
変換中の文字を表示させず、IME...
-
c++でmatからvectorへの変換の...
-
C#でのpngからbmpへの変換について
-
bitmapクラスをiconクラスに変...
-
VB 6 を VS 2012に変換するには?
-
【EXCEL】カナ、ひらがなを英字...
-
UTF8→ShiftJISに変換したいです!
-
逆コンパイルと逆アセンブルの...
-
エクセルのvbaで検索ボタンを作る
-
画像ファイルから.icoフォーマ...
おすすめ情報