谁能把该C程序翻译成汇编啊【单片机的】

这是用AT89C51单片机和ADC0809构成的数字电压表系统的程序,急用,希望两天内能答复。
#include <AT89X52.H>

unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00};
unsigned char dispbuf[8]={10,10,10,10,0,0,0,0};
unsigned char dispcount;
unsigned char getdata;
unsigned int temp;
unsigned char i;

sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLK=P3^3;

void main(void)
{
ST=0;
OE=0;
ET0=1;
ET1=1;
EA=1;
TMOD=0x12;
TH0=216;
TL0=216;
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
TR1=1;
TR0=1;
ST=1;
ST=0;
while(1)
{
if(EOC==1)
{
OE=1;
getdata=P0;
OE=0;
temp=getdata*235;
temp=temp/128;
i=5;
dispbuf[0]=10;
dispbuf[1]=10;
dispbuf[2]=10;
dispbuf[3]=10;
dispbuf[4]=10;
dispbuf[5]=0;
dispbuf[6]=0;
dispbuf[7]=0;
while(temp/10)
{
dispbuf[i]=temp%10;
temp=temp/10;
i++;
}
dispbuf[i]=temp;
ST=1;
ST=0;
}
}
}

void t0(void) interrupt 1 using 0
{
CLK=~CLK;
}

void t1(void) interrupt 3 using 0
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
P1=dispcode[dispbuf[dispcount]];
P2=dispbitcode[dispcount];
if(dispcount==7)
{
P1=P1 | 0x80;
}
dispcount++;
if(dispcount==8)
{
dispcount=0;
}
}
我要直接的完整汇编程序。用keil编译后的反汇编指令乱七八糟的,咋用啊。我程度不好啊。可以追加分数的啊

92: ?C_STARTUP: LJMP STARTUP1
93:
94: RSEG ?C_C51STARTUP
95:
96: STARTUP1:
97:
98: IF IDATALEN <> 0
C:0x0000 0200B6 LJMP STARTUP1(C:00B6)
66: void t0(void) interrupt 1 using 0
67: {
68: CLK=~CLK;
C:0x0003 B2B3 CPL CLK(0xB0.3)
69: }
70:
C:0x0005 32 RETI
C:0x0006 00 NOP
C:0x0007 00 NOP
C:0x0008 00 NOP
C:0x0009 00 NOP
C:0x000A 00 NOP
C:0x000B 020003 LJMP t0(C:0003)
C:0x000E 08 INC R0
C:0x000F 0D INC R5
C:0x0010 0A INC R2
C:0x0011 0A INC R2
C:0x0012 0A INC R2
C:0x0013 0A INC R2
C:0x0014 00 NOP
C:0x0015 00 NOP
C:0x0016 00 NOP
C:0x0017 00 NOP
C:0x0018 00 NOP
C:0x0019 00 NOP
C:0x001A 00 NOP
C:0x001B 020197 LJMP t1(C:0197)
19: void main(void)
20: {
21: ST=0;
C:0x001E C2B0 CLR ST(0xB0.0)
22: OE=0;
C:0x0020 C2B1 CLR OE(0xB0.1)
23: ET0=1;
C:0x0022 D2A9 SETB ET0(0xA8.1)
24: ET1=1;
C:0x0024 D2AB SETB ET1(0xA8.3)
25: EA=1;
C:0x0026 D2AF SETB EA(0xA8.7)
26: TMOD=0x12;
C:0x0028 758912 MOV TMOD(0x89),#0x12
27: TH0=216;
C:0x002B 758CD8 MOV TH0(0x8C),#0xD8
28: TL0=216;
C:0x002E 758AD8 MOV TL0(0x8A),#0xD8
29: TH1=(65536-4000)/256;
C:0x0031 758DF0 MOV TH1(0x8D),#B(0xF0)
30: TL1=(65536-4000)%256;
C:0x0034 758B60 MOV TL1(0x8B),#0x60
31: TR1=1;
C:0x0037 D28E SETB TR1(0x88.6)
32: TR0=1;
C:0x0039 D28C SETB TR0(0x88.4)
33: ST=1;
C:0x003B D2B0 SETB ST(0xB0.0)
34: ST=0;
C:0x003D C2B0 CLR ST(0xB0.0)
35: while(1)
36: {
37: if(EOC==1)
C:0x003F 30B2FD JNB EOC(0xB0.2),C:003F
38: {
39: OE=1;
C:0x0042 D2B1 SETB OE(0xB0.1)
40: getdata=P0;
C:0x0044 85800A MOV getdata(0x0A),P0(0x80)
41: OE=0;
C:0x0047 C2B1 CLR OE(0xB0.1)
42: temp=getdata*235;
C:0x0049 E50A MOV A,getdata(0x0A)
C:0x004B 75F0EB MOV B(0xF0),#0xEB
C:0x004E A4 MUL AB
C:0x004F 85F008 MOV temp(0x08),B(0xF0)
C:0x0052 F509 MOV 0x09,A
43: temp=temp/128;
C:0x0054 AE08 MOV R6,temp(0x08)
C:0x0056 7807 MOV R0,#0x07
C:0x0058 CE XCH A,R6
C:0x0059 C3 CLR C
C:0x005A 13 RRC A
C:0x005B CE XCH A,R6
C:0x005C 13 RRC A
C:0x005D D8F9 DJNZ R0,C:0058
C:0x005F F509 MOV 0x09,A
C:0x0061 8E08 MOV temp(0x08),R6
44: i=5;
C:0x0063 750C05 MOV i(0x0C),#0x05
45: dispbuf[0]=10;
C:0x0066 750D0A MOV dispbuf(0x0D),#getdata(0x0A)
46: dispbuf[1]=10;
C:0x0069 750E0A MOV 0x0E,#getdata(0x0A)
47: dispbuf[2]=10;
C:0x006C 750F0A MOV 0x0F,#getdata(0x0A)
48: dispbuf[3]=10;
C:0x006F 75100A MOV 0x10,#getdata(0x0A)
49: dispbuf[4]=10;
C:0x0072 75110A MOV 0x11,#getdata(0x0A)
50: dispbuf[5]=0;
C:0x0075 E4 CLR A
C:0x0076 F512 MOV 0x12,A
51: dispbuf[6]=0;
C:0x0078 F513 MOV 0x13,A
52: dispbuf[7]=0;
C:0x007A F514 MOV 0x14,A
53: while(temp/10)
C:0x007C AE08 MOV R6,temp(0x08)
C:0x007E AF09 MOV R7,0x09
C:0x0080 7C00 MOV R4,#0x00
C:0x0082 7D0A MOV R5,#getdata(0x0A)
C:0x0084 120142 LCALL C?UIDIV(C:0142)
C:0x0087 AA06 MOV R2,0x06
C:0x0089 AB07 MOV R3,0x07
C:0x008B EB MOV A,R3
C:0x008C 4A ORL A,R2
C:0x008D 601A JZ C:00A9
54: {
55: dispbuf[i]=temp%10;
C:0x008F AE08 MOV R6,temp(0x08)
C:0x0091 AF09 MOV R7,0x09
C:0x0093 7C00 MOV R4,#0x00
C:0x0095 7D0A MOV R5,#getdata(0x0A)
C:0x0097 120142 LCALL C?UIDIV(C:0142)
C:0x009A 740D MOV A,#dispbuf(0x0D)
C:0x009C 250C ADD A,i(0x0C)
C:0x009E F8 MOV R0,A
C:0x009F A605 MOV @R0,0x05
56: temp=temp/10;
C:0x00A1 8A08 MOV temp(0x08),R2
C:0x00A3 8B09 MOV 0x09,R3
57: i++;
C:0x00A5 050C INC i(0x0C)
58: }
C:0x00A7 80D3 SJMP C:007C
59: dispbuf[i]=temp;
C:0x00A9 740D MOV A,#dispbuf(0x0D)
C:0x00AB 250C ADD A,i(0x0C)
C:0x00AD F8 MOV R0,A
C:0x00AE A609 MOV @R0,0x09
60: ST=1;
C:0x00B0 D2B0 SETB ST(0xB0.0)
61: ST=0;
C:0x00B2 C2B0 CLR ST(0xB0.0)
62: }
63: }
64: }
65:
66: void t0(void) interrupt 1 using 0
67: {
68: CLK=~CLK;
69: }
70:
C:0x00B4 8089 SJMP C:003F
99: MOV R0,#IDATALEN - 1
C:0x00B6 787F MOV R0,#0x7F
100: CLR A
C:0x00B8 E4 CLR A
101: IDATALOOP: MOV @R0,A
C:0x00B9 F6 MOV @R0,A
102: DJNZ R0,IDATALOOP
C:0x00BA D8FD DJNZ R0,IDATALOOP(C:00B9)
151: MOV SP,#?STACK-1
152: ; This code is required if you use L51_BANK.A51 with Banking Mode 4
153: ; EXTRN CODE (?B_SWITCH0)
154: ; CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
C:0x00BC 758114 MOV SP(0x81),#0x14
155: LJMP ?C_START
C:0x00BF 0200FD LJMP C:00FD
C:0x00C2 02001E LJMP main(C:001E)
C:0x00C5 E4 CLR A
C:0x00C6 93 MOVC A,@A+DPTR
C:0x00C7 A3 INC DPTR
C:0x00C8 F8 MOV R0,A
C:0x00C9 E4 CLR A
C:0x00CA 93 MOVC A,@A+DPTR
C:0x00CB A3 INC DPTR
C:0x00CC 4003 JC C:00D1
C:0x00CE F6 MOV @R0,A
C:0x00CF 8001 SJMP C:00D2
C:0x00D1 F2 MOVX @R0,A
C:0x00D2 08 INC R0
C:0x00D3 DFF4 DJNZ R7,C:00C9
C:0x00D5 8029 SJMP C:0100
C:0x00D7 E4 CLR A
C:0x00D8 93 MOVC A,@A+DPTR
C:0x00D9 A3 INC DPTR
C:0x00DA F8 MOV R0,A
C:0x00DB 5407 ANL A,#0x07
C:0x00DD 240C ADD A,#i(0x0C)
C:0x00DF C8 XCH A,R0
C:0x00E0 C3 CLR C
C:0x00E1 33 RLC A
C:0x00E2 C4 SWAP A
C:0x00E3 540F ANL A,#0x0F
C:0x00E5 4420 ORL A,#0x20
C:0x00E7 C8 XCH A,R0
C:0x00E8 83 MOVC A,@A+PC
C:0x00E9 4004 JC C:00EF
C:0x00EB F4 CPL A
C:0x00EC 56 ANL A,@R0
C:0x00ED 8001 SJMP C:00F0
C:0x00EF 46 ORL A,@R0
C:0x00F0 F6 MOV @R0,A
C:0x00F1 DFE4 DJNZ R7,C:00D7
C:0x00F3 800B SJMP C:0100
C:0x00F5 0102 AJMP C:0002
C:0x00F7 04 INC A
C:0x00F8 08 INC R0
C:0x00F9 102040 JBC 0x24.0,C:013C
C:0x00FC 8090 SJMP C:008E
C:0x00FE 00 NOP
C:0x00FF 0E INC R6
C:0x0100 E4 CLR A
C:0x0101 7E01 MOV R6,#0x01
C:0x0103 93 MOVC A,@A+DPTR
C:0x0104 60BC JZ C:00C2
C:0x0106 A3 INC DPTR
C:0x0107 FF MOV R7,A
C:0x0108 543F ANL A,#0x3F
C:0x010A 30E509 JNB 0xE0.5,C:0116
C:0x010D 541F ANL A,#0x1F
C:0x010F FE MOV R6,A
C:0x0110 E4 CLR A
C:0x0111 93 MOVC A,@A+DPTR
C:0x0112 A3 INC DPTR
C:0x0113 6001 JZ C:0116
C:0x0115 0E INC R6
C:0x0116 CF XCH A,R7
C:0x0117 54C0 ANL A,#0xC0
C:0x0119 25E0 ADD A,ACC(0xE0)
C:0x011B 60A8 JZ C:00C5
C:0x011D 40B8 JC C:00D7
C:0x011F E4 CLR A
C:0x0120 93 MOVC A,@A+DPTR
C:0x0121 A3 INC DPTR
C:0x0122 FA MOV R2,A
C:0x0123 E4 CLR A
C:0x0124 93 MOVC A,@A+DPTR
C:0x0125 A3 INC DPTR
C:0x0126 F8 MOV R0,A
C:0x0127 E4 CLR A
C:0x0128 93 MOVC A,@A+DPTR
C:0x0129 A3 INC DPTR
C:0x012A C8 XCH A,R0
C:0x012B C582 XCH A,DPL(0x82)
C:0x012D C8 XCH A,R0
C:0x012E CA XCH A,R2
C:0x012F C583 XCH A,DPH(0x83)
C:0x0131 CA XCH A,R2
C:0x0132 F0 MOVX @DPTR,A
C:0x0133 A3 INC DPTR
C:0x0134 C8 XCH A,R0
C:0x0135 C582 XCH A,DPL(0x82)
C:0x0137 C8 XCH A,R0
C:0x0138 CA XCH A,R2
C:0x0139 C583 XCH A,DPH(0x83)
C:0x013B CA XCH A,R2
C:0x013C DFE9 DJNZ R7,C:0127
C:0x013E DEE7 DJNZ R6,C:0127
C:0x0140 80BE SJMP C:0100
C?UIDIV:
C:0x0142 BC000B CJNE R4,#0x00,C:0150
C:0x0145 BE0029 CJNE R6,#0x00,C:0171
C:0x0148 EF MOV A,R7
C:0x0149 8DF0 MOV B(0xF0),R5
C:0x014B 84 DIV AB
C:0x014C FF MOV R7,A
C:0x014D ADF0 MOV R5,B(0xF0)
C:0x014F 22 RET
C:0x0150 E4 CLR A
C:0x0151 CC XCH A,R4
C:0x0152 F8 MOV R0,A
C:0x0153 75F008 MOV B(0xF0),#temp(0x08)
C:0x0156 EF MOV A,R7
C:0x0157 2F ADD A,R7
C:0x0158 FF MOV R7,A
C:0x0159 EE MOV A,R6
C:0x015A 33 RLC A
C:0x015B FE MOV R6,A
C:0x015C EC MOV A,R4
C:0x015D 33 RLC A
C:0x015E FC MOV R4,A
C:0x015F EE MOV A,R6
C:0x0160 9D SUBB A,R5
C:0x0161 EC MOV A,R4
C:0x0162 98 SUBB A,R0
C:0x0163 4005 JC C:016A
C:0x0165 FC MOV R4,A
C:0x0166 EE MOV A,R6
C:0x0167 9D SUBB A,R5
C:0x0168 FE MOV R6,A
C:0x0169 0F INC R7
C:0x016A D5F0E9 DJNZ B(0xF0),C:0156
C:0x016D E4 CLR A
C:0x016E CE XCH A,R6
C:0x016F FD MOV R5,A
C:0x0170 22 RET
C:0x0171 ED MOV A,R5
C:0x0172 F8 MOV R0,A
C:0x0173 F5F0 MOV B(0xF0),A
C:0x0175 EE MOV A,R6
C:0x0176 84 DIV AB
C:0x0177 20D21C JB OV(0xD0.2),C:0196
C:0x017A FE MOV R6,A
C:0x017B ADF0 MOV R5,B(0xF0)
C:0x017D 75F008 MOV B(0xF0),#temp(0x08)
C:0x0180 EF MOV A,R7
C:0x0181 2F ADD A,R7
C:0x0182 FF MOV R7,A
C:0x0183 ED MOV A,R5
C:0x0184 33 RLC A
C:0x0185 FD MOV R5,A
C:0x0186 4007 JC C:018F
C:0x0188 98 SUBB A,R0
C:0x0189 5006 JNC C:0191
C:0x018B D5F0F2 DJNZ B(0xF0),C:0180
C:0x018E 22 RET
C:0x018F C3 CLR C
C:0x0190 98 SUBB A,R0
C:0x0191 FD MOV R5,A
C:0x0192 0F INC R7
C:0x0193 D5F0EA DJNZ B(0xF0),C:0180
C:0x0196 22 RET
71: void t1(void) interrupt 3 using 0
72: {
C:0x0197 C0E0 PUSH ACC(0xE0)
C:0x0199 C083 PUSH DPH(0x83)
C:0x019B C082 PUSH DPL(0x82)
C:0x019D C0D0 PUSH PSW(0xD0)
C:0x019F 75D000 MOV PSW(0xD0),#0x00
73: TH1=(65536-4000)/256;
C:0x01A2 758DF0 MOV TH1(0x8D),#B(0xF0)
74: TL1=(65536-4000)%256;
C:0x01A5 758B60 MOV TL1(0x8B),#0x60
75: P1=dispcode[dispbuf[dispcount]];
C:0x01A8 740D MOV A,#dispbuf(0x0D)
C:0x01AA 250B ADD A,dispcount(0x0B)
C:0x01AC F8 MOV R0,A
C:0x01AD E6 MOV A,@R0
C:0x01AE 9001DF MOV DPTR,#dispcode(0x01DF)
C:0x01B1 93 MOVC A,@A+DPTR
C:0x01B2 F590 MOV P1(0x90),A
76: P2=dispbitcode[dispcount];
C:0x01B4 E50B MOV A,dispcount(0x0B)
C:0x01B6 9001D7 MOV DPTR,#dispbitcode(0x01D7)
C:0x01B9 93 MOVC A,@A+DPTR
C:0x01BA F5A0 MOV PPAGE_SFR(0xA0),A
77: if(dispcount==7)
C:0x01BC E50B MOV A,dispcount(0x0B)
C:0x01BE B40703 CJNE A,#0x07,C:01C4
78: {
79: P1=P1 | 0x80;
C:0x01C1 439080 ORL P1(0x90),#P0(0x80)
80: }
81: dispcount++;
C:0x01C4 050B INC dispcount(0x0B)
82: if(dispcount==8)
C:0x01C6 E50B MOV A,dispcount(0x0B)
C:0x01C8 B40803 CJNE A,#temp(0x08),C:01CE
83: {
84: dispcount=0;
C:0x01CB 750B00 MOV dispcount(0x0B),#0x00
85: }
C:0x01CE D0D0 POP PSW(0xD0)
C:0x01D0 D082 POP DPL(0x82)
C:0x01D2 D083 POP DPH(0x83)
C:0x01D4 D0E0 POP ACC(0xE0)
C:0x01D6 32 RETI
C:0x01D7 FE MOV R6,A
C:0x01D8 FD MOV R5,A
C:0x01D9 FB MOV R3,A
C:0x01DA F7 MOV @R1,A
C:0x01DB EF MOV A,R7
C:0x01DC DFBF DJNZ R7,C:019D
C:0x01DE 7F3F MOV R7,#0x3F
C:0x01E0 06 INC @R0
C:0x01E1 5B ANL A,R3
C:0x01E2 4F ORL A,R7
C:0x01E3 66 XRL A,@R0
C:0x01E4 6D XRL A,R5
C:0x01E5 7D07 MOV R5,#0x07
C:0x01E7 7F6F MOV R7,#0x6F
C:0x01E9 00 NOP
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-06-08
太简单了啊,你用Keil,程序写好,编译连接,然后点调试,就自动生成汇编代码了

其实是对编译连接好的机器码进行的反汇编;
第2个回答  2009-06-10
其实你们都弄错了,谁不知道hex文件都可以转化为汇编指令的,他要的是直接用汇编写出来,因为老师交的作业规定用汇编,这个是让他参考的。c转化成的汇编鬼知道他编译系统给怎么编译的。本回答被提问者采纳
第3个回答  2009-06-08
有难度啊
相似回答