打印

汇编转C语言。。。新手汇编请教

[复制链接]
1942|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xvezhe|  楼主 | 2013-7-12 09:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
WAIT0:
                MOV     CNT_DJS,#00             ;倒计时学习时间
                MOV        CNT_A,#20                ;设置50ms计时值(1s)
                SETB        SG_19                        ;开机3秒,禁止倒计时显示数据
               
                LCALL        CHECKPRO                ;取当前步状态
                MOV        NOWSTEP,A               ;当前相位
WAIT1:
                     LCALL        CHECKPRO                ;取当前步状态(调用函数CHECKPRO)
                CJNE           A,#3FH,WAIT2
                       SJMP        WAIT0                        ;若3秒内出现全灭,则返回
WAIT2:                    
                     MOV        A,CNT_DJS
                     CJNE        A,#03,WAIT1
WAIT3:               
                LCALL        CHECKPRO
                CJNE        A,NOWSTEP,WAIT4               ;NOWSTEP(为一个变量)
                CLR        SG_19                       
                SJMP        WAIT3



由于没学过汇编,请教汇编高手转C语言程序。。。谢谢!()

相关帖子

沙发
xvezhe|  楼主 | 2013-7-12 09:28 | 只看该作者
若有个软件直接转的话多好啊。。。。再稍微改改就ok;P

使用特权

评论回复
板凳
HAPPYMONDAY| | 2013-7-12 09:49 | 只看该作者
汇编干嘛要转C?直接嵌入就可以了,何必费劲

使用特权

评论回复
地板
xvezhe|  楼主 | 2013-7-12 09:57 | 只看该作者
HAPPYMONDAY 发表于 2013-7-12 09:49
汇编干嘛要转C?直接嵌入就可以了,何必费劲

怎么嵌入?新手请多指教啊。。。因只玩过C语言编程。。。

使用特权

评论回复
5
cool_coder| | 2013-7-12 12:29 | 只看该作者
本帖最后由 cool_coder 于 2013-7-18 17:16 编辑

汇编的特点是跳转语句多,而C/C++中并不鼓励这样做,
尝试改写了一下,大概是这样吧(如果熟悉代码用途,可以改得更好):

BYTE byCntDjs;
BYTE byCntA;
BYTE byNowStep;
BIT bSg19;
wait_0:
    byCntDjs = 0;  // 原来的wait0在这里
    byCntA = 20;
    bSg19 = 1;
    byNowStep = CheckPro();
do{
    if(0x3F == CheckPro()){  // 原来的wait1在这里
        goto wait_0;
    }
}while(3 != byCntDjs);  // 原来的wait2在这里
while(CheckPro() == byNowStep){  // 原来的wait3在这里
    bSg19 = 0;
}
goto wait_4;   // 这个已经超出可见代码的范围,自己改吧

使用特权

评论回复
6
xvezhe|  楼主 | 2013-7-15 15:12 | 只看该作者
超感谢,希望加你好友,可以继续向你多学习点汇编转C语言编程,请高手多多指教。。。。。

使用特权

评论回复
7
xvezhe|  楼主 | 2013-7-15 15:13 | 只看该作者
cool_coder 发表于 2013-7-12 12:29
汇编的特点是跳转语句多,而C/C++中并不鼓励这样做,
尝试改写了一下,大概是这样吧(如果熟悉代码用途, ...


超感谢,希望加你好友,可以继续向你多学习点汇编转C语言编程,请高手多多指教。。。。。

使用特权

评论回复
8
xvezhe|  楼主 | 2013-7-15 15:21 | 只看该作者
cool_coder 发表于 2013-7-12 12:29
汇编的特点是跳转语句多,而C/C++中并不鼓励这样做,
尝试改写了一下,大概是这样吧(如果熟悉代码用途, ...

因程序比较长,古分开请教。。。若高手慷慨帮忙的话,我再上传程序。。。。新手请教,高手多多指教

使用特权

评论回复
9
cool_coder| | 2013-7-15 16:46 | 只看该作者
xvezhe 发表于 2013-7-15 15:13
超感谢,希望加你好友,可以继续向你多学习点汇编转C语言编程,请高手多多指教。。。。。 ...

兄弟过谦了,共同交流并进步吧。

使用特权

评论回复
10
xvezhe|  楼主 | 2013-7-22 08:55 | 只看该作者
cool_coder 发表于 2013-7-15 16:46
兄弟过谦了,共同交流并进步吧。

请高手指教,这个是小段代码:


DXA_P00:        
                MOV            TH0,#4CH       
                     MOV            TL0,#00H
                     MOV        CNT_A,#5               
                     MOV        CNT_DJS,#00
                MOV        STEPADDR,#4FH                ;设置保存数据的起始地址-1(50H-1)
               
                LCALL        CHECKPRO                ;取当前步长
                MOV        NOWSTEP,A
DXA_P01:
                LCALL        CHECKPRO
                CJNE        A,NOWSTEP,DXA_P02
                CLR        SG_19                       
                SJMP        DXA_P01
DXA_P02:               
                SETB        SG_19                       
                MOV        NOWSTEPT,CNT_DJS
                MOV        CNT_D,CNT_A       
                MOV        CNT_B,#00               
DXA_P03:                       
                     LCALL        CHECKPRO               
                CJNE        A,NOWSTEP,DXA_P04
                SJMP        DXA_P01
DXA_P04:
                MOV        A,CNT_B
                CJNE        A,#15,DXA_P03               
               
                MOV        A,CNT_D
                CJNE        A,#10,DXA_P05               
                INC        NOWSTEPT
                SJMP        DXA_P07
DXA_P05:
                JNC        DXA_P07
                INC        NOWSTEPT
DXA_P07:                                               
                MOV        A,50H                       
                CJNE        A,NOWSTEP,DXA_P11
               
                MOV        A,60H                       
                CJNE        A,NOWSTEPT,DXA_P08
                SJMP        DXA_P10
DXA_P08:
                MOV        A,60H
                INC        A
                CJNE        A,NOWSTEPT,DXA_P09
                SJMP        DXA_P10               
DXA_P09:
                MOV        A,60H
                DEC        A
                CJNE        A,NOWSTEPT,DXA_P11
                SJMP        DXA_P10
DXA_P10:               
                LCALL        CHECKPRO
                CJNE        A,51H,DXA_P11               
                SJMP        DXA_P13
DXA_P11:
                MOV        A,STEPADDR               
                CJNE        A,#5FH,DXA_P12
                LJMP        MAIN
DXA_P12:               
                INC        STEPADDR               
                MOV        R0,STEPADDR               
                MOV        A,NOWSTEP
                MOV        @R0,A                       
               
                MOV        A,R0
                ADD        A,#10H
                MOV        R0,A
                MOV        A,NOWSTEPT
                MOV        @R0,A                       
               
                LCALL        CHECKPRO               
                MOV        NOWSTEP,A
                MOV            TH0,#4CH               
                     MOV            TL0,#00H
                     MOV        CNT_A,#5               
                     MOV        CNT_DJS,#00
                LJMP        DXA_P01
DXA_P13:
                MOV        ENDADDR,STEPADDR       
                MOV        STEPADDR,#51H               

                MOV        NOWSTEP,51H               
                MOV        DOWN_A,61H               
               
                MOV        A,STEPADDR               
                CJNE        A,ENDADDR,DXA_P14
                MOV        NEXTSTEP,50H
                MOV            TH0,#4CH               
                     MOV            TL0,#00H
                     MOV        CNT_A,#5
                     MOV        CNT_C,#00
                     SETB        SG_17                       
                SJMP        DXA_P15
DXA_P14:               
                INC        A
                MOV        R0,A
                MOV        A,@R0
                MOV        NEXTSTEP,A
                MOV            TH0,#4CH               
                     MOV            TL0,#00H
                     MOV        CNT_A,#5
                     MOV        CNT_C,#00
                     SETB        SG_17                       
                SJMP        DXA_P15
               

使用特权

评论回复
11
xvezhe|  楼主 | 2013-7-22 08:57 | 只看该作者
HAPPYMONDAY 发表于 2013-7-12 09:49
汇编干嘛要转C?直接嵌入就可以了,何必费劲

在学习汇编,转c语言是为了方便以后编程。。。新手请指教

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

225

帖子

2

粉丝