📄 ftolong.asm
字号:
;此程序是将青岛青智仪器有限公司仪表通讯回送的浮点数据(四字节)乘1000以后
;转换为长整形(四字节)的样例程序
;青岛青智仪器有限公司仪表的浮点数据与微型机单精度浮点格式(四字节)的一致
;此程序适合51系列单片机
ORG 0000H
LJMP L0237H ;跳转到主程入口
L0003H: ;四字节的浮点数据转化为乘了1000的四字节长整型数据
MOV 10H, 08H ;入口四字节浮点地址为08H,09H,0AH,0BH(由低到高)
MOV 11H, 09H ;出口数据(乘了1000后的长整型数据)存放在0CH,0DH,0EH,0FH中(由低到高)
MOV 12H, 0AH
MOV 13H, 0BH
MOV R7, #44H
MOV R6, #7AH
MOV R5, #00H
MOV R4, #00H
LCALL L01F8H
MOV R7, 13H
MOV R6, 12H
MOV R5, 11H
MOV R4, 10H
LCALL L005EH
LCALL L00BDH
MOV 0FH, R7
MOV 0EH, R6
MOV 0DH, R5
MOV 0CH, R4
RET
L0031H: ;从此处开始将从仪表接收到的四字节的浮点数
MOV 08H, #02H ;由低到高赋给08H,09H,0AH,0BH
MOV 09H, #01H ;其中数据02H,01H,34H,42H为浮点数45.000984的四个字节
MOV 0AH, #34H ;如果转换别的数据,可以在此处将四字节数值
MOV 0BH, #42H ;由低到高赋给08H,09H,0AH,0BH
LCALL L0003H ;调用浮点数据转换为长整形数据的子程,转换后的数据乘了1000
MOV 17H, 0FH ;转换后的乘了1000的长整型数据,存放在0CH,0CDH,0EH,0FH中
MOV 16H, 0EH ;如果转换前放的为正数,则转换后的实际数据为
MOV 15H, 0DH ;(0CH中的数+0DH中的数*256+0EH中的数*256*256+0FH中的数*256*256*256)/1000
MOV 14H, 0CH ;17H,16H,15H,14H为临时变量,表示可以在此处,提取
RET ;转换后的数据
L004DH:
DJNZ R2, L0052H
CJNE R0, #00H, L0055H
L0052H:
LJMP L0172H
L0055H:
DJNZ R1, L0059H
SJMP L005BH
L0059H:
DJNZ R1, L0052H
L005BH:
LJMP L015EH
L005EH:
LCALL L01A3H
JNB 07H, L0065H
CPL C
L0065H:
MOV 07H, C
JNZ L006DH
DJNZ R1, L0052H
SJMP L0072H
L006DH:
DJNZ R2, L004DH
CJNE R0, #00H, L0075H
L0072H:
LJMP L019EH
L0075H:
DJNZ R1, L0059H
CLR C
SUBB A, #7EH
JNC L007EH
DEC 28H
L007EH:
ADD A, 27H
MOV 27H, A
JNC L0086H
INC 28H
L0086H:
MOV R0, #29H
L0088H:
MOV @R0, #00H
INC R0
CJNE R0, #2FH, L0088H
MOV R0, #21H
MOV R1, #29H
L0092H:
MOV A, @R0
INC R0
MOV R2, A
MOV A, R0
MOV R4, A
MOV R0, #24H
L0099H:
MOV B, R2
MOV A, @R0
INC R0
MUL AB
ADD A, @R1
MOV @R1, A
INC R1
MOV A, B
ADDC A, @R1
MOV @R1, A
JNC L00B0H
MOV B, R1
L00A9H:
INC R1
INC @R1
MOV A, @R1
JZ L00A9H
MOV R1, B
L00B0H:
CJNE R0, #27H, L0099H
DEC R1
DEC R1
MOV A, R4
MOV R0, A
CJNE R0, #24H, L0092H
LJMP L00FDH
L00BDH:
MOV A, R7
MOV B, R6
MOV C, B.7
SETB B.7
RLC A
MOV F0, C
CLR C
SUBB A, #7FH
JNC L00D2H
CLR A
L00CDH:
MOV R7, A
MOV R6, A
MOV R5, A
MOV R4, A
L00D1H:
RET
L00D2H:
SUBB A, #20H
JC L00DAH
MOV A, #0FFH
SJMP L00CDH
L00DAH:
INC A
XCH A, R4
MOV R6, A
CLR A
MOV R7, A
MOV R2, A
MOV A, B
XCH A, R4
L00E3H:
JZ L00F7H
CLR C
XCH A, R4
RRC A
XCH A, R4
XCH A, R5
RRC A
XCH A, R5
XCH A, R6
RRC A
XCH A, R6
XCH A, R7
RRC A
XCH A, R7
INC A
JNC L00E3H
DJNZ R2, L00E3H
L00F7H:
JNB F0, L00D1H
LJMP L01EAH
L00FDH:
MOV A, 2EH
JB ACC.7, L0115H
MOV R0, #2BH
CLR C
MOV R7, #04H
L0107H:
MOV A, @R0
RLC A
MOV @R0, A
INC R0
DJNZ R7, L0107H
MOV A, 27H
JNZ L0113H
DEC 28H
L0113H:
DEC 27H
L0115H:
MOV A, 2BH
RLC A
MOV R0, #2CH
MOV R7, #03H
L011CH:
MOV A, @R0
ADDC A, #00H
MOV @R0, A
JNC L0130H
INC R0
DJNZ R7, L011CH
MOV 2EH, #80H
INC 27H
MOV A, 27H
JNZ L0130H
INC 28H
L0130H:
MOV A, 28H
JB ACC.7, L0189H
JNZ L015EH
MOV A, 27H
JZ L0189H
INC A
JZ L015EH
MOV 26H, 2EH
MOV 25H, 2DH
MOV 24H, 2CH
ANL 20H, #0F0H
L014AH:
MOV R4, 24H
MOV R5, 25H
MOV C, 07H
MOV A, 27H
RRC A
MOV R7, A
MOV A, 26H
MOV ACC.7, C
MOV R6, A
MOV R0, 27H
LJMP L021FH
L015EH:
CLR A
MOV 26H, A
MOV 25H, A
MOV 24H, A
MOV 28H, A
MOV 27H, #0FFH
ANL 20H, #0F0H
ORL 20H, #05H
SJMP L014AH
L0172H:
MOV A, #0FFH
MOV 26H, A
MOV 25H, A
MOV 24H, A
MOV 28H, #00H
MOV 27H, A
SETB 07H
ANL 20H, #0F0H
ORL 20H, #09H
SJMP L014AH
L0189H:
ANL 20H, #0F0H
ORL 20H, #03H
L018FH:
CLR A
MOV 26H, A
MOV 25H, A
MOV 24H, A
MOV 28H, A
MOV 27H, A
CLR 07H
SJMP L014AH
L019EH:
ANL 20H, #0F0H
SJMP L018FH
L01A3H:
MOV R1, #01H
MOV R2, #01H
MOV B, 26H
MOV A, 27H
MOV C, B.7
RLC A
MOV 07H, C
MOV 28H, #00H
MOV 27H, A
JZ L01BAH
SETB B.7
L01BAH:
MOV 26H, B
MOV R0, 27H
CJNE R0, #0FFH, L01CAH
INC R1
MOV A, 26H
CLR ACC.7
JZ L01CAH
INC R1
L01CAH:
MOV 21H, R4
MOV 22H, R5
MOV B, R6
MOV C, B.7
MOV A, R7
RLC A
INC A
JNZ L01E1H
INC R2
CLR B.7
INC B
INC R2
DJNZ B, L01E1H
DEC R2
L01E1H:
DEC A
JZ L01E6H
SETB B.7
L01E6H:
MOV 23H, B
RET
L01EAH:
CLR C
CLR A
SUBB A, R7
MOV R7, A
CLR A
SUBB A, R6
MOV R6, A
CLR A
SUBB A, R5
MOV R5, A
CLR A
SUBB A, R4
MOV R4, A
RET
L01F8H:
MOV A, 2FH
INC 2FH
JZ L020EH
POP B
POP ACC
PUSH 24H
PUSH 25H
PUSH 26H
PUSH 27H
PUSH ACC
PUSH B
L020EH:
MOV 27H, R7
MOV 26H, R6
MOV 25H, R5
MOV 24H, R4
RET
MOV R7, 27H
MOV R6, 26H
MOV R5, 25H
MOV R4, 24H
L021FH:
MOV A, 2FH
DEC A
JZ L0234H
POP B
POP ACC
POP 27H
POP 26H
POP 25H
POP 24H
PUSH ACC
PUSH B
L0234H:
DEC 2FH
RET
L0237H: ;主程入口
MOV R0, #7FH
CLR A
L023AH:
MOV @R0, A
DJNZ R0, L023AH
MOV SP, #2FH
LJMP L0031H
MOV R7, A
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -