跳轉到內容

360 彙編/360 指令/MVC

來自華夏公益教科書,開放的書籍,構建開放的世界

MVC - SS - 操作碼 D2 - 移動字元

MVC 指令允許將 1 到 256 個字元從記憶體中的一個位置移動到另一個位置。它是一個六位元組的 SS(儲存到儲存)指令。與 360 系列一樣,移動是從右到左進行的,因此第一個引數是要移動到的目標(帶可選長度說明),第二個引數是要移動的源。要在一 個指令中移動超過 256 個位元組,應該使用 MVCL 指令。

示例用法

[編輯 | 編輯原始碼]
       MVC  TARGET,SOURCE      MOVE SOURCE TO TARGET
       MVC  TARGET(40),SOURCE  MOVE 40 BYTES FROM SOURCE TO TARGET
       MVC  TARGET+10(20),SOURCE+3  MOVE 20 BYTES STARTING AT SOURCE+3 TO TARGET+10
       MVC  5(3,14),SOURCE     MOVE 3 BYTES FROM SOURCE TO THE ADDRESS BEGINNING AT
*                              REGISTER 14 PLUS 5

以下示例通常用於清除列印行

       MVI TARGET,C' '           PUT A BLANK AT THE BEGINNING OF THE LINE
       MVC TARGET+1(132),TARGET  MOVES THE FIRST BLANK TO CHARACTER 2, WHICH MOVES TO CHAR. 3, THEN 4 AND SO ON
MVC D1(L,B1),D2(B2)

其中

  • D1 是從基址暫存器 B1 開始的偏移量,是目標地址
  • D2 是從基址暫存器 B2 開始的偏移量,是源地址
  • L 是從源到目標移動的位元組數,有效值為 1 到 256。

操作碼

[編輯 | 編輯原始碼]
SS 指令(6 位元組)以十六進位制表示
位元組 1 位元組 2 位元組 3 位元組 4 位元組 5 位元組 6
(8 位) (8 位) (位元組 3 的前 4 位) (位元組 3 的後 4 位) (8 位) (位元組 5 的前 4 位) (位元組 5 的後 4 位) (8 位)
操作碼
D2
L-1 B1 D1 (12 位) B2 D2 (12 位)

MVC 指令不應被視為 NOP,因此必須移動至少一個位元組。由於 1 位元組長度值只能包含 0 到 255 的值,因此插入指令中的 要移動的長度比原始碼中的實際 L 值少 1,或者說,實際要移動的長度比指令中儲存的長度欄位多 1。

可用性

[編輯 | 編輯原始碼]

MVC 指令在所有型號上都可用。

指令用途

[編輯 | 編輯原始碼]

MVC 指令可用於移動 1 到 256 個位元組的資料。 MVCL 指令在 370 及更高版本 的機器上可用,用於移動更大容量的資料。

典型用法

[編輯 | 編輯原始碼]

當程式需要將字串從一個位置移動到另一個位置時。如果未指定長度,彙編器將使用指定的目標欄位長度。如果目標 長度超過 256 個位元組,彙編器將發出錯誤標誌。可以移動的最小長度為一個位元組。

右運算元中指定的地址中的字元字串將被移動到左運算元中指定的地址中,長度為指定的長度。位元組一次移動一個。

異常和故障

[編輯 | 編輯原始碼]
  • 保護異常 - 源或目標超出分配給此任務的合法地址範圍
上一個指令
MSTA
360 彙編指令   下一個指令
MVCDK
上一個操作碼
D1
下一個操作碼
D3
360 組合語言
360 家族 簡介 · 基本常見問題解答 · 360 家族 · 360 架構
360 指令集 360 指令 · 分支指令 · 資料傳輸指令 · 控制流指令 · 算術指令 · 邏輯指令 · 移位和旋轉指令 · 特權指令 · 其他指令
語法和彙編器 360 彙編器· 偽指令
指令擴充套件 浮點數 · 高階語言
華夏公益教科書