;程序說明:浮點數(shù)變?yōu)閴嚎sBCD碼,保存在以數(shù)組中
;;;;;;;;;;第1字節(jié)的位7:0正,1負.位6:0(位5--0代表小數(shù)點前的位數(shù)),1(位5--0代表小數(shù)
點后0的位數(shù))
;;;;;;;;;;2--4字節(jié)為壓縮BCD碼,有效位為7位,3個半字節(jié),最后半個字節(jié)請使用者自行放
棄
;;;;;;;;;;程序占用資源PSW,A,B,DPTR,R0--R7,SP深度6,RAM;5個放數(shù)據(jù)
;;;;;;;;;;keil;兼容,調(diào)用KEIL;的FPMUL子程序。
;程序作者:*************陳遠征**************
;目;;;;的:追求更快的執(zhí)行速度,與最小的程序代碼
;發(fā)布時間:2003--05--08
;編寫背景:精通匯編,研究C51半個月。身感C51方便中的不便
;;;;;;;;;;研究了幾種匯編及KEIL的浮點算法,特做此程序.
;聲;;;;明:轉載時請保留以上的信息
C程序:
extern;float;ftod(float;i);
unsigned;char;cyz[5];
main(){
;;;;;float;i=1234.567;
;;;;;ftod(i);
while(1);;
;;;;;;}
匯編程序:
PUBLIC;;;_FTOD;;;;;;;;;;;程序段
FTODP;;;;SEGMENT;CODE;;;;入口地址
RSEG;;;;;FTODP;;;;;;;;;;;程序段
EXTRN;;;;;CODE;;(?C?FPMUL)
EXTRN;;;;DATA;;(CYZ)
_FTOD:;;;;;;;;;;;;;;;參數(shù)傳遞在R4--R7中,浮點數(shù)IEEE標準seeeeeee;emmmmmmm;
mmmmmmmm;mmmmmmmm
FTOD:
;;;;;;;;;MOV;;;;;A,R4;;;;;;;;保存數(shù)符
;;;;;;;;;RLC;;;;;A;;;;;;;;;;;;;;;
;;;;;;;;;CLR;;;;;A;;;;;;;;;;;;;;
;;;;;;;;;RRC;;;;;A;;;;;;;;;;;;;;
;;;;;;;;;MOV;;;;;CYZ,A
;;;;;;;;;MOV;;;;;A,R4;;;;;;;;取絕對值
;;;;;;;;;CLR;;;;;ACC.7
;;;;;;;;;MOV;;;;;R4,A
;;;;;;;;;ORL;;;;;A,R5
;;;;;JNZ;;;;;FCMP_1E10
;;;;;;;;;MOV;;;;;CYZ,#0;;;;;;;數(shù)值為0
;;;;;;;;;MOV;;;;;CYZ+1,#0
;;;;;;;;;MOV;;;;;CYZ+2,#0
;;;;;;;;;MOV;;;;;CYZ+3,#0
;;;;;;;;;MOV;;;;;CYZ+4,#0
;;;;;RET
FCMP_1E10:;;
;;;;;;;;;MOV;;;;;DPTR,#YUANZHENG_DE10
;;;;;;;;;LCALL;;;FR0DPTR;;;;;;;;;;;;;;;;數(shù)值裝入R0--R3
;&n