请教 汇编 转C 感觉转不了 是个 环扣环

[复制链接]
4458|30
 楼主| itelectron 发表于 2014-2-1 18:48 | 显示全部楼层 |阅读模式
        JNB    P0.4,LOOP1               
        JNB    P0.3,LOOP2               
LOOP1:
        JNB    P0.2,LOOP5               
LOOP2:
        JNB    P0.4,LOOP4
        JB     P0.1,LOOP3
        
        LCALL  FUN1                        
LOOP3:
        LCALL  FUN2                        
LOOP4:               
        LCALL  FUN3               
LOOP5:
        LCALL  FUN4   
 楼主| itelectron 发表于 2014-2-1 18:52 | 显示全部楼层

1

本帖最后由 itelectron 于 2014-2-1 18:54 编辑

1

本帖子中包含更多资源

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

×
wzda_gundam 发表于 2014-2-1 19:14 | 显示全部楼层
本帖最后由 wzda_gundam 于 2014-2-1 19:33 编辑

好转
main()
{
if(!P04)loop1();
else if(!P03)loop2();
}
loop1()
{
if(!P02)loop5();
else loop2();
}
loop2()
{
if(!P04)loop4();
else
{
if(P01)loop3();
else
{
fun1();
loop3();
}
}
}
loop3()
{
fun2();
loop4();
}
loop4()
{
fun3()
loop5();
}
loop5()
{
fun4();
}
 楼主| itelectron 发表于 2014-2-1 19:22 | 显示全部楼层
楼上 能 吧C 写成 汇编 那样 形式吗?
wzda_gundam 发表于 2014-2-1 19:28 | 显示全部楼层
itelectron 发表于 2014-2-1 19:22
楼上 能 吧C 写成 汇编 那样 形式吗?

刚才有错误,改了一下
应该可以
NE5532 发表于 2014-2-1 20:13 | 显示全部楼层
楼主之所以能这样写,是钻了汇编自由性大的“漏洞”,这个也是汇编的优点,C是结构化的,以函数为基础的语言,要做到这样高技巧的跳转会吧程序弄得很乱(当然C也可以用goto来做).

不过楼主可以用一个变量来”计算“各种条件,最后根据这个”计算“的结果来选择执行哪些程序,这样就满足C的结构化了,程序也好读得多。
 楼主| itelectron 发表于 2014-2-1 20:24 | 显示全部楼层
楼上  其实  这个汇编 是 C生成 的
 楼主| itelectron 发表于 2014-2-1 20:27 | 显示全部楼层
本帖最后由 itelectron 于 2014-2-9 14:07 编辑

11
 楼主| itelectron 发表于 2014-2-1 20:28 | 显示全部楼层
TO 6楼 应该用C也可以 完成的  
NE5532 发表于 2014-2-1 22:16 | 显示全部楼层
那请楼主写个试一下了。
 楼主| itelectron 发表于 2014-2-2 08:09 | 显示全部楼层
正因为思考无果,特来求助。  确定这个汇编 是 C生成 的,
lxyppc 发表于 2014-2-2 18:12 来自手机 | 显示全部楼层
四输入,四输出
画个卡洛图化简一下,看看是什么
呆板书生 发表于 2014-2-2 18:39 | 显示全部楼层
12楼正解
publicrtos 发表于 2014-2-2 19:44 | 显示全部楼层
C语言采用高级优化之后,就会出现类似于你的汇编里面的那种效果,甚至跳到其他函数里面执行。当然执行的结果和C语言结构里面逾期的一样。
 楼主| itelectron 发表于 2014-2-3 18:35 | 显示全部楼层
楼上说的 是  确实 是 优化 过 的  但是 现在 想 用C写回去  
 楼主| itelectron 发表于 2014-2-3 18:35 | 显示全部楼层
楼上说的 是  确实 是 优化 过 的  但是 现在 想 用C写回去  
 楼主| itelectron 发表于 2014-2-3 18:37 | 显示全部楼层
卡洛图 还有 顺序执行不好办
 楼主| itelectron 发表于 2014-2-3 18:41 | 显示全部楼层
        JNB    P0.1,LOOP1               
        JNB    P0.2,LOOP2               
LOOP1:
        JNB    P0.3,LOOP5               
LOOP2:
        JNB    P0.4,LOOP4
        JB     P0.5,LOOP3
        
        LCALL  FUN1                        
LOOP3:
        LCALL  FUN2                        
LOOP4:               
        LCALL  FUN3               
LOOP5:
        LCALL  FUN4  
 楼主| itelectron 发表于 2014-2-3 18:43 | 显示全部楼层
四输入,四输出 那不是16X16
NE5532 发表于 2014-2-3 21:30 | 显示全部楼层
itelectron 发表于 2014-2-2 08:09
正因为思考无果,特来求助。  确定这个汇编 是 C生成 的,

已经告诉你C的处理技巧了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:MARK: zhi kan ji shu

274

主题

2761

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部