ページ 11

アセンブラわかる方いますでしょうか。基礎の基礎です。

Posted: 2017年6月26日(月) 22:11
by 見習い
あるレジスタに正の整数xを設定後、
「レジスタの値を2ビット左へシフトして,xを加える。」
オーバーフローや符号が変わることは考慮しなくてよい。

TEST START MAIN
X DC 1
MAIN
LD GR1,X
SLL GR1,2
ADDL GR1,X
RET
END
これでいいんでしょうか。RPUSH、RPOPなどは必要ですか?

C言語じゃないのにすみません。

Re: アセンブラわかる方いますでしょうか。基礎の基礎です。

Posted: 2017年6月26日(月) 22:16
by みけCAT
アセンブラは対象のCPUによって大きく変わりますが、対象のCPUやアセンブラは何でしょうか?

Re: アセンブラわかる方いますでしょうか。基礎の基礎です。

Posted: 2017年6月26日(月) 22:22
by 見習い
ええ…そうなんですか…?
特に指定はないです。アセンブラ言語で作成せよとだけ…。
CPUっていうのは、coreのようなものでしょうか。
いま使っているのはcorei5です。
アセンブラはちょっとわからないですすみません…

Re: アセンブラわかる方いますでしょうか。基礎の基礎です。

Posted: 2017年6月26日(月) 23:01
by かずま
情報処理試験のアセンブラ(CASL II)ですね。

Re: アセンブラわかる方いますでしょうか。基礎の基礎です。

Posted: 2017年6月26日(月) 23:13
by 見習い
そうです!

Re: アセンブラわかる方いますでしょうか。基礎の基礎です。

Posted: 2017年6月27日(火) 00:17
by 白い変人
偶々、家に昔使った基本情報の参考書が有ったので、CASLⅡの仕様を見てみたのですが、「TEST START MAIN」という書き方はOKなのか疑問でした。(もしかするとOKなのかも分からないけど。)

STARTの後に来るオペランドは[実行開始番地]と定義されており、[実行開始番地]を定義する命令も必要とされているみたいだからです。

それで、質問者様は恐らくMAINをラベルとして定義したかったのかもしれませんが、言語仕様を見た所、行の種類にはラベルは省略可であっても、他に必須項目が有る様です。

つまり、MAINだけを書いてラベルとして[実行開始番地]を定義するという事は言語仕様上不可能と思われます。

それで、動作(と言っても存在しない機械らしいですけど。)するように添削しますと、

コード:

TEST	START
		LD		GR1,X
		SLL		GR1,2
		ADDL	GR1,X
		RET
X		DC		1
		END
これで、十分な気がします。

Re: アセンブラわかる方いますでしょうか。基礎の基礎です。

Posted: 2017年6月27日(火) 01:18
by 見習い
そうなんですね。わさわざすみません…(;_;)
助かりますありがとうございます!