单片机源代码C语言怎么转化回汇编语言啊,就是带MOV,JMP的种

作者&投稿:寿田 (若有异议请与网页底部的电邮联系)
片机源代码C语言怎么转化回汇编语言啊,就是带MOV,JMP的种~

我们常用的MCS-51单片机支持c语言和汇编语言,要转换这个只能靠自己的理解重新编写。
实现大部分功能c语言相对简单,但对于底层的具体指令又要用到汇编,比如数据传输与校验等。

你用编译器编译后,不连接(可能要反汇编)。

或者把输出文件反汇编(没有模块的概念了)。

帮你转了

ORG 0000H
DB 02H
NOP
L0002H:
CPL A
RR A
INC R5
NOP
NOP
NOP
NOP
MOV R7, A
MOV R7, A
LJMP L0180H
L000EH:
MOV 89H, #01H
MOV 8CH, #0F0H
MOV 8AH, #60H
SETB 88H.4
SETB 0A8H.1
SETB 0A8H.7
CLR A
MOV 08H, A
MOV 09H, A
MOV 80H, #14H
MOV 0CH, A
MOV R6, 0AH
MOV R7, 0BH
MOV R4, A
MOV R5, #0AH
LCALL L01DEH
MOV 0DH, R7
MOV R6, 0AH
MOV R7, 0BH
MOV R4, #00H
MOV R5, #0AH
LCALL L01DEH
MOV 0EH, R5
MOV 0FH, 09H
L0043H:
CLR C
MOV A, 0BH
SUBB A, #14H
MOV A, 0AH
SUBB A, #00H
JNC L0052H
MOV R7, #01H
SJMP L0054H
L0052H:
MOV R7, #00H
L0054H:
JB 0B0H.1, L005BH
MOV R6, #01H
SJMP L005DH
L005BH:
MOV R6, #00H
L005DH:
MOV A, R7
ANL A, R6
JZ L008CH
MOV R3, #0F5H
L0063H:
DJNZ R3, L0063H
JB 0B0H.1, L008CH
MOV A, 09H
XRL A, #09H
ORL A, 08H
JNZ L007FH
INC 0BH
MOV A, 0BH
JNZ L0078H
INC 0AH
L0078H:
CLR A
MOV 08H, A
MOV 09H, A
SJMP L0087H
L007FH:
INC 09H
MOV A, 09H
JNZ L0087H
INC 08H
L0087H:
INC 80H
L0089H:
JNB 0B0H.1, L0089H
L008CH:
JB 0B0H.0, L00D4H
MOV R3, #0F5H
L0091H:
DJNZ R3, L0091H
JB 0B0H.0, L00D4H
MOV A, 09H
ORL A, 08H
JNZ L00ACH
MOV A, 0BH
DEC 0BH
JNZ L00A4H
DEC 0AH
L00A4H:
MOV 08H, #00H
MOV 09H, #09H
SJMP L00B4H
L00ACH:
MOV A, 09H
DEC 09H
JNZ L00B4H
DEC 08H
L00B4H:
CLR C
MOV A, 0BH
SUBB A, #02H
MOV A, 0AH
SUBB A, #00H
JNC L00CFH
MOV 0AH, #00H
MOV 0BH, #02H
CLR A
MOV 08H, A
MOV 09H, A
DB 75H, 80H
L00CCH:
DEC A
SJMP L00D1H
L00CFH:
DEC 80H
L00D1H:
JNB 0B0H.0, L00D1H
L00D4H:
MOV R6, 0AH
MOV R7, 0BH
MOV R4, #00H
MOV R5, #0AH
LCALL L01DEH
MOV 0DH, R7
MOV R6, 0AH
MOV R7, 0BH
MOV R4, #00H
MOV R5, #0AH
LCALL L01DEH
MOV 0EH, R5
MOV 0FH, 09H
LJMP L0043H
L00F4H:
MOV R0, #7FH
CLR A
L00F7H:
MOV @R0, A
DJNZ R0, L00F7H
MOV 81H, #0FH
LJMP L013BH
L0100H:
LJMP L000EH
L0103H:
CLR A
MOVC A, @A+DPTR
INC DPTR
MOV R0, A
L0107H:
CLR A
MOVC A, @A+DPTR
INC DPTR
JC L010FH
MOV @R0, A
SJMP L0110H
L010FH:
MOVX @R0, A
L0110H:
INC R0
DJNZ R7, L0107H
SJMP L013EH
L0115H:
CLR A
MOVC A, @A+DPTR
INC DPTR
MOV R0, A
ANL A, #07H
ADD A, #0CH
XCH A, R0
CLR C
RLC A
SWAP A
ANL A, #0FH
ORL A, #20H
XCH A, R0
MOVC A, @A+PC
JC L012DH
CPL A
ANL A, @R0
SJMP L012EH
L012DH:
ORL A, @R0
L012EH:
MOV @R0, A
DJNZ R7, L0115H
SJMP L013EH
AJMP L0002H
INC A
INC R0
JBC 20H, L017AH
DB 80H
L013BH:
MOV DPTR, #0003H
L013EH:
CLR A
MOV R6, #01H
MOVC A, @A+DPTR
JZ L0100H
INC DPTR
MOV R7, A
ANL A, #3FH
JNB 0E0H.5, L0154H
ANL A, #1FH
MOV R6, A
CLR A
MOVC A, @A+DPTR
INC DPTR
JZ L0154H
INC R6
L0154H:
XCH A, R7
ANL A, #0C0H
ADD A, 0E0H
JZ L0103H
JC L0115H
CLR A
MOVC A, @A+DPTR
INC DPTR
MOV R2, A
CLR A
MOVC A, @A+DPTR
INC DPTR
MOV R0, A
L0165H:
CLR A
MOVC A, @A+DPTR
INC DPTR
XCH A, R0
XCH A, 82H
XCH A, R0
XCH A, R2
XCH A, 83H
XCH A, R2
MOVX @DPTR, A
INC DPTR
XCH A, R0
XCH A, 82H
XCH A, R0
XCH A, R2
XCH A, 83H
XCH A, R2
L017AH:
DJNZ R7, L0165H
DJNZ R6, L0165H
SJMP L013EH
L0180H:
PUSH 0E0H
PUSH 83H
PUSH 82H
PUSH 0D0H
MOV 0D0H, #00H
MOV 8CH, #0F0H
MOV 8AH, #60H
MOV A, 0CH
JNZ L01AFH
MOV A, 0DH
JZ L01CBH
MOV A, 0CH
MOV DPTR, #0244H
MOVC A, @A+DPTR
MOV 0A0H, A
MOV A, #0DH
ADD A, 0CH
MOV R0, A
MOV A, @R0
MOV DPTR, #0233H
MOVC A, @A+DPTR
MOV 90H, A
SJMP L01CBH
L01AFH:
MOV A, 0CH
MOV DPTR, #0244H
MOVC A, @A+DPTR
MOV 0A0H, A
MOV A, #0DH
ADD A, 0CH
MOV R0, A
MOV A, @R0
MOV DPTR, #0233H
MOVC A, @A+DPTR
MOV 90H, A
MOV A, 0CH
CJNE A, #01H, L01CBH
ORL 90H, #80H
L01CBH:
INC 0CH
MOV A, 0CH
CJNE A, #03H, L01D5H
MOV 0CH, #00H
L01D5H:
POP 0D0H
POP 82H
POP 83H
POP 0E0H
RETI
L01DEH:
CJNE R4, #00H, L01ECH
CJNE R6, #00H, L020DH
MOV A, R7
MOV 0F0H, R5
DIV AB
MOV R7, A
MOV R5, 0F0H
RET
L01ECH:
CLR A
XCH A, R4
MOV R0, A
MOV 0F0H, #08H
L01F2H:
MOV A, R7
ADD A, R7
MOV R7, A
MOV A, R6
RLC A
MOV R6, A
MOV A, R4
RLC A
MOV R4, A
MOV A, R6
SUBB A, R5
MOV A, R4
SUBB A, R0
JC L0206H
MOV R4, A
MOV A, R6
SUBB A, R5
MOV R6, A
INC R7
L0206H:
DJNZ 0F0H, L01F2H
CLR A
XCH A, R6
MOV R5, A
RET
L020DH:
MOV A, R5
MOV R0, A
MOV 0F0H, A
MOV A, R6
DIV AB
JB 0D0H.2, L0232H
MOV R6, A
MOV R5, 0F0H
MOV 0F0H, #08H
L021CH:
MOV A, R7
ADD A, R7
MOV R7, A
MOV A, R5
RLC A
MOV R5, A
JC L022BH
SUBB A, R0
JNC L022DH
DJNZ 0F0H, L021CH
RET
L022BH:
CLR C
SUBB A, R0
L022DH:
MOV R5, A
INC R7
DJNZ 0F0H, L021CH
L0232H:
RET
ADDC A, R7
INC @R0
ANL A, R3
ORL A, R7
XRL A, @R0
XRL A, R5
MOV R5, #07H
MOV R7, #6FH
MOV @R1, #7CH
ADDC A, R1
ANL A, R6
MOV R1, #71H
NOP
MOV R6, A
MOV R5, A
MOV R3, A
MOV R7, A

END

编译器先把C语言转化为汇编,然后将汇编转化为机器代码,所以你只需要将程序编译一下得到机器代码,然后将机器代码反汇编即可。

你编译后在仿真调试时,选择disassembly就可以看到编译成的汇编程序。

KEIL C编译器有这个功能,你把“generate Assembler SRC”选项选上即可

以下为我帮你编的汇编代码,非反编译C代码的,实现功能与你所给源代码相同
占用资源极少。希望对你有所帮助
E_mail:xuyanyan310@163.com

INTV EQU 0X30
DECV EQU 0X31
DISPCOUNT EQU 0X32
DISPBUF EQU 0X33

ORG 0X0000
AJMP START

ORG 0X0003
AJMP TIMER

ORG 0X0030
START: MOV SP,0X0060
MOV TMOD,0x01
MOV TH0,0XF0
MOV TL0,0X5F
SETB TR0
SETB ET0
SETB EA
MOV INTV,#0X02
MOV DECV,#0X00
MOV DISPCOUNT,#0X00
MOV P0,0X14
MOV DISPBUF,#0X00
MOV DISPBUF+1,#0X00
MOV DISPBUF+2,#0X00

MAIN: MOV A,INTV
SUBB A,#21
JNC MAIN_S4
JB P3.1,MAIN_S4
MOV R7,#245
MAIN_S1: JNB P3.1,MAIN_S3
INC DECV
MOV A,DECV
CJNE A,#10,MAIN_S2
INC INTV
MOV DECV,#00
MAIN_S2: MOV A,P0
INC A
MOV P0,A
JNB P3.1,$
MAIN_S3: DJNZ R7,MAIN_S1
MAIN_S4: JB P3.0,MAIN_END
MOV R7,#245
MAIN_S5: JNB P3.0,MAIN_S7
MOV A,DECV
CJNE A,#0,MAIN_S6
DEC INTV
MOV DECV,#09
MAIN_S6: DEC DECV
MOV A,P0
INC A
MOV P0,A
JNB P3.0,$
MAIN_S7: DJNZ R7,MAIN_S4
MAIN_END: MOV A,INTV
MOV DPTR,#BCD
MOVC A,@A+DPTR
PUSH ACC
ANL A,0X0F
MOV DISPBUF,A
POP ACC
ANL A,0XF0
SWAP A
MOV DISPBUF+1,A
MOV DISPBUF+2,DECV
AJMP MAIN

TIMER: PUSH ACC
PSH R0
MOV A,DISPCOUNT
CJNE A,0X00,TIMER_S2
MOV A,DISPBUF
CJNE A,#0X00,TIMER_S1
AJMP TIMER_S3
TIMER_S1: CALL DISP
AJMP TIMER_S3
TIMER_S2: CALL DISP
MOV A,DISPCOUNT
CJNE A,#0X01,TIMER_S3
ANL P1,#0X80
TIMER_S3: INC DISPCOUNT
MOV A,DISPCOUNT
CJN A,#0X03,TIMER_END
MOV DISPCOUNT,#0X00
TIMER_END: MOV TH0,0XF0
MOV TL0,0X5F
POP R0
POP ACC
RETI

DISP: MOV A,DISPCOUNT
MOV DPTR,#DISPBITCODE
MOVC A,@A+DPTR
MOV P2,A
MOV A,DISPCOUNT
ADD A,#DISPBUF
MOV R0,A
MOV A,@R0
MOV DPTR,#DISPCODE
MOVC A,@A+DPTR
MOV P2,A
RET

DISPCODE: DB 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07
DB 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71
DB 0x00

DIAPBITCODE: DB 0xFE,0xFD,0xFB

BCD: DB 0X00,0X01,0X02,0X03,0X04,0X05,0X06,0X07
DB 0X08,0X09,0X10,0X11,0X12,0X13,0X14,0X15
DB 0X16,0X17,0X18,0X19,0X20,0X21,0X22,0X23
DB 0X24,0X25,0X26,0X27,0X28,0X29,0X30,0X31
DB 0X32,0X33,0X34,0X35,0X36,0X37,0X38,0X39
DB 0X40,0X41,0X42,0X43,0X44,0X45,0X46,0X47
DB 0X48,0X49,0X50,0X51,0X52,0X53,0X54,0X55
DB 0X56,0X57,0X58,0X59,0X60,0X61,0X62,0X63
DB 0X64,0X65,0X66,0X67,0X68,0X69,0X70,0X71
DB 0X72,0X73,0X74,0X75,0X76,0X77,0X78,0X79
DB 0X80,0X81,0X82,0X83,0X84,0X85,0X86,0X87
DB 0X88,0X89,0X90,0X91,0X92,0X93,0X94,0X95
DB 0X96,0X97,0X98,0X99
END


C语言与单片机C语言的区别 急求
3、单片机c语言编程是基于C语言的单片机编程。单片机的C语言采用C51编译器(简称C51)。由C51产生的目标代码短,运行速度高,存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言PL\/M51语言目标代码混合使用。C51本质就是C,是为在单片机上使用C而出来的,如果C不...

在pic中如何用C语言编写程序?
TRISA0=1;ds18b20_init(); \/\/复位等待从机应答 ds18b20_write_byte(0XCC); \/\/忽略ROM匹配ds18b20_write_byte(0X44); \/\/发送温度转化命令 for(i=2;i>0;i--) { display(); \/\/调用多次显示函数,确保温度转换完成所需要的时间 }ds18b20_init(); \/\/再次复位,等待从机应答 ds18b20_write_byte(0XCC); \/...

用C语言编写一个单片机控制LED灯闪烁变化的编程 急用!!!
C语言实现LED灯闪烁控制配套51单片机开发板。include \/\/包含单片机寄存器的头文件 \/***函数功能:延时一段时间 \/ void delay(void) \/\/两个void意思分别为无需返回值,没有参数传递。{ unsigned int i; \/\/定义无符号整数,最大取值范围65535。for(i=0;i<20000;i++) \/\/做20000次空...

c语言是什么意思
C语言是Combined Language(组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需...

《单片机C语言程序设计实训100例——基于8051+Proteus仿真》 第03...
单片机c语言编程100个实例目录1 函数的使用和熟悉 实例3:用单片机控制第一个灯亮 实例4:用单片机控制一个灯闪烁:认识单片机的工作频率 实例5:将 P1口状态分别送入P0、P2、P3口:认识I\/O口的引脚功能 实例6:使用P3口流水点亮8位LED 实例7:通过对P3口地址的操作流水点亮8位LED 实例8:用不...

怎样用2个按键让51弹片机P1 P2口输出高电平和低电平,用C语言怎样编?
P1,P2口都有8条线哦,假定按键1在 P10口 按键2在 P11口 两个输出口分别为 P20 P21 我写个主循环的一部分。while(1){ if(P10==0) P20=0;else P20=1;if(P11==0) P21=0;else P21=1;}

c语言是怎样实现内存读写的?
编程将片外RAM的1000H单元开始的100个字节的数据相加,结果存放于R7R6中:MOV R6, #0 MOV R7, #0 CLR C;必须先将CY(进位标志)清零 MOV DPTR, #1000H MOV R2, #100 LOOP:MOVX A, @DPTR ADD A, R6 MOV R6, A;存储低8位 JC ADD2;CY为一的话,...

c++和c语言有什么区别啊?那我们单片机用什么编程啊?
2.C是C++的子集,它的基本概念和设计方法相对比较容易理解,初学者可从它入手。3.如果要学好C++,建议初学者最好别在如VC,BCB平台下写程序,那种自动化的代码生成,花花绿绿的界面,会让你手足无措。最好先找一片空地(unix,dos),从头做起,写几个大点的程序,数个回合,再到VC,BCB下看看,...

求c语言,电影院售票管理系统的设计与实现的代码
time,int seat){ce->name=name;ce->time=time;ce->seat=seat;ce->saled=0;return 1;}int saleThread(struct cell* ce,int dd){if((ce->seat-ce->saled)>=dd){ce->saled+=dd;printf("售票成功!按ESC键返回主菜单\\n");fflush(stdin);int cc=_getche();return 1;}else{printf(...

C语言程序的调试和步骤
详情请查看视频回答

内蒙古自治区18792387985: 单片机中,怎样把C语言转化为汇编语言? -
锺尤远策: 单片机是没这个能力将C语言转换为汇编语言的,它只知道执行1或0.汇编语言和C语言都是我们用来跟单片机沟通的语言 只有用软件来编译为单片机可执行的1,0文件 单片机才能运行. 所以要c语言编译为汇编语言是我们所用到的编译器做的事情,比如说 keil iar gcc 等的编译器他们都支持C语言编译为汇编语言 并可生成单片机可执行文件.不同的单片机所用的编译器或许不同

内蒙古自治区18792387985: 用keil 怎样将一段52单片机的c代码转成汇编输出? -
锺尤远策: 1、首先编译,必须通过才行. 2、之后,按CTRL+F5进入调试仿真界面. 3、点击“View菜单”,打开“Disassembly Windows”,这个页面就是与C对应的汇编程序.

内蒙古自治区18792387985: 单片机c语言转汇编 -
锺尤远策: 首先我奉劝你两点 1.先学汇编还是先学c语言都很难,但是可以根据自身对计算机的了解来选择,不要听别人说c语言难或者汇编难,难就难在是否下苦功 2.脚踏实地的学,不要浪费任何一个学习的例子,刚开始学的时候一定要多敲程序,哪怕这...

内蒙古自治区18792387985: 怎么把编好的单片机c语言改成汇编语言
锺尤远策: 完整C项目编译通过,就可以在仿真环境下,反汇编窗看到汇编语言.因为处理器不同、编译器的不同、优化不同,结果并不唯一.

内蒙古自治区18792387985: 如何将单片机C语言程序翻译成汇编?
锺尤远策: 你在kile软件里面的仿真中.有一个(disassembly window)图标点击一下,可以把c翻译成汇编, disassembly window是一个反汇编的窗口

内蒙古自治区18792387985: 怎么把单片机c语言变成汇编语言.万分感谢,在线等. -
锺尤远策: 如果是用keil, 编译时加参数 CO 就可以生成汇编码文件

内蒙古自治区18792387985: C语言写的程序 怎么反汇编成汇编语言 -
锺尤远策: 静态反汇编的话最好的工具是IDA Pro 反汇编动态调试的话,目前比较强的是OllyDBG 不过OllyDBG只适用于32位并且工作在ring3层的PE程序 据OD官网说64位版的OllyDBG正在开发中,但不知何年何月了…… ring0层的驱动程序需要调试的话 可以用WinDBG双机互联进行调试 也可以用SoftICE进行本地内核调试 不过SoftICE不更新了,最新版是集成在DriverStudio中的,XP以上的系统未必能正常运行 而且只支持单核CPU……双核想用的话必须手动停掉一个内核……

内蒙古自治区18792387985: 如何将单片机的C程序语言改写成汇编语言?
锺尤远策: 用编译器,常用的是KEIL 去WWW.KEIL.COM下个评估版的就行了 你的程序有问题,好多东西都没定义,我没法帮你弄

内蒙古自治区18792387985: 找人帮忙把单片机的C语言转换成单片机的汇编语言,程序如下 谢谢了 急用啊.. -
锺尤远策: 你将程序导入到KEILC里面,编译完成后,进入DEBUG模式,调出disassembly windows窗口(在view菜单),就可以显示汇编语言了.

内蒙古自治区18792387985: 单片机c语言怎么翻译成汇编语言啊?有没有软件可以用啊? -
锺尤远策: 你的编译器里应该有选项,可以反汇编,英语的话找disassembled,就可以看到汇编了.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网