|

楼主 |
发表于 2018-3-24 16:50:35
|
显示全部楼层
本帖最后由 电子马甲 于 2018-3-24 16:55 编辑
我自己琢磨的取得四位小数的办法, 虽然很笨拙,但是直观,可靠, 见笑了 
;************************************************************************************************************
; 单字节数 转换为小数
; 要转换的数在29H, 最后的小数在 31H 30H
; 出口 31H,30H ( 需转换为BCD码,转换后的千百十个位,是小数的 十分位 百分位 千分位 万分位。
;*************************************************************************************************************8
XIAO_SHU_8:
MOV 31H,#0
MOV 30H,#0 ; 清空(很重要哦) 把所有的小数位数往里加
MOV 20H , 29H ; 小数部分放入20H 20H 可以位寻址。
X_S_BIT2: JB 07H , XIAO_SHU_BIT1 ; 第1位是1 跳到 加5000
X_S_BIT2: JB 06H , XIAO_SHU_BIT2 ; 第2位是1 跳到 加2500
X_S_BIT3: JB 05H , XIAO_SHU_BIT3 ; 第3位是1 跳到 加1250
X_S_BIT4: JB 04H , XIAO_SHU_BIT4 ; 第4位是1 跳到 加625
X_S_BIT5: JB 03H , XIAO_SHU_BIT5 ; 第5位是1 跳到 加313
X_S_BIT6: JB 02H , XIAO_SHU_BIT6 ; 第6位是1 跳到 加156
X_S_BIT7: JB 01H , XIAO_SHU_BIT7 ; 第7位是1 跳到 加78
X_S_BIT8: JB 00H , XIAO_SHU_BIT8 ; 第8位是1 跳到 加39
X_S_over:
RET ;
;----------------------------------------------------------------------------------------------------------------------------------------
XIAO_SHU_BIT1: ; 第1位+5000 (0.5)
MOV 31H ,#13H
MOV 30H ,#88H ; 小数点后第一位为1 往盒子里放 5000 (就是0.5) 下面的都是这个意思
JMP X_S_BIT2 ; 加完第一位 跳到判断第二位
;----------------------------------------------------------------------------------------------------------------------------------------
XIAO_SHU_BIT2: ; 第2位+2500 (0.25)
MOV A , 30H ;
ADD A , #0C4H ;
MOV 30H, A ;
MOV A , 31H ;
ADDC A , #09H ;
MOV 31H ,A ;
JMP X_S_BIT3 ; 加完第2位 跳到判断第3位
;----------------------------------------------------------------------------------------------------------------------------------------
XIAO_SHU_BIT3: ; 第3位+1250 (0.125)
MOV A , 30H ;
ADD A , #0E2H ;
MOV 30H, A ;
MOV A , 31H ;
ADDC A , #04H ;
MOV 31H ,A ;
JMP X_S_BIT4 ; 加完第3位 跳到判断第4位
;----------------------------------------------------------------------------------------------------------------------------------------
XIAO_SHU_BIT4: ; 第4位+625 (0.0625)
MOV A , 30H ;
ADD A , #71H ;
MOV 30H, A ;
MOV A , 31H ;
ADDC A , #02H ;
MOV 31H ,A ;
JMP X_S_BIT5 ; 加完第4位 跳到判断第5位
;----------------------------------------------------------------------------------------------------------------------------------------
XIAO_SHU_BIT5: ; 第5位+313 (0.0313)
MOV A , 30H ;
ADD A , #39H ;
MOV 30H, A ;
MOV A , 31H ;
ADDC A , #01H ;
MOV 31H ,A ;
JMP X_S_BIT6 ; 加完第5位 跳到判断第6位
;----------------------------------------------------------------------------------------------------------------------------------------
XIAO_SHU_BIT6: ; 第6位+156 (0.0156)
MOV A , 30H ;
ADD A , #9CH ;
MOV 30H, A ;
MOV A , 31H ;
ADDC A , #00H ;
MOV 31H ,A ;
JMP X_S_BIT7 ; 加完第6位 跳到判断第7位
;----------------------------------------------------------------------------------------------------------------------------------------
XIAO_SHU_BIT7: ; 第7位+78 (0.0078)
MOV A , 30H ;
ADD A , #78 ;
MOV 30H, A ;
MOV A , 31H ;
ADDC A , #00H ;
MOV 31H ,A ;
JMP X_S_BIT8 ; 加完第7位 跳到判断第8位
;----------------------------------------------------------------------------------------------------------------------------------------
XIAO_SHU_BIT8: ; 第8位+39(0.0039)
MOV A , 30H ;
ADD A , #39 ;
MOV 30H, A ;
MOV A , 31H ;
ADDC A , #00H ;
MOV 31H ,A ;
JMP X_S_OVER ; 加完第8位
;----------------------------------------------------------------------------------------- |
|