引用
引用第4楼lms870601于2012-01-06 13:16发表的 :
看了另一个程序,迷惑了
[attachment=77281]
在这个程序中存入的数都是10进制数,可是结果如图中所示,D中的数没有转换成二进制就直接传送了。这两个指令交换或者传送内部的区别在哪
SMOV指令分为3步执行:
1、将源数据中,这里是D5中的数据转换为BCD码,K1234转换后就是1234,什么叫BCD码你应该知道,说白了,就是16进制数表示10进制。
所以这一步就是K1234转换为H1234.
2、进行移动,D5中M1的位置,这里就是K4,也就是H1234中的1,移动位数M2,这里是K2,也就是说移动H1234中的1和2,到目标,这里是D10的N位开始,这里是K3,也就是说,将1,2移动到D10的第三位 ,请注意,这里都是BCD码的操作,D10的数据是H5678,其第3位就是6,将1,2移动过来,就变成了H5128
3、D10数据被转换为二进制,因此,D10中的H5128变成了K5128.
与前面不同的是,SMOV线缆可以控制位数,XCH不可以。如果仅从高低字节的交换来看:
SMOV指令相当于:
BCD指令+XCH指令+BIN指令。
Good Luck~