80 likes | 364 Views
XXXXX. XXXXX. 变址寄存器. 1. 2. 3. (一)寄存器变址操作的一般规则. 变址的方法是将变址 寄存器 V 和 Z 这两个 16 位 的寄存器放在各种寄存 器的后面,充当操作数 地址的偏移量. 操作数的实际 地址就是寄存器的 当前值以及 V 和 Z 内 容相加后的和. 当源或目标寄存器用 [S · ] 或 [D · ] 表示时,就能进行变址操作。对 32 位数据进行操作时,要将 V 、 Z 组合成 32 位( V , Z )来使用,这时 Z 为低 16 位, V 为高 16 位. 4. 当 V=8 , Z=14 时,
E N D
XXXXX XXXXX 变址寄存器
1 2 3 (一)寄存器变址操作的一般规则 变址的方法是将变址 寄存器V和Z这两个16位 的寄存器放在各种寄存 器的后面,充当操作数 地址的偏移量 操作数的实际 地址就是寄存器的 当前值以及V和Z内 容相加后的和 当源或目标寄存器用[S·]或[D·]表示时,就能进行变址操作。对32位数据进行操作时,要将V、Z组合成32位(V,Z)来使用,这时Z为低16位, V为高16位
4 当V=8,Z=14 时, D(5+8)=D(l3); D(10+14)=D(24); 则(D13)→(D24) 当V=9,D(5+9)=D(14), 则(D14) →(D24) 图7.11 变址寄存器的应用 (一)寄存器变址操作的一般规则 可以用变址寄存器进行变址的软元件是X、Y、M、S、 P、T、C、D、K、H、KnX、KnY、KnM、。例如V=6,则 K20V为K26(20+6=26);如果V=7,则K20V变为K27 (20+7=27)。变址寄存器应用如图7.11所示: 如: 但是,变址寄存器不能修改V与Z本身或位数指定用的Kn参数。 例如K4M0Z有效,而K0ZM0无效。
图7.12 变址操作举例 第一行指令执行25→V,第二行指令执行30→Z,所以变址寄存器 值:V=25, Z=30。第三行指令执行(D5V)+(D15Z)→(D40Z) [S1·]为D5V:D(5+25)=D30 源操作数1的实际地址 [S2·]为D15Z:D(15+30)=D45 源操作数2的实际地址 [D·]为D40Z:D(40+30)=D70 目操作数的实际地址 所以,第三行指令实际执行(D30)+(D40)→(D70),即 D30的内容和D45的内容相加,结果送入D70中去; 【例1】 求执行加法操作后源和目操作数的实际地址 解:
图7.13 16位指令操作数的变址举例 (二)16位指令操作数的变址 【例2】图7.13是16位指令操作数修改的例子 将K0或K1的内容向变址寄 存器V0传送,当X001=ON, (1)V0=0时,(D0+0=D0), 则K500的内容向D0传送; (2)若V0=10时D0+10=D10), 则K500的内容向D10传送
图7.14 32位指令操作数的变址举例 (三)32位指令操作数的变址 【例3】图7.14是32位指令操作数修改的例子 DMOV是32位的指令,因此在该指令中使用的变址寄存器也必须指定32位; 在32位指令中指定了变址寄存器的Z寄存器(Z0~Z7)及与之组合的V寄存器(V0~V7) 即使Z0中写入的数 值不超过16位数值范围 (0-32767),也必须 用32位的指令将V,Z两 方向改写,如果只写入 Z侧,则在V侧留有其它 数值,会使数值产生很 多的运算错误
图7.15 常数K的修改举例 (四)常数K的修改 【例4】图7.15是常数的修改的例子 当X005=ON时: (1)若V5=0,(K6+0=K6), 则将K6的内容向D10传送 (2)若V5=20时,(K6+20=K26), 则将K26的内容向D10传送
图7.16 8进制软元件(编号)的变址举例 (五)输入输出继电器八进制软元件的变址 【例5】输入输出继电器8进制软元件的变址的例子 这种变换是将变址值0、 8、16通过(X0+0=X0)、 (X0+8=X10)、X0+16= X20)的八进制的换算,然 后相加软元件的编号,使输 入端子发生变化 用MOV指令输出Y7 ~Y0,通过变址修改输 入,使其变换成X7~X0, X17~X10,X27~X20