引用
引用第4樓lms870601于2012-01-06 13:16發(fā)表的 :
看了另一個(gè)程序,迷惑了
[attachment=77281]
在這個(gè)程序中存入的數都是10進(jìn)制數,可是結果如圖中所示,D中的數沒(méi)有轉換成二進(jìn)制就直接傳送了。這兩個(gè)指令交換或者傳送內部的區別在哪
SMOV指令分為3步執行:
1、將源數據中,這里是D5中的數據轉換為BCD碼,K1234轉換后就是1234,什么叫BCD碼你應該知道,說(shuō)白了,就是16進(jìn)制數表示10進(jìn)制。
所以這一步就是K1234轉換為H1234.
2、進(jìn)行移動(dòng),D5中M1的位置,這里就是K4,也就是H1234中的1,移動(dòng)位數M2,這里是K2,也就是說(shuō)移動(dòng)H1234中的1和2,到目標,這里是D10的N位開(kāi)始,這里是K3,也就是說(shuō),將1,2移動(dòng)到D10的第三位 ,請注意,這里都是BCD碼的操作,D10的數據是H5678,其第3位就是6,將1,2移動(dòng)過(guò)來(lái),就變成了H5128
3、D10數據被轉換為二進(jìn)制,因此,D10中的H5128變成了K5128.
與前面不同的是,SMOV線(xiàn)纜可以控制位數,XCH不可以。如果僅從高低字節的交換來(lái)看:
SMOV指令相當于:
BCD指令+XCH指令+BIN指令。
Good Luck~