跳转到内容

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 汇编器· 伪指令
指令扩展 浮点数 · 高级语言
华夏公益教科书