⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 阶符-阶码-尾数计算.txt

📁 处理健输入区bcd码转bcd浮点数格式及尾数处理
💻 TXT
字号:
;---------阶符-阶码--尾数-------OK-------
CCSA:	JB  QB, SDA	;小数点
	JB  QC, KKD	;"-"
	MOV A, QDE	;整数长
	CLR ACC.7	;阶符=0
	MOV  3AH, A	;存阶码
	SJMP  EEEE

KKD:	MOV A, QDE	;整数长
	SETB ACC.7	;阶符=1
	MOV 3AH, A	;存阶码
	SJMP  EEEE

SDA:	MOV A, QDE
	JZ	GDK	;整数长=0
	JB  QC, PSA	;有"-"
	MOV A, QDE
	CLR  ACC.7	;阶符=0
	MOV 3AH, A	;存阶码
	SJMP  EEEE

PSA:	MOV A, QDE
	SETB ACC.7	;阶符=1
	MOV 3AH, A	;存阶码
	SJMP  EEEE

GDK:	ACALL  DDAK	;计算小数点后面0个数
	JB  QC, JDS	;有"-"
	MOV A, #80H
	SUBB A, B	;80H-点后面0个数
	CLR ACC.7	;阶符=0
	MOV  3AH, A	;存阶码
	SJMP  EEEE

JDS:	MOV A, #80H
	SUBB A, B	;80H-点后面0个数
	SETB ACC.7	;阶符=1
	MOV 3AH, A	;存阶码
	SJMP  EEEE
;*******************************************
;--------压宿3字节尾数----------------------
EEEE:	MOV  R1, #40H	;记录区指针
	MOV  R4, #0
	MOV  R0, #39H	;尾数指针
SADE:	MOV  A, @R1	;取记录区数
	JNZ  PBA 	;数不为0开始记录
	DEC  R1	 	;再查下个
	INC  R4		;0个数
	MOV  A, R1
	CJNE A,#3AH,SADE;直致不为0为止
	RET	 	;尾数全为0
;---------------------------------------
PBA:	CJNE R4,#6,VKF	;有1~5个数
	RET		;尾数全为0
VKF:	MOV A, R4	;0个数
	JZ   BNS	;有6个字节数
;用地址比较法找到可以合并字节数--有奇字节
SSS:	MOV A, R1	;乘下有1或5字节数
	CJNE A,#3FH,HHD
	MOV R2, #2	;合并2字节
	ACALL NNN	
	ACALL AAA	;合并半字节
	RET

HHD:	MOV A, R1
	CJNE A,#3DH,YYT
	MOV R2, #1	;合并1字节
	ACALL  NNN
	ACALL  AAA	;合并半字节
	RET
;-------有偶个字节-----------------
YYT:	MOV A, R1
	CJNE A,#3EH,RRE
	MOV R2, #2	;合并2字节
	ACALL  NNN
	RET

RRE:	MOV A, R1
	CJNE A,#3CH,BBM
	MOV  R2, #1	;合并1字节
	ACALL  NNN
	RET
;-------只有半字节--------
BBM:	ACALL AAA
	RET
;-------全部为有效数-------------------					
BNS:	MOV R2, #3	;6字节
	ACALL NNN	
BOUT:	RET
;--------------------------
NNN:	MOV A, @R1	;合并成1字节
	SWAP  A
	MOV B, A	;放高位哲存
	DEC  R1
	MOV A, @R1
	ORL A, B	;合并
	MOV @R0, A
	DEC  R0
	DEC  R1
	DJNZ R2,NNN
	RET
;------------------------------------
AAA:	MOV A, @R1	;处理半字节
	SWAP  A
	MOV @R0, A
	RET	
;****************************************		
;------计算小数点后面0个数----OK-----------
DDAK:	MOV DPTR, #TAB0
	MOV  R6, #00
	MOV A, QDB	;小数长度
	ADD A, #2FH	;指向小数最高位
	MOV R0, A
	MOV B, A	;最高位址
OPE:	MOV A, @R0	;取小数区段码
	MOV OBB, A 	;哲存
JKB:	MOV A, #0	;由段码译数字
    	MOVC A,@A+DPTR	;固定查表法
	CJNE A,OBB,BBMC ;与段码较
	MOV  A, R6
	SJMP LDX	;找到
BBMC:	INC  DPTR	;查下1个
	INC  R6	  ;记下的位置孰是这段码BCD数
	SJMP JKB	
LDX:	JZ  VCX		;是0
	MOV A, B	;遇到不是0为止
	SUBB A, R0	;最高位址-现址=0个数
	SJMP OUT
VCX:	DEC  R0
	CJNE R0,#2FH,OPE	
OUT:	MOV B, A
	RET
	
TAB0:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -