【举例】
设传送前 N=0,Z=1,S=0,C=1
R1=0xF001 //R1 的值变为 0xF001,N=1,Z=0,S=0,C=1
寄存器寻址
【影响标志】 N,Z
【格式】
Rd = Rs
//将源寄存器 Rs 的数据送给目标寄存器 Rd
【举例】
设传送前 N=0,Z=1,S=0,C=1
R2=0xF001 //R2 的值为 0xF001,N=1,Z=0,S=0,C=1
//读取 0x20 单元的数据到 R1 中
R1 = [BP++] //读取 0x20 单元的数据到 R1 中,修改 BP=0x21
R1 = [BP--] //读取 0x21 单元的数据到 R1 中,修改 BP=0x20
R1 = [++BP] //修改 BP =0x21,读取 0x21 单元的数据
数据传送指令一览表
【格式】
[BP + IM6] = Rs
Rd = [BP +IM6]
//把 Rs 的值存储到基址指针 BP 与 6 位的立即
//数之和指出的存储单元。
// 把 基 址 指 针 BP 与 6 位 的 立 即 数 的 和 指 定 的 存
//储单元数据读到 Rd 寄存器。
【举例】
假设执行前 N=0,Z=1,S=0,C=1
R1=0x0010
[BP+0x0002]=R1 //N=0,Z=0,S=0,C=1
寄存器间接寻址
【影响标志】 N,Z
【格式】
[Rd] = Rs
【举例】 [++Rd] = Rs
Rd = [Rs++]
//把 Rs 的数据存储到 Rd 的值所指的存储单元。 //Rd 中存放的是操作数的地址。 //首先把 Rd 的值加 1,而后 Rs 的数据存储到 Rd 的 //值所指的存储单元间接寻址的存储单元 //读取 Rs 的值所指的存储单元的值并存入 Rd,而 //后、Rs 的值加 1