引用
引用第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~