使用 MSM 設定 常數資料 給 暫存器 或 變數時,雖可透過 ACC 載入 與 存出指令來做,但是需二步驟.例如,要把常數 123456 設給變數 Var_1,撰寫如下:
LACCL 123456 ; ACC <= 123456
SACCL @Var_1 ; Var_1 <= ACC
這樣寫稍微麻煩了,其實可以使用 MOVx 指令,只要一行就可以達成目的,其中 x 表示 資料型態,共有三種(有連結可點選指令說明):
上面的例子可以改寫成如下:
MOVL @Var_1,123456 ; Var_1 <= 123456
只需要一行,比較方便!
op1 除了表示 變數(含陣列)以外,也可以是 暫存器,常見的用法如下:
MOVW @ARY[2],123 ; 將陣列 ARY[2] 內容設成 123
MOVF @PI,3.14159 ; 將 變數 PI 內容設成 3.14159
MOVW @AR0,123 ; 將暫存器 AR0 內容設成 123
MOVL @XAR2,1599 ; 將暫存器 XAR2 內容設成 1599
MOVW @ERR,0 ; 將暫存器 ERR 內容設成 0,可清除錯誤!
注意1:op1 型態 須與 指令型態 吻合,否則會產生編譯錯誤!
注意2:請不要用 本指令 給 ACC/AH/AL 載入數值,以免 狀態暫存器ST 內容不正確:
MOVW @AL,0 ; 避免使用!
MOVW @AH,123 ; 避免使用!
MOVL @ACC,12345 ; 避免使用!
MOVF @ACC,3.57 ; 避免使用!
關於 ACC 載入數值 還是使用 ACC載入指令 來處理為佳!
參考資料:ACC載入指令,ACC存出指令,MSM 指令參考表