mov 指令的逻辑。
mov 指令没什么好说的,接下来看 立即数。
立即数的范围在 0-255 之前,这个指令的格式有关,立即数,只用8个位来表示,所以最大只有255.
那么它的规则是什么呢?
就是,一个16进制数, 1的个数不能超过8个, 超过8个了, 肯定是大于255的,如果是没有超过8个的,有可能通过移位的方式来 将 所有的1 都转移到 8个位之内。
举个例子。
0x80000001
而二进制是 1000 0000 0000 0000 0000 0000 0000 0001
开始移位,首先就两个1 , 有可能凑到 8位以内。
先向左移动2位。
00 0000 0000 0000 0000 0000 0000 0001 10
然后去掉前面最多的偶数个0 ,去掉后面最大偶数个0 。
变成
01 10 , 这是立即数。
接下来看看 机器码的格式。
接下来具体解释一下, 各个位的含义。
接下来举一个 Mov 的例子。
E3A01106 二进制如下。