子程序调用中带参数子程序的问题 点击:728 | 回复:7



肥肥爱吃肉

    
  • 精华:0帖
  • 求助:14帖
  • 帖子:29帖 | 123回
  • 年度积分:0
  • 历史总积分:168
  • 注册:2018年2月18日
发表于:2018-10-18 15:54:42
楼主


zichengxu.png

zicx.png

子程序调用里面有个带参数调用子程序,我不明白的问题有几个。

1.局部变量表中的IN/OUT/IN-OUT都有什么实际的意义?

2、局部变量表中自动分配的地址是否与图1 中的I,Q,VW地址是一一对应的?程序运行时是怎样的一种对应关系呢?

3、子程序在被调用后,是否也是遵循由上到下的顺序执行程序?是不是每一个程序都执行完后才会跳转回调用子程序的地方?




yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10210回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2018-10-18 16:20:22
1楼

1,2两个问题实际是一个问题。

既然是带参数的子程序,那么调用子程序的程序要通过什么将参数传递给子程序呢,当然通过IN变量了,那么子程序通过什么将调用结果反馈回来呢,当然通过OUT变量了,那么为什么会有IN_OUT变量呢,IN_OUT变量相当于传递给子程序实际的变量地址,如果你知道一些高级语言知识的话,那么值传递和地址传递参数是有些不同的。

通过传递值,调用端将I,M等值传递给子程序中对应的参数,如果是IN_OUT,那么将地址传递给子程序。


当然是从上往下的顺序执行程序,请注意,并非程序执行完才跳回,而是扫描完才跳回,因此哪怕你在子程序中放个延时,它不会等延时完成才跳回的。

shadow_Jeff

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 11回
  • 年度积分:0
  • 历史总积分:89
  • 注册:2017年6月04日
发表于:2018-10-18 17:20:22
2楼

IN_OUT是地址引用,可以看成别名。例如,你的程序变量中定义了变量a是IN_OUT类型,你传进去的值是5,但是你程序里面进行赋值为6,那你再看a的值时,它是6.

肥肥爱吃肉

  • 精华:0帖
  • 求助:14帖
  • 帖子:29帖 | 123回
  • 年度积分:0
  • 历史总积分:168
  • 注册:2018年2月18日
发表于:2018-10-18 21:14:40
3楼


回复内容:

对: yuanle 1,2两个问题实际是一个问题。既然是带参数的子程序,那... 内容的回复!

-------------------------

有一点点理解了,但是还是不太明白。我是不是应该看一下《计算机汇编语言》这本书?

肥肥爱吃肉

  • 精华:0帖
  • 求助:14帖
  • 帖子:29帖 | 123回
  • 年度积分:0
  • 历史总积分:168
  • 注册:2018年2月18日
发表于:2018-10-18 21:18:08
4楼


回复内容:

对: shadow_Jeff IN_OUT是地址引用,可以看成别名。例如,你的程序变... 内容的回复!

-------------------------

IN-OUT是不是将指定寄存器地址的值传入子程序中,经过子程序的运算之后再传回来到这个地址,但传入的地址的值和反馈回来的地址的值有可能不一样?

上海联安

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 90回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2018-11-19 11:32:11
5楼

IN_OUT是地址引用

上海联安

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 90回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2018-11-19 11:32:23
6楼

shadow_Jeff IN_OUT是地址引用

Smile-lyc

  • [管理员]
  • 精华:114帖
  • 求助:50帖
  • 帖子:2793帖 | 22283回
  • 年度积分:311
  • 历史总积分:144042
  • 注册:2006年8月04日
发表于:2018-12-05 12:52:44
7楼

建议大家分享一下问题解决经验或办法。互相学习、交流、探讨。这也是论坛活动宗旨所在。


热门招聘
相关主题

官方公众号

智造工程师