アセンブラ言語における「ラベル」とは何なんでしょうか?初心者でもわかりやすいように教えてください。する質問をすることでしか得られない、回答やアドバイスがある。15分調べてもわからないことは、質問しよう!質問するただいまの回答率89.63%トップアセンブリ言語に関する質問アセンブリ言語JavaScriptを有効にしてくださいアセンブラ言語における「ラベル」とは何なんでしょうか?初心者でもわかりやすいように教えてください。第2回:ITproのページにラベルとは,アセンブラのプログラムのオペランドに名前(ラベル名)を付けたものです。この名前は,行のメモリー・アドレスを表しています。プログラムの中で123番地のような具体的なメモリー・アドレスの値を指定するのは面倒なので,ラベルを使うわけです。ラベルは,行の先頭に書きます。プログラムをマシン語に変換すると,ラベルの名前がその位置のメモリー・アドレスの値に置き換わります。attachmentクリップ1気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。...こんなふうに各命令語の長さを計算して「さて何番地だっけ」と考えるのはいかに面倒なアセンブリ言語を使おうとするプログラマーでもさすがに悲鳴を上げると思います。そんなことをしなくて済むようにラベルを使います。...各命令語が何バイトになり、それぞれ何番地から始まるか人間には退屈な計算でしかありませんが、計算機であれば文句をいわずにもくもくと計算してくれます。計算がめんどくさいから計算機を使うわけなので、こうした退屈な計算は計算機にやらせるのが妥当だと思います。本件はアセンブリ言語に限ったことではありません。プログラム言語で用いる変数名や関数名は究極的にはメモリー上のどこかの場所を示すものです(相対番地か絶対番地かの違いはありますが)。それも上記と同様、プログラムコードの中でどんなサイズのものをいくつ使うかによってメモリー上の配置が決まりますがそれを一々人間が気にしなくてはならないのだとしたらプログラミングは今よりずっと苦行になるはずです。いうことを避けるために「人間が読みやすい他と区別が付けられるようなラベル=識別子」を付与して実際にそれがどのように配置されるかは言語システムの方でよきに計らうようになっています。蛇足ですが最初の例に載せたアドレスはでたらめです。一つ一つの命令が実際に何バイトになるかは大抵の場合気にする必要がないので自分も気にしません。知りたい場合はデータシートを見ると分かりますが、実際にコンパイルしてobjdumpなどで逆アセンブルしてみてもすぐにわかりますね。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。commentコメント投稿linkcheckベストアンサー-1(ラベルとは)メモリ番地にニックネームをつけるようなものなのでしょうか?そうです。いう使い方が一番多いし、基本です。覚えて構わないと私は思います。;ANS番地にデータの格納場所を確保しておくここでは「A」「B」「ANS」という3つのラベルがあります。アセンブルすると、それぞれのラベルはメモリの番地(という何らかの数値)になります。プログラマ(人間)がプログラムを書く時、そのメモリ番地が何番地になるのか、簡単に分かる(或いは、決められる)ラベルもありますが、ほとんどのラベルは何番地になるのか簡単には分かりません。人間がいちいち番地まで計算することは、およそ不可能だと思ってください。それを計算してくれるのがアセンブラ(とリンカ)です。その昔、アセンブラが作られる以前は、機械語でプログラムを作るしかありませんでした。番地が決まらないと機械語も決まらない、そんな機械語命令がたくさんあります。人が全ての番地を計算したのです。プログラムは書いたら一度で動くとは限りませんから、簡単な修正でも番地の計算はやり直さなければなりません。それはそれは大変な作業だった、と想像できるではありませんか。プログラムを作る時、「こういう変数(記憶場所)があればいいな」とか、「ここから、この場所にジャンプしよう」などと考えるものです。そこにラベルを書くのです。何番地なのか自分で考えなくても(計算しなくても)、アセンブラが計算してくれます。プログラマは、プログラムの要所要所に、自分に都合の良い名前・ニックネームをつけてラベルを書くのです。繰り返しますが、いちいち番地を計算する必要はありません。そのようにしてプログラムを作っていくことができます。そのためにラベルを使うことにしたのです。上記の例では、足し算をする2つの数(変数)の番地に「A」「B」とニックネームをつけ、答え(ANSwer)を格納する変数のメモリ番地に「ANS」とニックネームをつけました。リンク先のページには「リスト1●条件分岐を行うプログラム」、「リスト2●繰り返しを行うプログラム」も例示されていますね。そこには「LBL1」「LBL2」というラベルが書かれています。どちらも、そのプログラム中の、ある特定のメモリの番地のことです。評価が高い回答ほどページの上位に表示されます。remove低評価1回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。14:09「アセンブラ言語」という呼び方は、使う人が割と多いようですが、間違いだと思います。少なくとも違和感のある使い方です。アセンブラ(assembler)とは「アセンブルするプログラム」を指すのであって、言語の名前ではありませんから。assembleは「組み立てる」という意味の動詞です。language)と呼ぶのが正しいと思います。「アセンブラ言語」という呼び方は、使う人が割と多いようですが、間違いだと思います。少なくとも違和感のある使い方です。アセンブラ(assembler)とは「アセンブルするプログラム」を指すのであって、言語の名前ではありませんから。assembleは「組み立てる」という意味の動詞です。language)と呼ぶのが正しいと思います。20:57アセンブリランゲージをアセンブラと呼んでも間違いではありません。アセンブラと呼んでいます。アセンブリランゲージをアセンブラと呼んでも間違いではありません。アセンブラと呼んでいます。21:01アセンブラが作られる以前は機械語でプログラムを作るしかなかったというのも誤りです。ニーモニックをハンドアセンブルしていました。アセンブラが作られる以前は機械語でプログラムを作るしかなかったというのも誤りです。ニーモニックをハンドアセンブルしていました。22:17いずれにしても苦行には違いない。いずれにしても苦行には違いない。「手続き型プログラミング」と「オブジェクト(指向)型プログラミング」の違いについて解決済アセンブリ言語の基本part3受付中アラインメントのサイズ解決済アセンブリ言語を使うメリットについて。解決済volatileが必要な場面を見つけ出す解決済プログラミング言語を複数同時に勉強するのは受付中リンカの働き、アセンブリプログラムをアセンブルにより機械語に変換する。volatileの意味がよく分かりません。思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る閉じるトップアセンブリ言語に関する質問アセンブラ言語における「ラベル」とは何なんでしょうか?初心者でもわかりやすいように教えてください。頂いたご意見への回答は行っておりません。