如何把下面的C语言转换为汇编语言

Posted

tags:

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

#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x3B31);
#define PORTAIT(adr,bit) ((unsigned)(&adr)*8+(bit)) /*绝对寻址位操作指令*/
static bit PORTA_4 @ PORTAIT(PORTA,4);
const uchar table[]=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90;
const uchar table1[]=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x58,0x00,0x10;
uchar a1,a2,a3,a4;
void delay(uint x);
void init();
void SPIINIT();
void SPILED(unsigned char byte);
void disp(uchar num1,uchar num2,uchar num3,uchar num4);
const unsigned char step[6]=0xb1,0xb2,0xb4,0xb8;
uint get_ad();
void didi();
void stepmotorandled();
void main()

uint lednum;
init();
SPIINIT();
while(1)

lednum=get_ad();
a1=lednum/1000;
a2=lednum%1000/100;
a3=lednum%100/10;
a4=lednum%10;

TXREG=lednum/100;
while(!TRMT);
TXREG=lednum%100;
while(!TRMT);
disp(a1,a2,a3,a4);
if(lednum>2400)

didi();
stepmotorandled();

else
PORTD=0X7F;


void delay(uint x)

uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);

void init()

TRISA=0x01; /*A口设置为输出*/
TRISD=0;
INTCON=0x00; /*关闭所有中断*/
PORTA_4=0;
PORTA=0;
PORTD=0xff;
ADCON0=0x41;
ADCON1=0x8e;

TRISC=0xfe;
RC0=1;
TXSTA=0x24;
RCSTA=0x90;
SPBRG=25;

uint get_ad()

uint adval,i,adver=0;
float advalf;
for(i=10;i>0;i--)

ADGO=1;
while(ADGO);
adval=ADRESH;//00000000 00000011
adval=adval<<8|ADRESL;//00000011 11111111
advalf=adval/1023.0*5.0;//==2.3843
adval=advalf*1000;
adver=adver+adval;

adver=adver/10;
return (adver);

void disp(uchar num1,uchar num2,uchar num3,uchar num4)

uchar c;
PORTA_4=0;
c=0xff;
SPILED(c);
c=0xff;
SPILED(c);
c=table[a4];
SPILED(c);
c=table[a3];
SPILED(c);
c=table[a2];
SPILED(c);
c=table1[a1];
SPILED(c);
PORTA_4=1;
delay(200);

void SPIINIT()

PIR1=0;
SSPCON=0x32; /* SSPEN=1;CKP=0 , FOSC/64 */
SSPSTAT=0xC0;
TRISC=0x00; /*SDO引脚为输出,SCK引脚为输出*/


void SPILED(unsigned char byte)

SSPBUF=byte; /*启动发送*/
do

;
while(SSPIF==0); /*等待发送完毕*/
SSPIF=0; /*清除SSPIF标志*/
byte=SSPBUF;

void didi()

uint m;
for(m=5;m>0;m--)

RC0=0;
delay(50);
RC0=1;
delay(20);


void stepmotorandled()


uchar i,j;
for(j=0;j<255;j++)

for(i=0;i<4;i++)

PORTD=step[i];
delay(5);




for(j=0;j<255;j++)

for(i=0;i<4;i++)

PORTD=step[i];
delay(5);





如何把下面的C语言转换为汇编语言
用的是16F877A芯片

如果你用LINUX系统的话,可以用它下的C语言编译器(GCC)你懂C的话,直接把你的问题用C语言写好,然后GCC -S命令,就可以直接把C语言代码转换成汇编程序,然后你打开看看指令就好了.我是用LINUX平台的,至于WINDOWS有没有这个环境我就不知道了..给我分吧 邮箱留下 我可以帮你 参考技术A 编译,然后反汇编 参考技术B 反汇编

c语言中如何将一个字符ascii码转换为整型数

#include"stdio.h"
#include"string.h"
main()

int i,s;
int num[80];
char str[80],ch[80];
i=0;
s=0;
printf("input a string:");
gets(str);
while(str[i]!='\n')

i++;

str[i]='\0';
for(i=0;i<80;i++)
if(str[i]>='0'&&str[i]<='9')

ch[i]=str[i]-'0';
num[i]=ch[i];
s=s*10+num[i];

printf("%d",s);
printf("\n");
getch();

c语言中,字符ascll码是通过控制其输出格式来把它转化为整型数的,格式控制中"%c",就是将其以字符形式输出,而直接改成"%d",就可以将其转换为整型数。

ASCII码,英文全称:American Standard Code for Information Interchange,是美国信息交换标准代码是一种用于信息交换的美国标准代码。7位字符集广泛用于代表标准美国键盘上的字符或符号。通过将这些字符使用的值标准化,ASCII允许计算机和计算机程序交换信息。ASCII字符集是与ANSI字符集中的前面128个(0-127)字符相同。

美国信息交换标准代码ASCII为"美国信息交换标准代码"十个字对应英文的缩写,ASCII文件是简单的无格式文本文件,可以由任何计算机所识别,Windows中的记事本及任何文字处理程序都可以阅读及创建ASCII文件。ASCII文件通常都具有扩展名.TXT(例如README.TXT)

在计算机中,所有的数据在存储和运算时都要使用二进制数表示,同样的,象a、b、c、d这样的52个字母(包括大写)、以及0、1、2等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪个数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通讯而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了所谓的美国信息交换标准码,统一规定了上述常用符号用哪个二进制数来表示。
参考技术A 删掉ch[i]这个步骤就可以了
ch[i]=str[i]-'0';
num[i]=ch[i];
s=s*10+num[i];
改成
num[i]=str[i]-'0';
s=s*10+num[i];
参考技术B str[i]-'0'这不就转了吗,直接减去'0'(字符)追问

可是运行结果有错啊?

追答

你那是赋值错误,你把整数赋值给了ch[i],你直接打印出来str[i]-'0'看看

参考技术C while(str[i]!='\n')
这里改成 while(str[i]!='\0')
参考技术D for循环的错误,不能让他加到80.i<strlen(str);并且gets的用法也有错误,它会直接加‘\0’,不用自己加吧
你的程序写的有点繁琐

#include"stdio.h"
#include"string.h"
main()

int i,s;
char str[80];
i=0;
s=0;
printf("input a string:");
gets(str);

for(i=0;i<strlen(str);i++)
if(str[i]>='0'&&str[i]<='9')


s=s*10+str[i]-'0';

printf("%d",s);
printf("\n");
getchar();
本回答被提问者采纳

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

如何将下面的C语言转化成C#

怎样用c语言产生0-100随机数?求助高手

hex文件转换成C语言

C语言中如何把浮点型转换为字符型

c语言如何实现将一张RGB的图片转化为YUV

C语言ASCII码与字母如何转换?求详解