回复:求助32位存储器间接寻址

aabbcc

  • 帖子

    341
  • 精华

    2
  • 被关注

    29

论坛等级:侠圣

注册时间:2007-11-16

黄金 黄金 如何晋级?

发布于 2014-11-04 12:46:40

5楼

展开查看
以下是引用emil128在2014-10-30 16:08:41的发言 >4楼:楼主的程序写的还是很规范的
虽然从实际效果上
P#0.0 = L#0
P#0.1 = L#1
但既然其他地方都规范了,那表示地址的地方还是用P#比较好。

程序的错误也还是有的
1、DB问题
OPN DB 200
L DBB [MD 500]
读到的是DB200.DBB764而不是DB952.DBB764,毕竟只有2个DB寄存器,如果有3个DB参与就要另想办法了。
2、寻址
L MD 300
L MD 600
+D
L P#0.1
-D
T MD 300
这里为什么要减0.1?这样不是反而倒退了
3、偏移量叠加
在加完MD600后,再次循环时之前的MD600并没有减掉,会叠加。
比如第一个偏移5,第二个偏移7,第三个偏移3,结果实际效果是第二次偏移了12,第三次偏移了15
改成这样,加完偏移量去赋值,赋完值再减去偏移量
L MD 300
L MD 600
+D
T MD 300
A DBX [MD 300]
= DIX [MD 400]
L MD 300
L MD 600
-D
L P#0.1
+D
T MD 300
谢谢这么详细的解释和帮助.
1、DB问题
OPN DB 200
L DBB [MD 500]
读到的是DB200.DBB764而不是DB952.DBB764,毕竟只有2个DB寄存器,如果有3个DB参与就要另想办法了。
关于这个是我的笔误,实在是对不起.该处DB952.DBB764应该是DB200.DBB764.

2.对于我减0.1,原因是这样的,由于偏移量是从1---6(内容决定不能拿从0开始). 所以不是从0开始,但是存储的目标是28.0开始,所以我做了个比较笨的想法就减0.1了.

3.谢谢解释,我会修改下尝试.

再次谢谢!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54622条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。