一小段单片机C语言程序翻译成汇编

来源:百度知道 编辑:UC知道 时间:2024/06/24 18:29:07
void Txbyte(unsigned char i)
{TI=0;
SBUF=i;
while(!TI);
TI=0;
}
void Txword(int i)
{unsigned char x,y;
x=(i/256);
Txbyte(x);
y=i-256*x;
Txbyte(y);
}
这么一小段,也就是定义的两个函数,要是翻译成汇编,应该怎么办呢?谢谢

{TI=0;
SBUF=i;
while(!TI); //楼主TI不就是等于0吗?还搞什么啊!
TI=0;
}

Txbyte PROC NEAR
MOV SBUF,AX
RET
TI db 0
SBUF db ?
END PROC

Txword PROC NEAR
MOV AX,I
IDIV AX,256
CALL Txbyte
IMUL AX,256
MOV BX,I
SUB AX,BX
CALL Txbyte
RET
I db ?
END PROC

程序需要改才能编译
PROC的参数传递默认是放在AX中的
另外乘除256的指令可以通过移位8位(2^8=256)次来实现

有几种办法,一个就是了解其函数功能,。自己编写汇编。再一个就是用编译器编译这两个函数,然后看其生成的汇编代码。看这两个函数应该是C51的程序,用KEIL编译后,看得到这两个函数对应的汇编程序。
不过这两个函数这么简单,自己用汇编写就好了。