汇编转化成C语言是非常困难的 因为有些指令只在汇编里面有C语言是不支持的
例如对寄存器 *** 作之类的
目前还没有汇编转C语言的工具
大多数只能手动转但是转过的C语言再生成机器码没有原来汇编的效率高
#include<reg52h>
#define u8 unsigned char
#define u16 unsigned int
#define BufSize 0x10
u8 buf[BufSize];
u8 js=0;
void main(){
SCON=0x80;
PCON=0x80;
EA=1;
ES=1;
ACC=buf[0];
TB8=P;
SBUF=ACC;
while(1);
}
void TRANI()interrupt 4
{
TI=0;
js++;
if(js==BufSize){
ES=0;
}
else{
ACC=buf[js];
TB8=P;
SBUF=ACC;
}
}
顺便优化汇编代码
BUF EQU 0X50ORG 0000H
JMP MAIN
ORG 0023H
JMP TRANI
MAIN:
MOV SCON,#0X80;
MOV PCON,#0X80
SETB EA
SETB ES
MOV R0,#BUF
MOV A,@R0
MOV C,P
MOV TB8,C
MOV SBUF,A
JMP $
TRANI:
PUSH PSW
PUSH ACC
INC R0
CJNE R0,#BUF+0x10,NEXT
JMP TEND
NEXT: MOV A,@R0
MOV C,P
MOV TB8,C
MOV SBUF,A
TEND:
POP ACC
POP PSW
RETI
基本上等价于下面这条语句:
return (((z - y) & 0x0001ffff) ((z - y) ^ x));
%edx中保存(z - y)的值,将这个值赋给%eax后,%eax进行左移和右移15位其实就是对高15位置零,即(z - y) & 0x0001ffff
xorl 8(%ebp),%edx等价于(z - y) ^ x
最后将两个结果相乘
以上就是关于汇编语言可以直接转化为C语言吗有没有工具全部的内容,包括:汇编语言可以直接转化为C语言吗有没有工具、单片机C51,将汇编语言转换为C语言、把汇编代码转化成C代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)