迪文科技论坛

 找回密码
 立即注册
搜索
查看: 63|回复: 7

【提问】MOVXR执行后,源地址的数据是不是清零?

[复制链接]

1

主题

8

回帖

42

积分

新手上路

Rank: 1

积分
42
发表于 2024-10-23 11:26:58 | 显示全部楼层 |阅读模式
最近在做迪文密码设置的功能,有一个官方例程


第一步能够看懂,把0008放到R0,R1中,5A00放到R20,R21中,1008放到R22,R23中,直到0002放到R26,R27中,然后把R20开始到R27的数据放到0008地址开始的四个字中;
第二步进入LOOP1就看不懂了,R0,R1存放的还是0008,然后把0008的地址中的数据放到R20中,由于第一步已经把R0的数据5A00放到0008及后面的地址中了,所以现在R20的数据还是5A,接下来执行IJNE,非零跳转,0008一直是5A,一直往R20放入5A这个数据,然后一直判断非0,这不就是死循环了吗,但是把历程下进去又能运行,求助大神能不能帮我看一下是我哪里理解错了吗

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

1

主题

8

回帖

42

积分

新手上路

Rank: 1

积分
42
 楼主| 发表于 2024-10-23 11:57:17 | 显示全部楼层
求助大神,是不是MOVXR执行完之后,源地址的数据就清零了,比如 MOVXR R20,1,1;把0008地址的数据放到R20里,然后0008地址的数据就清零了,下一次再执行到这里就是把0写道R20里,然后往后执行???
回复

使用道具 举报

0

主题

525

回帖

7841

积分

论坛元老

Rank: 8Rank: 8

积分
7841
发表于 2024-10-23 14:16:05 | 显示全部楼层
1long3 发表于 2024-10-23 11:57
求助大神,是不是MOVXR执行完之后,源地址的数据就清零了,比如 MOVXR R20,1,1;把0008地址的数据放到R20里 ...

您箭头2指的位置是先判断了0X0008地址的高字节是否清0,清0再进行其他操作呢。不判断的话有可能造成逻辑混乱的。
回复

使用道具 举报

1

主题

8

回帖

42

积分

新手上路

Rank: 1

积分
42
 楼主| 发表于 2024-10-23 14:28:40 | 显示全部楼层
jufang@dwin.com 发表于 2024-10-23 14:16
您箭头2指的位置是先判断了0X0008地址的高字节是否清0,清0再进行其他操作呢。不判断的话有可能造成逻辑混 ...

这个是客服给的一个历程,它里面是没有清零的,所以我好奇如果没有清零,这个就变成死循环了,是不是需要我去添加代码清零呢
回复

使用道具 举报

1

主题

8

回帖

42

积分

新手上路

Rank: 1

积分
42
 楼主| 发表于 2024-10-23 14:35:18 | 显示全部楼层
jufang@dwin.com 发表于 2024-10-23 14:16
您箭头2指的位置是先判断了0X0008地址的高字节是否清0,清0再进行其他操作呢。不判断的话有可能造成逻辑混 ...

您的意思是LOOP1之后的代码就是先判断清零,然后再操作吗,那么她是怎么判断清零的呢,MOVXR和LDWR里面好像没有清零的动作啊,0008H这个地址里在DATA>0这段代码里已经被赋值了
回复

使用道具 举报

0

主题

525

回帖

7841

积分

论坛元老

Rank: 8Rank: 8

积分
7841
发表于 2024-10-23 14:38:48 | 显示全部楼层
本帖最后由 jufang@dwin.com 于 2024-10-23 14:40 编辑
1long3 发表于 2024-10-23 14:35
您的意思是LOOP1之后的代码就是先判断清零,然后再操作吗,那么她是怎么判断清零的呢,MOVXR和LDWR里面好 ...

下面截图这部分不就是用0X0008的高字节跟0比较么?=0向下执行,不等于0回到LOOP1,CPU操作完会自动清0,操作完成需要时间的,所以您要判断一下是否真正的清0了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

1

主题

8

回帖

42

积分

新手上路

Rank: 1

积分
42
 楼主| 发表于 2024-10-23 15:08:50 | 显示全部楼层
jufang@dwin.com 发表于 2024-10-23 14:38
下面截图这部分不就是用0X0008的高字节跟0比较么?=0向下执行,不等于0回到LOOP1,CPU操作完会自动清0,操 ...

我解释一下箭头1和2代码所表达的意思,您看我理解的对不对:DATA>0的意思是把R20到R227的数据写到0008H这个地址里;执行完后寄存器会将数据清0;LOOP1里,LDWR  R0,0008H 这一句是把0008H地址放到R0里; MOVXR R20,1,1这一句是把0008H地址里的数据放到R20寄存器里,存放一个字;IJNE  R20,0,LOOP1这一句是判断寄存器是否把0008H里的数据清零,清理才继续操作对吗
回复

使用道具 举报

0

主题

525

回帖

7841

积分

论坛元老

Rank: 8Rank: 8

积分
7841
发表于 2024-10-23 15:56:19 | 显示全部楼层
1long3 发表于 2024-10-23 15:08
我解释一下箭头1和2代码所表达的意思,您看我理解的对不对:DATA>0的意思是把R20到R227的数据写到0008H这 ...

是的,箭头1里面的内容是把R20-R27的数据给到0X0008地址,4个字。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-11-23 00:54 , Processed in 0.070464 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表