Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

機械語のオペコードとオペランド

解決したいこと

課題でプログラムを打ち、下記のような実行結果が出たのですが、
image.png
この中から機械語のオペコードとオペランドをいくつかピックアップして、何を
意味しているものか知りたいです。

自分で試したこと

ネットで色々調べたりしたのですが、よくわかりませんでした。

お願いします。

0

1Answer

オペランドコードの一覧表があると思うので、そこからオペランドを調べればよいかと思います。

対象物によって利用するレジスタや命令形式が変わるので、何を意味しているのかを知る為には、該当するオペランドコード表を調べるしかないかと思います。

たとえば、8086 系のであれば、以下のように大学のサイトで説明があったりしますので、概要はこういうところで学ばれるのも良いかもしれません。
まずは push, move 等の基礎命令が何を意味するかを理解すると、分岐して詳細化された命令が理解しやすくなると思います。

例えば
mov a, b
では、movがオペコードで、aが第一オペランド、bが第二オペランドです。
つぎに、オペコードmovの説明に移ります。
movは、基本的に第一オペランドに第二オペランドを代入します。
mov eax, dword ptr [b]
は第一オペランドがeaxレジスタ、第二オペランドがdword ptr [b]です。この第二オペランドは変数bの内容を示しています。ptrはデータの型を指定する演算子でdword ptrで[b]が4バイトであることを表しています。dwordは4バイトであることを表します (dword以外のその他の型は下の表を参考にしてください)。[b]だけだとそこから始まる何バイトのデータを使うのかが分からないためにptr演算子を使う必要があります。
この命令で行っていることをまとめると「bが示すメモリ上の4バイトのデータをeaxレジスタに代入する」ということになります。

0Like

Your answer might help someone💌