上面的顺序我改了试了。结果无论怎么调前调后。结果都是一样。
刚才我还做了个简单的程序试验中断和子程序的关系。下面的可以导入试机。
ORGANIZATION_BLOCK 主程序:OB1
TITLE=程序注释
BEGIN
Network 1 // 程序执行结果。 1.中断程序的确可以嵌套一级的子程序。QB0;QB1都得到了相应的加一执行。 2.MB0结果为0。没有因为中断程序的值12影响。 3.MB1结果为0,没有因SBR 0的返回而影响。 4.MB2结果为20,值是由SBR 0建立的。被横向传送到这里了。 5.MB3结果为99,值是由SBR 0建立的。被横向传送到这里了。 6.MB4的值仍然是调用SBR 0之前的值。经过调用子程序后没有带来影响。 以上可加以说明横向传送的存在。
LD SM0.1
ENI
ATCH INT0, 0
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK SBR_0:SBR0
TITLE=子程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
LD SM0.0
MOVB LB0, MB0
MOVB 20, LB0
INCB QB0
MOVB 99, LB1
END_SUBROUTINE_BLOCK
SUBROUTINE_BLOCK SBR_1:SBR1
TITLE=子程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
LD SM0.0
MOVB LB0, MB2
MOVB LB1, MB3
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中断程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
LD SM0.0
INCB QB1
MOVB 12, LB0
CALL SBR0
MOVB LB0, MB4
MOVB LB1, MB1
CALL SBR1
END_INTERRUPT_BLOCK
程序执行结果。
1.中断程序的确可以嵌套一级的子程序。QB0;QB1都得到了相应的加一执行。
2.MB0结果为0。没有因为中断程序的值12影响。
3.MB1结果为0,没有因SBR 0的返回而影响。
4.MB2结果为20,值是由SBR 0建立的。被横向传送到这里了。
5.MB3结果为99,值是由SBR 0建立的。被横向传送到这里了。
6.MB4的值仍然是调用SBR 0之前的值。经过调用子程序后没有带来影响。 以上可加以说明横向传送的存在。