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