求把c语言转换成汇编语言

2025-03-04 07:16:05
推荐回答(5个)
回答1:

用   Keil uVision3  编译调试 时, 启动 调试后 ,可以查看对应的汇编程序 如图

      红颜色的是 C 源程序,汇编指令前面 是 51机器代码。

回答2:

;按照C程序的功能,重写了汇编程序,如下:

ORG 0000H
LJMP START
INC R2
CJNE R2, #10, X0_END
MOV R2, #0
INC R3
CJNE R3, #10, X0_END
MOV R3, #0
INC R4
CJNE R4, #10, X0_END
MOV R4, #0
X0_END:
MOV 30H, R2
MOV 31H, R3
MOV 32H, R4
MOV A, 32H
JNZ DISP
MOV 32H, #10
MOV A, 31H
JNZ DISP
MOV 31H, #10
DISP:
MOV A, 30H
ADD A, #(TAB - $ - 3)
MOVC A, @A + PC
MOV P0, A
MOV A, 31H
ADD A, #(TAB - $ - 3)
MOVC A, @A + PC
MOV P1, A
MOV A, 32H
ADD A, #(TAB - $ - 3)
MOVC A, @A + PC
MOV P2, A
RETI
TAB: DB 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00

START:
MOV IE, #81H
SETB IT0
MOV R2, #0
MOV R3, #0
MOV R4, #0
MOV P0, #0
MOV P1, #0
MOV P2, #0
JB P3.6, $
JNB P3.6, $
SJMP START
END

这是对外部中断计数的程序,计数值为 0~999。
P3.6 是清零。

回答3:

汇编器功能的C程序,改写为如下:

ORG 0000H
LJMP START
INC R2
CJNE R2,#10,X0_END
MOV R2,#0
INC R3
CJNE R3,#10,X0_END的
MOV R3,#0
INC R4
CJNE R4,#10,X0_END /> MOV R4,#0
X0_END?
MOV 30H,R2
MOV 31H,R3
MOV 32H,R4
MOV A,32H
> JNZ DISP
MOV 32H,#10
MOV A,31H
JNZ DISP
MOV 31H,#10
DISP:
MOV A,30H BR /> ADD A,#(TAB - $ - 3)
MOVC A,@ A + PC
MOV P0,一个
MOV A,31H
ADD A,#( TAB - $ - 3)
MOVC A,@ A + PC
MOV P1,一个
MOV A,32H
ADD A,#(TAB - $ - 3) /> MOVC A,@ A + PC
MOV P2,A
RETI
TAB:DB的0x3F,0X06,0x5b,0x4f,0x66,0x6d,0x7d,为0x07,到0x7f,0x6f,为0x00

MOV IE,#81H
SETB IT0
MOV R2,#0
MOV R3,#0
MOV R4, #0
MOV P0,#0
MOV P1,#0
MOV P2,#0

JNB P3.6,JB P3.6,$ BR /> SJMP START
END

程序外部中断计数,计数值为0到999。
P3.6被清除。

回答4:

下载个wintc他有个功能是编译目标文件为汇编语言,我系统是win8所以用不起,你还是自己转换吧,http://www.pc6.com/softview/SoftView_77132.html
这里去下载
或者如他们所说,直接先编译,然后反汇编,但是反汇编的东西不是很好看。

回答5:

先编译成二进制文件(*.hex),然后反汇编之即得 。。