📄 pagsub.asm
字号:
; FILE NAME PAGSUB.ASM
; SUBROUTE: FLD_INCH - THE DATA IN CURRENT FIELD INC TEN
; CALL FUNCTION: DELAY
; USING PARMENTERS: NONE
;
; COMMON DATA USED:
; CHANGE REGISTER:
; RETURN: NONE
;------------------------------------------------------------
FLD_INCH: CALL GETRCDPNT
CALL GET_RECORD
DEC dPAG_RCD_PNT
MOV A, dFLD_R7
RLC A
JC IncErrH
RLC A
ORL C, bFLD_ACTIVE
JNC IncErrH
MOV A, dFLD_R6
RLC A
RLC A
JC IntegerI10
RLC A
JC FloatI_1
RLC A
JC IncErrH ; ASCII IN RAM
RLC A
IncErrH: RET
FloatI_1: MOV A, dFLD_R2
MOV dEXTPART, A
MOV pPORT2, A
MOV A, dFLD_R1 ; R0 - THE POINTER TO THE 3BYTE FLOAT
MOV DPTR, #uF3SETUP
CALL FLD_F3LMT
JNC EndNo_IH
MOV R0, dFLD_R1 ; R0 - THE POINTER TO THE 3BYTE FLOAT
MOV R7, #1H ; + (1.0)
MOV R4, #80H
MOV R5, #0H
LCALL F3_ADD
LCALL MOVRS_PR0
JMP EndI_H
EndNo_IH:RET
IntegerI10:RLC A
RLC A
MOV bUSE1, C
RLC A
MOV bUSE2, C
MOV R1, dFLD_R1
MOV A, dFLD_R2
INC A
JNZ ExtRAMI10
MOV A, #10
ADD A, @R1
MOV @R1, A
JNB bUSE1, IsDbI10
ADD A, #06 ; BCD CODE
MOV @R1, A
AJMP EndI_H
IsDbI10: JNB bUSE2, EndI_H
JNC EndI_H ; FOR DOUBLE BYTE
INC R1
INC @R1
JNC EndI_H
ExtRAMI10: DEC A
MOV dEXTPART, A
MOV pPORT2, A ; INIT. EXT. RAM SEGMENT ADDR THAT DATA IN
MOV A, R1 ; R0 - THE POINTER TO THE INTEGER
MOV DPTR, #uINTSETUP
CALL FLD_INTLMT
JNC EndNo_IH
MOVX A, @R1 ; PARMETER R0 - THE INTEGER WILL BE CONVERTED
ADD A, #10
MOVX @R1, A
JNB bUSE1, IsDbI10E
ADD A, #6 ; BCD CODE
MOVX @R1, A
AJMP EndI_H
IsDbI10E:JNB bUSE2, EndI_H
JNC EndI_H
INC R1
MOVX A, @R1
INC A
MOVX @R1, A
EndI_H: MOV A, dFLD_R5
CLR BA_REVERSE
MOV dFLD_R5, A
CALL DIS_FIELD
CLR C
RET
END
;#############################################################
; FILE NAME PAGSUB.ASM
; SUBROUTE: FLD_DEC - THE DATA IN CURRENT FIELD DEC ONE
; CALL FUNCTION:
; USING PARMENTERS: NONE
;
; COMMON DATA USED:
; CHANGE REGISTER:
; RETURN: NONE
;------------------------------------------------------------
PROC FLD_DEC, FLD_DECH
FLD_DEC: CALL GETRCDPNT
CALL GET_RECORD
DEC dPAG_RCD_PNT
MOV A, dFLD_R7
RLC A
JC IncErrT
RLC A
ORL C, bFLD_ACTIVE
JNC IncErrT
MOV A, dFLD_R6
RLC A
RLC A
JC IntegerDec
RLC A
JC FloatD01
RLC A
JC IncErrT ; ASCII IN RAM
RLC A
IncErrT: RET
FloatD01: MOV A, dFLD_R2
MOV dEXTPART, A
MOV pPORT2, A ; INIT. EXT. RAM SEGMENT ADDR THAT DATA IN
MOV A, dFLD_R1 ; R0 - THE POINTER TO THE 3BYTE FLOAT
MOV DPTR, #uF3SETDN
CALL FLD_F3LMT
JC EndNo_D
MOV A, R4
ORL A, R5
JZ EndNO_D
MOV R0, dFLD_R1 ; R0 - THE POINTER TO THE 3BYTE FLOAT
MOV R7, #0FDH ; + (-0.1)
MOV R4, #0CCH
MOV R5, #0CCH
CALL F3_ADD
CALL MOVRS_PR0
JMP DecEnd
EndNo_D: RET
IntegerDec:RLC A
RLC A
MOV bUSE1, C
RLC A
MOV bUSE2, C
MOV R1, dFLD_R1
MOV A, dFLD_R2
INC A
JNZ ExtRAMDec
DEC @R1
JNB bUSE1, IsDbDec
MOV A, @R1
ANL A, #0FH
CJNE A, #0FH, DecEnd
MOV A, @R1
SUBB A, #06H
CJNE A, #0FAH, SaveRst
SUBB A, #60H
SaveRst: MOV @R1, A
JMP DecEnd
IsDbDec: JNB bUSE2, DecEnd
MOV A, @R1
INC A
JNZ DecEnd
INC R1
DEC @R1
JMP DecEnd
ExtRAMDec: DEC A
MOV dEXTPART, A
MOV pPORT2, A ; INIT. EXT. RAM SEGMENT ADDR THAT DATA IN
MOV A, R1 ; R0 - THE POINTER TO THE INTEGER
MOV DPTR, #uINTSETDN
CALL FLD_INTLMT
JC EndNo_D
ORL A, R7
JZ EndNo_D
MOVX A, @R1 ; PARMETER R0 - THE INTEGER WILL BE CONVERTED
DEC A
MOVX @R1, A
JNB bUSE1, IsDbDecE
ANL A, #0FH
CJNE A, #0FH, DecEnd
MOVX A, @R1
SUBB A, #06H
CJNE A, #0FAH, SaveRstE
SUBB A, #60H
SaveRstE:MOVX @R1, A
JMP DecEnd
IsDbDecE:JNB bUSE2, DecEnd
MOVX A, @R1
INC A
JNZ DecEnd
INC R1
MOVX A, @R1
DEC A
MOVX @R1, A
DecEnd: MOV A, dFLD_R5
CLR BA_REVERSE
MOV dFLD_R5, A
CALL DIS_FIELD
CLR C
RET
;#############################################################
; FILE NAME PAGSUB.ASM
; SUBROUTE: FLD_DECH - THE DATA IN CURRENT FIELD DEC TEN
; CALL FUNCTION:
; USING PARMENTERS: NONE
;
; COMMON DATA USED:
; CHANGE REGISTER:
; RETURN: NONE
;------------------------------------------------------------
FLD_DECH: CALL GETRCDPNT
CALL GET_RECORD
DEC dPAG_RCD_PNT
MOV A, dFLD_R7
RLC A
JC IncErrH
RLC A
ORL C, bFLD_ACTIVE ; IS PRESSWORD ON?
JNC IncErrH
MOV A, dFLD_R6
RLC A
RLC A
JC IntegerD10
RLC A
JC FloatD_1
RLC A
JC IncErrH ; ASCII IN RAM
RLC A
IncErrH: RET
FloatD_1: MOV A, dFLD_R2
MOV dEXTPART, A
MOV pPORT2, A ; INIT EXT. RAM SEGMANT ADDR THAT DATA IN
MOV A, dFLD_R1 ; R0 - THE POINTER TO THE 3BYTE FLOAT
MOV DPTR, #uF3SETDN
CALL FLD_F3LMT
JC EndNo_DH
MOV A, R4
ORL A, R5
JZ EndNO_DH
MOV R0, dFLD_R1 ; R0 - THE POINTER TO THE 3BYTE FLOAT
MOV R7, #081H ; + (-1.0)
MOV R4, #080H
MOV R5, #0H
LCALL F3_ADD
LCALL MOVRS_PR0
JMP EndD_H
EndNo_DH:RET
IntegerD10:RLC A
RLC A
MOV bUSE1, C
RLC A
MOV bUSE2, C
MOV R1, dFLD_R1
MOV A, dFLD_R2
INC A
JNZ ExtRAMD10
MOV A, @R1
CLR C
SUBB A, #10
MOV @R1, A
JNB bUSE1, IsDbD10
SUBB A, #6
MOV @R1, A
JMP EndD_H
IsDbD10: JNB bUSE2, EndD_H
JNC EndD_H
INC R1
DEC @R1
JNC EndD_H
ExtRAMD10: DEC A
MOV dEXTPART, A
MOV pPORT2, A ; INIT EXT. RAM SEGMANT ADDR THAT DATA IN
MOV A, R1 ; R0 - THE POINTER TO THE INTEGER
MOV DPTR, #uINTSETDN
CALL FLD_INTLMT
JC EndNo_DH
ORL A, R7
JZ EndNo_DH
MOVX A, @R1 ;PARMETER R0 - THE INTEGER WILL BE CONVERTED
CLR C
SUBB A, #10
MOVX @R1, A
JNB bUSE1, IsDbD10E
SUBB A, #06H
MOVX @R1, A
JMP EndD_H
IsDbD10E:JNB bUSE2, EndD_H
JNC EndD_H
INC R1
MOVX A, @R1
DEC A
MOVX @R1, A
EndD_H: MOV A, dFLD_R5
CLR BA_REVERSE
MOV dFLD_R5, A
CALL DIS_FIELD
CLR C
RET
END
;#############################################################
; FILE NAME PAGSUB.ASM
; SUBROUTE: GET_FIELDL - GET THE LONGTH OF CURRENT FIELD TO R3
; CALL FUNCTION: GET_FIELDL
; USING PARMENTERS: NONE
; COMMON DATA USED: GROUP 3 REGISTERS
; CHANGE REGISTER: A
; RETURN: R2
;------------------------------------------------------------
FLD_GETLNG:CALL GETRCDPNT
MOVC A, @A+DPTR
ANL A, #3FH
RET
;#############################################################
; FILE NAME PAGSUB.ASM
; SUBROUTE: FLD_F3LMT - CHECK THE FLOAT DATA IS OUT RAINGE.
; CALL FUNCTION: FLD_F3LMT
; USING PARMENTERS: NONE
; COMMON DATA USED: GROUP 3 REGISTERS
; CHANGE REGISTER: A, ALL REGISTERS
; RETURN: C R7, R4, R5
;------------------------------------------------------------
FLD_F3LMT: MOV R0, A ; SAVE THE POINTER
CLR C
SUBB A, #xAD_SET
MOV DPL, A
CLR A
MOVC A, @A+DPTR
MOV R7, A
MOV A, #1
MOVC A, @A+DPTR
MOV R4, A
MOV A, #2
MOVC A, @A+DPTR
MOV R5, A
CALL F3_SUB
RET
;#############################################################
; FILE NAME PAGSUB.ASM
; SUBROUTE: FLD_INTLMT - CHECK THE ONE & TWO BYTES INTEGER DATA IS OUT RAINGE.
; CALL FUNCTION: FLD_INTLMT
; USING PARMENTERS: NONE
; COMMON DATA USED: B_USE2, GROUP 3 REGISTERS
; CHANGE REGISTER: A, ALL REGISTERS
; RETURN: C , R7, A
;------------------------------------------------------------
FLD_INTLMT: MOV R0, A ; SAVE THE POINTER
CLR C
SUBB A, #xINT_SET
ADD A, DPL
MOV DPL, A
CLR A
MOVC A, @A+DPTR
MOV R7, A
MOV A, #1
MOVC A, @A+DPTR
MOV R4, A
MOVX A, @R0
CLR C
SUBB A, R7
MOV R7, A
JNB bUSE2, LmtChkE
INC R0
MOVX A, @R0
SUBB A, R4
LmtChkE: RET
;#############################################################
; FILE NAME PAGSUB.ASM
; SUBROUTE: CLR_PWD - CLEAN PASSWORD OLD DATA
; FUNCTION:
; PARMENTERS: NONE
; CHANGE REGISTERS: DPTR, R5, A
; RETURN: None
;------------------------------------------------------------
CLR_PWD: MOV DPTR, #xPASSWORD
MOV R5,#8
CLR A
NextPwdB: MOVX @DPTR, A
INC DPTR
DJNZ R5, NextpwdB
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -