跪求专业人士解答..将一段简单汇编语言程序转换为C语言程序

P3M0 EQU 0B2H
P3M1 EQU 0B1H
S1 EQU 2EH
S2 EQU 2CH
S3 EQU 2DH
S0 EQU 2FH
WDT_CONTR EQU 0C1H
WORD EQU 00110101B
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV TMOD,#00H
MOV TH1,#0DEH
MOV TL1,#0ECH
MOV IE,#00H
SETB TR1
MOV P3M0,#110001B
MOV P3M1,#000000B
MOV P3,#001110B
MOV 2AH,#06DH
MOV 29H,#01EH
MOV S0,#00H
MOV S1,#00H
MOV S2,#00H
MOV S3,#00H
MOV 3AH,#14H
MOV 3BH,#14H
MOV 3CH,#0FFH
MOV WDT_CONTR,#WORD
LOOP:
JBC TF1,LOOP1
AJMP LOOP
LOOP1:
MOV TH1,#0DEH
MOV TL1,#0ECH
CLR TF1
LCALL ANJIANSHAOMIAO
LCALL CCBSC
MOV WDT_CONTR,#WORD
DJNZ 2AH,LOOP
MOV 2AH,#06DH
DJNZ 29H,LOOP
MOV 29H,#01EH
CPL S0.7
AJMP LOOP
DEL: MOV 41H,#1DH
JJCW: MOV 42H,#6CH
JJCE:
DJNZ 42H,JJCE
DJNZ 41H,JJCW
ret
ANJIANSHAOMIAO:;
JB S1.7,CCB
JB P3.2,FDWJ
LCALL DEL
JB P3.2,FDWJ
SETB S1.7
AJMP FDWJ
CCB:
JNB P3.2,FDWJ
JB S1.6,CCB1
CLR S1.7
SETB S1.6
MOV 3AH,#14H
AJMP FDWJ
CCB1:
CLR S1.6
CLR S1.7
FDWJ:
JB S2.7,FDW
JB P3.3,FLZJ
LCALL DEL
JB P3.3,FLZJ
SETB S2.7
AJMP FLZJ
FDW:
JNB P3.3,FLZJ
JB S2.6,FDW1
CLR S2.7
SETB S2.6
MOV 3BH,#14H
AJMP FLZJ
FDW1:
CLR S2.6
CLR S2.7
FLZJ:
JB S3.7,FLZ
JB P3.1,WW
LCALL DEL
JB P3.1,WW
SETB S3.7
RET
FLZ:
JNB P3.1,WW
JB S3.6,FLZ1
CLR S3.7
SETB S3.6
MOV 3DH,#0F0H
RET
FLZ1:
CLR S3.6
CLR S3.7
WW: RET
CCBSC:
JB S1.6,CCBSC5
CLR P3.4
AJMP FDWSC
CCBSC5:
SETB P3.4
JB S1.5 ,CCBSC4
JB S0.7, FDWSC
SETB S1.5
AJMP FDWSC
CCBSC4: JNB S0.7,FDWSC
CLR S1.5
DJNZ 3AH,FDWSC
CLR S1.6
CLR P3.4
AJMP FDWSC
CCBSC3:
SETB S1.5
AJMP FDWSC
FDWSC:
JB S2.6,FDWSC5
CLR P3.5
AJMP FLZSC
FDWSC5:
SETB P3.5
JB S2.5 ,FDWSC4
JB S0.7, FLZSC
SETB S2.5
AJMP FLZSC
FDWSC4: JNB S0.7,FLZSC
CLR S2.5
DJNZ 3BH,FLZSC
CLR S2.6
CLR P3.5
AJMP FLZSC
FDWSC3:
SETB S2.5
FLZSC:
JB S3.6,FLZSC5
CLR P3.0
RET
FLZSC5:
SETB P3.0
JB S3.5 ,FLZSC4
JB S0.7, WW
SETB S3.5
RET
FLZSC4: JNB S0.7,WW
CLR S3.5
DJNZ 3DH,WW
CLR S3.6
CLR P3.0
RET
FLZSC3:
SETB S3.5
END

额,看了下,指令格式是 51的; 代码像是 反汇编的代码,或者新手写的命名太不规范了!
转换到是可以转换的,汇编到c还是可以的,但是如果没价值的话就不要翻译了,直接写就好!
工程逆向,比较费神!
如果需要帮忙的话,我们可以相互交流!

满意的话赞一个,呵呵
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-10-21
基本上不可能将汇编语言转换成高级语言。

如何将汇编代码转为C语言?
首先在keil里,设置选项时,在列表选项中的汇编代码一项打勾。见下图 然后编译,编译后,在工程的同一个文件夹下有一个.LST文件,打开就看到了汇编代码,不过,需要自己进行整理,否则,是不能直接作为汇编程序的。 下面是一个例子:这是一个主程序的汇编代码,格式就是这样的。 ; FUNCTION main (BEGIN) ; SOURCE LINE ...

怎样能将汇编语言转换成c语言
答案:将汇编语言转换成C语言是一项复杂的任务,无法直接转换,但可以通过反汇编、理解和重写为C语言代码的方式来实现。详细解释:1. 理解汇编与C语言的差异:汇编语言是底层、具体的机器语言描述,而C语言是一种高级语言,具有更抽象的语法和特定的编程概念。因此,直接将汇编转换为C语言并不简单,需要理...

如何将汇编代码转换成c语言?
1、打开Keil,新建一个51工程,同时新建一个main.c文件,并加入到工程源代码当中。2、再点击新建文件按钮,新建一个汇编语言源文件:test.asm,并将它保存到指定目录。3、在test.asm当中输入下面的代码。4、代码编写完成后,需要将test.asm加入到工程当中,即鼠标右键点击对应工程的源程序文件夹,选择“...

怎样能将汇编语言转换成c语言
要将汇编语言转换为C语言,首先,打开IAR集成开发环境(IDE),并设置STM8工程。以创建一个简单的C语言延时程序作为转换的示例。接下来,你需要将C语言延时代码中的关键部分提取出来,这部分通常包含计时和延时的逻辑。然后,你需要将这部分代码替换为等效的汇编代码,确保理解汇编语言的指令集,以便正确地...

怎样能将汇编语言转换成c语言
1、打开IAR FOR STM8工程。2、编一段C语言的延时程序,作为例子。3、如何在目前实例上,添加我们的汇编。4、编译一下是否可以编译通过,编译提示OK。5、进入仿真界面,是否可以运行。把断点设在汇编的程序上,运行后,可以在断点处停止,说明仿真也是正常的。

怎样将汇编语言转换为C语言
如果是VC则在编译器命令行参数再加 \/FA 则会生成汇编代码。如果参数是 \/FAs 则会同时将源码和汇编代码。\/FA 程序集代码;.asm \/FAc 机器码和程序集代码;.cod \/FAs 源代码和程序集代码;.asm \/FAcs 机器码、源代码和程序集码;.cod \/Fa的用法 \/Fa 为编译中的每个源代码文件创建一个源文件....

怎样将汇编语言转换为C语言
成汇编代码,不存在将汇编代码反编译成C语言的,因为汇编代码是低级语言,最接近于 机器码 (具体可查看不同硬件平台的技术资料),每条 汇编指令 都对应一个固定的机器码,这样进行反汇编是可行的,而C语言属于 高级语言 ,编译器 没有能力将汇编语言翻译成C或更高级的语言。怎样将汇编语言转换为C语...

汇编程序怎么改成C语言代码
就用 nSecCount代替 MOV 直接用变量赋值就好 例如之前的 nSecCount = 1;对于端口P0-P4等,最好还是在C语言中嵌入汇编比较好 LOOP: 等循环,完全可以用while 实现 函数调用那就更简单了,直接定义一个函数实现就行了。JNZ之类的判断就用if就好。主要就是对着变量跟函数,一步一步移就好了 ...

怎么把烧录好的单片机程序读取出来成c语言
相关方法如下:1、使用逆向工程工具:使用专门的逆向工程工具,如IDA Pro、Ghidra等,打开烧录好的单片机程序文件,这些工具可以将二进制代码转换为汇编代码,并提供反汇编和反编译功能。2、分析反汇编代码:通过分析反汇编代码,了解程序的结构和逻辑,可以查看函数、变量、循环、条件语句等,并尝试理解程序...

将汇编语言转换成C语言,急用(用P1口做为输入口,使发光二极管从右到左...
include <REGX51.H> include<intrins.h> define uint unsigned int define uchar unsigned char void delay(void){ uchar a,b,c;for(a=0x05;a>0;a--)for(b=0x80;b>0;b--)for(c=0xFF;c>0;c--);} void main(void){ uchar i;while(1){ for(i=0;i<8;i++){ P1=~(1<...

相似回答