怎么把汇编转换成C语言

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么把汇编转换成C语言相关的知识,希望对你有一定的参考价值。

ORG 0000H
AJMP MAIN
ORG 0003H
AJMP in0 ;光敏电阻
ORG 0013H

ORG 0050H
MAIN: MOV P0, #00000001B ;置初始值in0可重复触发,灯灭
MOV TMOD, #00000010B ;方式2,8位自动重装计数器
MOV TCON, #00010000B ;开启计数器T0
MOV IE, #10000111B ;开启所有中断
SJMP $ ;灯慢慢变亮
DET1: MOV P0, #00000001B
CALL TIME0 ;灯亮度延时10ms
MOV P0, #00000011B
CALL TIME0
MOV P0, #00000101B
CALL TIME0
MOV P0, #00000111B
CALL TIME0
MOV P0, #00001001B
CALL TIME0
MOV P0, #00001011B
CALL TIME0
MOV P0, #00001101B
CALL TIME0
MOV P0, #00001111B
CALL TIME1
RETI;灯慢慢熄灭
DET0: CALL TIME1 ;延时1分钟
MOV TCON, A
ANL A, #1
JZ LOOP
MOV P0, #00001111B
CALL TIME0
MOV P0, #00001101B
CALL TIME0
MOV P0, #00001011B
CALL TIME0
MOV P0, #00001001B
CALL TIME0
MOV P0, #00000111B
CALL TIME0
MOV P0, #00000101B
CALL TIME0
MOV P0, #00000011B
CALL TIME0
MOV P0, #00000001B
RETI
LOOP: ret
;延时10ms
TIME0: SETB TR0
MOV R0, #250
MOV R1, #20
D_1: DJNZ R0, D_1
MOV R0, #250
DJNZ R1, D_1
CLR TR0
RET
;延时1分钟
TIME1: SETB TR0
MOV R0, #250
MOV R1, #200
MOV R2, #60
D_2 : DJNZ R0, D_2
MOV R1, #200
DJNZ R1, D_2
MOV R2, #60
DJNZ R2, D_2
CLR TR0
RET
END

如果 只是简单的几行,可以把编译后的exe文件,用系统自带的debug(windows键+R打开 运行窗口 输入debug 空格 exe的路径)打开debug后,输入U可以看到几行汇编代码。
如果是源代码 在vs编译器中调试运行,菜单上的:调试--窗口--反汇编 可以查看,如果是其他编译器 仔细找找也带反汇编的
要资料的话 [天书夜读-从汇编语言到Windows内核编程].谭文.邵坚磊. 这本书的基础部分里 有c语言与汇编的转换追问

不好意思啊 我没太懂 这个汇编程序怎么生成.exe文件啊

参考技术A 1、目前的反编译软件,只存在将机器指令码反汇编成汇编代码,不存在将汇编代码反编译成C语言的,因为汇编代码是低级语言,最接近于机器码(具体可查看不同硬
件平台的技术资料),每条汇编指令都对应一个固定的机器码,这样进行反汇编是可行的
2、C语言属于高级语言,编译器没有能力将汇编语言翻译成C或更高级的
语言。
参考技术B 将汇编转换成C语言有以下几种方法:
1、用专门的转换软件,不过到目前为止,没有效果较好的转换软件。
2、手动转换,读懂汇编语言所表达的意思,再编制C语言完成相同的功能。

C语言秒数转换成标准时间,求解答!

给定一个从0秒开始计时的秒数,请将其转换为xx:xx:xx的格式。这种格式一般成为标准时间格式。如1小时1分1秒应该表示的标准时间格式应该是01:01:01,而不是1:1:1。转换成标准格式。

#include <stdio.h>
int main()

    int t;
    int h,m,s;
    scanf("%d",&t);
    h = t/3600;
    m=t/60%60;
    s=t%60;
    printf("%02d:%02d:%02d\\n", h,m,s);
    
    return 0;
参考技术A #include <stdio.h>
main()

int num,h,m,s;
printf("请输入秒数:");
scanf("%d",&num);
s=num%60;
m=num/60%60;
h=num/3600;
printf("%02d:%02d:%02d\n",h,m,s);

以上是关于怎么把汇编转换成C语言的主要内容,如果未能解决你的问题,请参考以下文章

c语言怎么把UTF-8转换成Unicode

怎样能将汇编语言转换成c语言

c语言中怎么把不同类型转化成同一类型?

在C语言中怎么把一个数转换成二进制然后输出

keil怎样把C语言转换成单片机汇编语言

simulink 转换成c语言