例えば、CASLのアセンブラ命令にDCがある。
LABER DC 100 とすると。
これは、メモリに領域を確保し100をいれる命令だが、プログラムが変更されれば、メモリアドレスは変更される。
CASLには機械語命令・マクロ命令・アセンブラ命令がある。
機械語命令は人に分かりやすいようにニーモニックが付けられているだけだが、
アセンブラ命令はプログラムが変更されればそのアドレスは移動するという、ハンドアセンブリでは、できない機能が含まれている。
アセンブリ言語は色々ありますが、アセンブラ言語は人に見やすいようにニーモニックが付けられているだけでなく、CASLのDC命令のように、ハンドアセンブリではできないアドレスの自動変更のようなアプリケーションとしての機能(OS的機能)も一般にふくまれているとかんがえてよいのでしょうか?
よろしく願います。
No.4ベストアンサー
- 回答日時:
No1です。
>プログラムの変更==>DCでアドレスの自動変更
DC命令に限らず、命令につけられたアドレスが何番地であるかを計算(カウントアップ)するのは、アセンブラの基本機能です。これがないと、生成した機械語命令を何番地に格納したらいいのかわからない。
>という、アセンブラ言語が単にニーモニックの記述だけでない、アプリとしての機能(OS的機能)が含まれているかという質問です。
アセンブラはアプリなので、ニーモニックを解釈したり、上記のアドレスの計算をしたりするのは、アセンブラというアプリの機能です。OSは関係ありません。OSの上でアセンブラというアプリが動いているだけ。
>LABER DC 100 とすると。
>これは、メモリに領域を確保し100をいれる命令だが、プログラムが変更されれば、メモリアドレスは変更される。
もしかして勘違いがあるかもしれませんが、
LABER DC 100
というのは、
「LABERという名前のラベルを現在の命令格納アドレスポインタの値で定義して、そのアドレスの1ワードに100を入れて、命令格納アドレスポインタを+1する」
で、
LABEL NOP
という機械語命令は、
「LABELという名前のラベルを現在の命令格納アドレスポインタの値で定義して、そのアドレスの2ワードにNOPの命令コードを入れて、命令格納アドレスポインタを+2する」
と、いうことで、DC命令と機械語命令はアセンブラの動作(ソースファイルをアセンブルして命令コードファイルを作る際の動作)としては格納するデータがちょっと違うだけです。DS命令も、データの長さが1とか2でなく可変であることと、データに何が入るか分からないというくらいの違いだけです。
No.3
- 回答日時:
>アセンブラ命令はプログラムが変更されればそのアドレスは移動するという、
>ハンドアセンブリでは、できない機能が含まれている。
これは違います。
「アセンブラ命令」に含んでいるのでは無く、「アセンブラ」というソフトのシンボリック機能です。
ラベルを定義して、コードやデータのサイズ等に応じて、ラベルに対応するアドレス値を計算して機械語に変換してくれる機能、という事になると思いますが、これはあくまでも「アセンブラ」というソフトの機能です。
アセンブラ言語というと、単にニーモニック機能である。的な説明が多く。アプリとして、利用者の利便性を考え、アドレス値をアプリとして計算する機能等、も含まれていると言う説明が解りました。
No.2
- 回答日時:
> 私の質問の主旨はという、アセンブラ言語が単にニーモニックの記述だけでない、アプリとしての機能(OS的機能)が含まれているかという質問です。
これは、Yes。
まあ、「疑似命令をもたないアセンブリ言語」も実現可能なので、あんまり厳密な答えではないですが。
個人的には、質問文の以下の部分に違和感を覚えました:
> アセンブラ命令はプログラムが変更されればそのアドレスは移動するという、ハンドアセンブリでは、できない機能が含まれている。
質問内容的にはノイズになっているというか、そう質問されるとそれにはNoと答えざるをえなくなるというか。
多分、ANo.1のnotnotさんも、そのことを指摘したかったのではないかと。
No.1
- 回答日時:
>アセンブラ命令はプログラムが変更されればそのアドレスは移動するという、ハンドアセンブリでは、できない機能が含まれている。
これは間違いです。
プログラム変更後にハンドアセンブルをやり直せば、アセンブラ命令(疑似命令とも言う)はハンドアセンブル可能です。
機械語命令:
CPUの命令に翻訳される命令
アセンブラ命令:
アセンブラに指示するための命令(データ定義、アドレスポインタを変更、プログラムの終わりを示すなど)
マクロ命令:
複数の他の命令をまとめて、一つの命令のように書けるアセンブラへの指示
面倒かどうかと言うことを除けば、全部ハンドアセンブル可能です。てか、プログラムがやることは、時間さえかければ人間にできます(制限時間のあるものはだめ)。これはあたりまえ。
この回答への補足
ハンドアセンブリで可能なのは解ります。
私の質問の主旨は。
プログラムの変更==>DCでアドレスの自動変更
という、アセンブラ言語が単にニーモニックの記述だけでない、アプリとしての機能(OS的機能)が含まれているかという質問です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
素朴な疑問 (C言語とアセン...
-
このアセンブラの意味を教えて...
-
ライン数とステップ数の違いは?
-
汎用レジスタのワーキングビッ...
-
MIPSアセンブラ言語について
-
PICに書き込むプログラムや変数...
-
アセンブラエディタ
-
エクセルVBAのIf,Then 構...
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
符号無し整数xを右にnビット回転
-
算術シフト演算が成り立つ理由...
-
[VBS] 素早くローテート演算したい
-
IEEE規格浮動小数点について
-
命令について
-
delph5 ボタンの色を変更するに...
-
フォートランの変数型と組み込...
-
言語の実行スピードで早い順に...
-
一般のソフトで画像を扱う場合...
-
ビットシフトってどんな時使うの?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アセンブラからC言語に変換する...
-
ライン数とステップ数の違いは?
-
実行ファイルからソースはみれる?
-
PC-9801でマシン語を学習するに...
-
[C言語→アセンブリ言語]はどう...
-
void __cdeclなど_
-
アセンブラwordという単位
-
アセンブラ言語がわかりません。
-
バイナリの実行ファイルをgccを...
-
SHの命令の意味について
-
PC-9801 MS-DOSでの実行ファイ...
-
アセンブラエディタ
-
PICに書き込むプログラムや変数...
-
PICのアセンブラからC言語へ変...
-
アセンブラのLA
-
【H8マイコン】HEWで埋め込みア...
-
ニーモニックコードを使って割...
-
7セグメントLEDの点灯について
-
アセンブラのコマンドについて
-
MASMの機種依存についてお尋ね...
おすすめ情報