KATUBLO
2019年01月26日

【アセンブリ言語】LDとLADの違いをわかりやすく解説

こんにちは。KATUOです。今回はLDとLADの違いについて解説していこうと思います。

 

 

LD(ロード命令)とは?

実際にコードを使って解説する

 

 

上のLDの処理は、実効アドレスに記憶されている内容をGR0に格納するという処理である。ここで言う実効アドレスはDATA1番地である。DATA1番地に3が記録されていたら、3をGR0に記録するという処理である。

 

LAD(ロードアドレス命令)とは?

こちらも実際にコードを使って解説する

 

 

実効アドレスをGR0に格納する。実効アドレスはDATA1番地である。つまりGR0に記録されるのはDATA1番地のアドレスである。

 

LDとLADの違いを整理

ここで両者の違いがわかったところで、それぞれの違いを整理しておく。

 

LD:記録するのは実行アドレスの内容

LAD:記録するのは実行アドレス自体

 

保存する内容がそれぞれことなることを理解してほしい。

 

実行アドレスとリテラル

わりと聞いたことある単語かもしれません。それぞれの意味を解説すると

 

実行アドレス:主記憶装置のアドレス

リテラル:値?

 

 

となります。リテラル=値?これではわからないと思うので例題と一緒に付け足すと

 

 

LD、LA、双方10をGR0に格納するという処理です。LDは実行アドレスの内容を書き込む命令ですが、リテラルを用いると、リテラルの後ろの値を書き込むことができます。

 

 

 

クソ簡単なサンプルをCASLIIに読ませてみた

 

 

↑アセンブラ言語をweb上で簡単に実装できるサービス。1990年代を連想させるデザイン。

ここで以下のコードを実行してみた。

 

 

LD GR1,3

↑のところでGR1に正しく値が入らなかった。これは3というアドレスの中に値が存在しないことが原因であろう。

 

 

とLD→LADに変換することで、GR1に0003が保存された。補足ですが、アドレスは通常16進数4桁で表記されます。

 

 

 

アセンブラ言語を学ぶ上でおすすめの参考書

64ビットアセンブラ入門―64ビットCPUの基本構造もやさしく解説

↑良さげな参考書。実際、大学の授業やネットで調べるよりも参考書でじっくり勉強した方が身につくと思います。将来有望な情報工学を学ぶ学生は基礎力を学生のうちに身に付けるのが大切であると思うので、リンク先の参考書を一目通して置くと良いかもしれません。

最後まで読んで頂き、ありがとうございました。
SNS等でのシェアが頂ければ幸いです。

関連記事

プロフィール

@KATUO

現在都内私立大学に通う大学4年生。大学では電気電子工学を専攻。大学2年の夏頃に、プログラマーの長期インターン募集の広告が目に止まり、独学でプログラミングの学習をスタート。この時期からプログラミングにどハマりし、現在までに「AIスタートアップ」「Webマーケティング会社」でエンジニアとしての業務に没頭してきた。

過去の投稿