在编写有参数子程序时,其第一个指令必须是LDI(装入立即数)指令。LDI指令用于将参数传递给子程序。
LDI指令
LDI指令的格式如下:
LDI Rd, K
- Rd:寄存器(例如,R16、R17、R18、R19、R20、R21、R22、R23)
- K:立即数(例如,10、20、30)
LDI指令将立即数K加载到寄存器Rd中。例如,以下指令将立即数10加载到寄存器R16中:
LDI R16, 10
将参数传递给子程序
在有参数子程序中,LDI指令用于将参数从调用程序传递到子程序。参数存储在调用程序中的寄存器中。LDI指令将这些寄存器中的值加载到子程序中的寄存器中,以便子程序可以访问这些参数。
例如,假设我们有一个子程序subroutine,它接受两个参数,存储在寄存器R16和R17中。在调用程序中,我们可以使用以下LDI指令将参数传递给子程序:
LDI R16, 10 LDI R17, 20 CALL subroutine
在子程序subroutine中,我们可以使用以下LDI指令访问这些参数:
LDI R18, R16 LDI R19, R17
注意事项
- LDI指令只能用于传递立即数或地址。它不能用于传递其他类型的数据,例如字符串或数组。
- 在有参数子程序的第一个指令之后,可以出现其他指令,例如ADD、SUB、MUL、DIV等。这些指令用于对参数进行操作或执行其他任务。
- 有参数子程序的第一个指令不必一定是LDI指令。LDI指令是最常见的指令,因为它可以轻松地传递立即数和地址。
例子
下面是一个使用LDI指令的有参数子程序的示例:
cpp .include "m16c.inc".org 0x0000LDI R16, 10 LDI R17, 20 CALL subroutine.end在这个例子中,子程序subroutine接受两个参数,存储在寄存器R16和R17中。LDI指令用于将这些参数传递给子程序。
总结
LDI指令是编写有参数子程序时使用的重要指令。它用于将参数从调用程序传递到子程序。LDI指令的格式为LDI Rd, K,其中Rd是寄存器,K是立即数或地址。
请问在PLC梯形图中应将LD或LDI指令作为一个逻辑行的开始,是否正确?说说你的理解.
不一定,没有理解,想怎么编就怎么编。 程序是我编的,只要功能要求都对了,谁管我是用常开常闭触点开始,还是用别的开始呀。 比如如果需要用到中断的话,我喜欢把EI指令放第一个,程序运行就启动中断,而EI指令前面还不能有控制,直接左母线连到右母线。 纯粹是看程序能否满足功能要求,和程序员的个人习惯。 望采纳。 。 。 。 。 。
本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!
添加新评论