アセンブラ初心者スレッド 2©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/04/13(木) 17:35:55.70ID:1WMn3pSz
初心者OK!質問大歓迎!のアセンブラのスレッドです。
基本情報の勉強中の人、PICやH8を勉強中の学生などなど…

前スレ
アセンブラ初心者スレッド
http://echo.2ch.net/test/read.cgi/tech/1314502612/

関連スレ
アセンブラ 13
http://echo.2ch.net/test/read.cgi/tech/1314512680/
2019/11/02(土) 22:19:49.20ID:dJ3V2vrm
>>487
CASL II は始めて見たんだけど、
http://masudahp.web.fc2.com/casl2/casl2110.html
http://masudahp.web.fc2.com/casl2/casl2120.html

ADDA GR0, =#0045
のように書くと、自動的にラベルを生成して、
ADDA GR0, DATA1
・・・
DATA1 DC #0045
と書いたの等価になるらしいから、忘れるとか言う問題ではなく、
CASL II言語の基礎なので自然に覚えるしかないですね。
アセンブリプログラミングには、このくらいの記憶力は必要です。
ただ、丸覚えするのではなく、ちゃんと理解すれば自然に覚えられると思います。
2019/11/02(土) 22:41:38.43ID:dJ3V2vrm
>>488
実際のCASL IIがそう書けるかどうかはともかくとして、
数学記号と同様の感覚で記号の対応関係や「類推(推論)」で考えれば、
ADDA GR0,#0045
と書くと、アドレス #0045 番地のメモリーに入っている内容を読み出した値を
GR0に足す、という意味になります。# は以後の数値が16進数である事を表す
記号です。初めに言ったようにこの書き方がCASL II 言語で実際に出来るか
どうかは分かりませんが、意味で考えるとそういう意味になるでしょう。一方、
ADDA GR0,=#0045
は、>>488 に書いたように、0045 という16進数の値を入れた領域を
自動的に確保して、そのアドレスを xxx とすると、自動的にその場所を
ADDA GR0,xxx
という命令に置き換えるという意味です。
かなり違う意味です。ですから、覚える覚えないの話では無い事が分かります。
2019/11/02(土) 22:47:11.43ID:dJ3V2vrm
>>489
x86アセンブラを知っている人ならば、
ADDA GR0,GR1    --->  mov GR0,dword ptr [GR1]
ADDA GR0,#0045   --->  mov GR0,dword ptr [0045h]
ADDA GR0,=#0045  --->   mov GR0,0045h
また、C言語を知っている人ならば、
ADDA GR0,GR1   --->  GR0 += *(DWORD *)GR1;
ADDA GR0,#0045  --->  GR0 += *(DWORD *)0x0045;
ADDA GR0,=#0045 --->   GR0 += 0x0045;
となります。

対応関係は、第二オペランドに X を書くと、[X] や、*X の意味になり、
=X と書くと、X の意味になります。
491デフォルトの名無しさん
垢版 |
2019/11/02(土) 22:48:31.37ID:dJ3V2vrm
>>490
すみません、movとaddを書き間違えました。正しくはこうです。:
x86アセンブラを知っている人ならば、
ADDA GR0,GR1    --->  add GR0,dword ptr [GR1]
ADDA GR0,#0045   --->  add GR0,dword ptr [0045h]
ADDA GR0,=#0045  --->   add GR0,0045h
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況