本帖最后由 GZLJZ 于 2012-6-24 20:58 编辑
;程序入口R4R2R3应该是3字节规格化浮点数,经过下面这段程序后,再经过3字节转成2字节BCD码,显示在数码管上
;问下大家使用过浮点数的朋友,下面这段程序大概是什么意思?对了数码管是3个,举例一些显示格式是这样的:-19.9、99.9,999,等
;对浮点数显示过程转换不是很明白,请教大家了,谢谢!
;入口:R4R2R3
MOV A,R4 ;
JB ACC.7,Q0820 ;
;为正值时
JNB RAM_20.4,Q0841 ;
CJNE A,#07H,Q0859 ;
;R4=00000111B
MOV A,R2 ;
CJNE A,#0C8H,Q082C ;
;R2=11001000B
SJMP Q0840 ;
;==========================================================================
Q0817: MOV A,R4 ;
JNB ACC.7,Q081F ;
MOV A,R2 ;
SETB ACC.7 ;
MOV R2,A ;
Q081F: RET ;
;==========================================================================
Q0820: ;为负值时
CLR ACC.7 ;
JB ACC.6,Q082E ;
CJNE A,#05H,Q0859 ;
MOV A,R2 ;
CJNE A,#0A0H,Q082C ;
Q082C: JNC Q0840 ;
Q082E: MOV A,R3 ;
ANL A,#0F8H ;
MOV R3,A ;
JNB RAM_20.4,Q0840 ;
SETB RAM_25.7 ;
MOV A,R4 ;
CLR ACC.7 ;
JB ACC.6,Q084F ;
MOV R7,A ;
SJMP Q0860 ;
;==========================================================================
Q0840: MOV A,R4 ;
Q0841: JB ACC.6,Q084A ;
ANL A,#7FH ;
MOV R7,A ;
CJNE R7,#00H,Q0860 ;
Q084A: MOV R2,#00H ;
MOV R3,#00H ;
RET ;
;==========================================================================
Q084F: CJNE A,#7DH,Q0852 ;
Q0852: JC Q084A ;
SETB ACC.7 ;
MOV R7,A ;
SJMP Q0860 ;
;==========================================================================
Q0859: JC Q082E ;
JB ACC.6,Q082E ;
SJMP Q0840 ;
;==========================================================================
Q0860: CLR C ;
MOV R5,#00H ;
MOV A,#10H ;
SUBB A,R7 ;
MOV R7,A ;
Q0867: ;-----------------------------------
CLR C ;
MOV A,R2 ;
RRC A ;
MOV R2,A ;
MOV A,R3 ;
RRC A ;
MOV R3,A ;
MOV A,R5 ;
RRC A ; A的内容带进位位循环右移
MOV R5,A ;
DJNZ R7,Q0867 ;
;-----------------------------------
JNB RAM_25.7,Q0817 ;
MOV A,R5 ;
ADD A,#01H ;
MOV R5,A ;
CLR A ;
ADDC A,R3 ;
MOV R3,A ;
MOV B,#0AH ;
MUL AB ;
MOV R3,A ;
MOV R2,B ;
MOV A,R5 ;
MOV B,#0AH ;
MUL AB ;
MOV A,B ;
ADD A,R3 ;
MOV R3,A ;
MOV A,R2 ;
ADDC A,#00H ;
MOV R2,A ;
SJMP Q0817 ;
;==========================================================================
一周热门 更多>