?? 階符-階碼-尾數計算.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 + -