单片机C51,将汇编语言转换为C语言

ORG 0000h
Ajmp main
ORG 0023H
AJMP  TRANI
MAIN:MOV SCON, #80H
MOV PCON, #80H
SETB EA
SETB ES 
MOV  R0,#50H 
MOV  R7, #10H   
LOOP:MOV A,@R0
MOV C, P
MOV TB8, C
MOV SBUF, A
HERE: SJMP HERE
TRANI:PUSH A
PUSH PSW
CLR  TI 
DJNZ R7, NEXT
CLR  ES 
SJMP TEND
NEXT:INC R0
MOV A, @R0
MOV C, P   
MOV TB8, C
MOV SBUF, A  
POP PSW  
POP A
TEND:RETI  

第1个回答  2018-05-17
#include<reg52.h>
#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 0X50
ORG 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

本回答被提问者和网友采纳
第2个回答  2018-06-26
你好懒,直接照个相将图片贴上来了, 输入汇编源码可以找我给你翻译成C
相似回答