帮忙查出我的错好吗?我实在找不出。

[复制链接]
查看11 | 回复4 | 2011-10-15 03:17:02 | 显示全部楼层 |阅读模式
ORG0000HLJMPMAINORG0030HMAIN:MOVA,#0FEHMOVP1,AAJMPDELAYE1:RLAAJMPDELAYMOVR5,ACJNEA,#7FH,E1;A与7f比较不等则跳回E1(我也不知道对不对,个人意愿。)E2:RRAAJMPDELAY;MOVR4,ACJNEA,#0FEH,E2AJMPMAINDELAY:MOVR7,#255DE1:MOVR6,#255DE2:DJNZR6,DE2DJNZR7,DE1RETEND目的:实现8个led灯先来回流动。
回复

使用道具 举报

千问 | 2011-10-15 03:17:02 | 显示全部楼层
E1E2里面的MOVR5,AMOVR4,A没有意义。换成MOVP1,A试试看吧。P1没有输出灯是不会变化的。CJNEA,#7FH,E1是对的灯从1111111011111101....1011111101111111变化如果A左移后成为了7F,就运行E2程序段进行右移。追问为什么在调用第一个延时完时它返回到的时LJMPMAIN?而且在调试时有这个错误提醒
回复

使用道具 举报

千问 | 2011-10-15 03:17:02 | 显示全部楼层
AJMPDELAY全换成ACALLDELAY
回复

使用道具 举报

千问 | 2011-10-15 03:17:02 | 显示全部楼层
能告诉为什么或哪里有这文档吗?
回复

使用道具 举报

千问 | 2011-10-15 03:17:02 | 显示全部楼层
call和jmp是有区别的call在跳转之前会把当前运行的地址入栈,然后运行跳转地址的程序。在遇到ret之后将地址出栈继续运行。而jmp直接就运行跳转地址的程序了,遇到ret之后尝试从栈里拿地址,自然就出错了。
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行