私は、MOV
命令がその両方のオペランドのメモリ位置を持つことができないことを読みました。
Like:MOV [0012H], [0016H]
は許可されていません。
なぜそうなのか?
そして、他の命令はその両方のオペランドのメモリ位置を持つことができますか?
彼らがCPUを作成したとき、それは設計上の決定でした。より多くのアドレッシングモードとより多くの命令、より大きな(命令を表すために必要なビット数の観点から)命令が取得します。また、命令が大きいほど、メモリからのフェッチに時間がかかります。
つまり、x86の命令セットは直交していません。非常に限られた量のアセンブリコードしか記述されていないことは、少なくとも今では必ずしも悪いことではありません。
他のいくつかのCPU(たとえば、同じ時代に設計されたMC680xx)はそれを行うことができます。