c语言转换成汇编语言

Python046

c语言转换成汇编语言,第1张

如下即可:

ORG 0000H

LJMP START

ORG 0003H

LJMP X0_INT

ORG 0013H

LJMP X1_INT

ORG 0030H

START:

SETB IT0

SETB IT1

SETB EX0

SETB EX1

SETB EA

----------------------

MOV A, #0FEH

LOOP:

MOV P1, A

CALL DELAY

RLA

SJMP LOOP

----------------------

X0_INT:

PUSH ACC

PUSH PSW

SETB RS0

MOV A, #0F0H

MOV R2, #6

X0_1:

MOV P1, A

CALL DELAY

CPL A

DJNZ R2, X0_1

POP PSW

POP ACC

RETI

----------------------

X1_INT:

PUSH ACC

PUSH PSW

SETB RS1

MOV A, #0AAH

MOV R2, #6

X1_1:

MOV P1, A

CALL DELAY

CPL A

DJNZ R2, X1_1

POP PSW

POP ACC

RETI

----------------------

DELAY:

MOV R5, #3

DJNZ R7, $

DJNZ R6, $ - 2

DJNZ R5, $ - 4

RET

----------------------

END

如果是VC则在编译器命令行参数再加 /FA 则会生成汇编代码。如果参数是 /FAs 则会同时将源码和汇编代码。

/FA 程序集代码;.asm

/FAc 机器码和程序集代码;.cod

/FAs 源代码和程序集代码;.asm

/FAcs 机器码、源代码和程序集码;.cod

/Fa的用法

/Fa 为编译中的每个源代码文件创建一个源文件.asm。

/Fa文件名 将文件名.asm 放到当前目录中。仅在编译单个源代码文件时有效。

/Fa文件名.扩展名 将文件名.扩展名放到当前目录中。仅在编译单个源代码文件时有效。

/Fa目录\ 为编译中的每个源代码文件创建一个源文件.asm,并将其放到指定目录中。请注意必须有后缀反斜杠。只允许使用当前磁盘上的路径。

/Fa目录\文件名 将文件名.asm 放到指定目录中。仅在编译单个源代码文件时有效。

/Fa目录\文件名.扩展名 将文件名.扩展名放到指定目录中。仅在编译单个源代码文件时有效。

如果你是用gcc 或 g++编译器,如dev c++则加入命令行参数 -S 即可

程序有很多问题,做了部分修改

#include<reg51.h>

#define uchar unsigned char

sbit p10=P1^0

sbit p30=P3^0

sbit p31=P3^1

sbit p12=P1^2

void delay()

{

uchar i,j

for(i=0i<170i++)

for(i=0i<187i++)

}

void alarm()

{

uchar times

p12=1

p30=0

p31=0

times=0x14

TMOD=0x01

TH0=0x3c

TL0=0xb0

TR=1

while(times)

{

while(TF0==0)

TF0=0

TH0=0x3c

TL0=0xb0

times--

}

p30=1

p31=0

p12=0

}

void pint0() interrupt 0

{

EX0=0

if(p32==0)

{

delay()

if(p32==0)

{

p30=1

p31=0

p12=0

}

}

EX0=1

}

main()

{

IE=0x81

IT0=1

SP=0x30

p30=1

p31=1

P1=0xff

P2=0x00

p12=0

while(1)

{

if(p10==0)

{

delay()

if(p10==0)alarm()

}

}

}