发布于 2012-11-04 08:47:37
4楼
随便做了个例子。
例子是把入口的间接寻址的位置起连续的两个字传送到出口的间接寻址处。
下面程序开始,导入即可。
ORGANIZATION_BLOCK MAIN:OB1
TITLE=程序注释
BEGIN
Network 1
// 程序段注释
LD I1.5
CALL SBR0, &VB0, &VB10000
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK SBR_0:SBR0
TITLE=
VAR_INPUT
入口:DWORD;
出口:DWORD;
END_VAR
BEGIN
Network 1
// 把入口处的第一个字传到出口
LD SM0.0
MOVW *LD0, *LD4
Network 2
// 把入口处的第二个字传到出口处的第二个字
LD SM0.0
MOVD LD0, LD8
+D +2, LD8
MOVD LD4, LD12
+D +2, LD12
MOVW *LD8, *LD12
Network 3
// 照样可以把后面的第三第四等等的传送。
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中断例程注释
BEGIN
Network 1
// 程序段注释
END_INTERRUPT_BLOCK
程序完。
两个参数通过运算,便收纳了4个变量。当子程序提供的参数入口数量不足的时候,可以这样使用间接寻址获取大量的可操作参数。