MSM:常數搬移指令

使用 MSM 設定 常數資料暫存器變數時,雖可透過 ACC 載入 與 存出指令來做,但是需二步驟.例如,要把常數 123456 設給變數 Var_1,撰寫如下:

LACCL  123456   ;  ACC <= 123456
SACCL  @Var_1   ;  Var_1 <= ACC

這樣寫稍微麻煩了,其實可以使用 MOVx 指令,只要一行就可以達成目的,其中 x 表示 資料型態,共有三種(有連結可點選指令說明):

  • MOVW  op1,短整數常數
  • MOVL  op1,長整數常數
  • MOVF  op1,浮點數常數

上面的例子可以改寫成如下:

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 指令參考表


 

 

發表迴響