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

📄 fpsub4.asm

📁 MCS96常用子程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
FATN4:  CLRB   28H
        PUSH   1AH
        LD     22H,2[1AH]
        LD     20H,[1AH]
        JBC    23H,7,FAT14
        ORB    28H,#80H
FAT14:  SUB    SP,#4
        LD     1AH,SP
        ANDB   23H,#7FH
        ST     20H,[1AH]
        ST     22H,2[1AH]
        CMPB   20H,#80H
        JNC    FAT24
        INCB   28H
FAT24:  PUSH   28H
        JBC    28H,0,FAT34
        CLR    26H
        LD     24H,#80H
        ST     24H,[1EH]
        ST     26H,2[1EH]
        LD     1CH,1AH
        LD     1AH,1EH
        LCALL  FDIV4
FAT34:  LCALL  FPLN4
        DB     79H,51H,99H,0CBH
        DB     7CH,42H,9EH,50H
        DB     7EH,0A6H,0B4H,9AH
        DB     7EH,0E7H,41H,44H
        DB     7CH,0F7H,71H,80H
        DB     7EH,30H,8BH,0A4H
        DB     76H,0AEH,2EH,96H
        DB     80H,65H,1,0
        DB     69H,95H,0BFH,0D6H
        DB     0FFH
        POP    28H
        JBC    28H,0,FAT44
        LD     20H,#0DB80H
        LD     22H,#490FH
        LD     1AH,SP
        ST     20H,[1AH]
        ST     22H,2[1AH]
        LD     1CH,1EH
        LCALL  FSUB4
FAT44:  ADD    SP,#4
        POP    1AH
        JBC    28H,7,FAT54
        LD     22H,2[1EH]
        ORB    23H,#80H
        ST     22H,2[1EH]
FAT54:  RET
FADD4:  LD     20H,[1AH]
        LD     22H,2[1AH]
        LD     24H,[1CH]
        LD     26H,2[1CH]
        ANDB   2DH,23H,#80H     ;X sign
        ANDB   2FH,27H,#80H     ;Y sign
        LDB    2CH,20H
        LDB    2EH,24H
        ORB    23H,#80H	;X msb
        ORB    27H,#80H	;Y msb
        CLRB   20H
        CLRB   24H
        CMPB   2CH,0
        JE     FAD45
        SUBB   2CH,2EH
        JE     FAD41
        JC     FAD44
        NEGB   2CH
        CMPB   2CH,#24
        JC     FAD45
        SHRL   20H,2CH
FAD41:  XORB   2FH,2DH
        JBS    2FH,7,FAD46
        ADD    20H,24H
        ADDC   22H,26H
        JNC    FAD42
        SHRL   20H,#1	   ;Over flow
        INCB   2EH
        JBC    20H,7,FAD42
        INCB   21H	      ;4 / 5
        ADDC   22H,0
FAD42:  ANDB   23H,#7FH
        ORB    23H,2DH	  ;Sign
FAD43:  LDB    20H,2EH
        ST     20H,[1EH]
        ST     22H,2[1EH]
        RET
FAD49:  ADDB   2EH,2CH
        SJMP   FAD42
FAD44:  CMPB   2EH,0
        JE     FAD49
        CMPB   2CH,#24
        JC     FAD49
        ADDB   2EH,2CH
        SHRL   24H,2CH
        SJMP   FAD41
FAD45:  ANDB   27H,#7FH
        ORB    27H,2FH	  ;Sign
        LDB    24H,2EH
        ST     24H,[1EH]
        ST     26H,2[1EH]
        RET
FAD46:  SUB    20H,24H
        SUBC   22H,26H
        JNE    FAD47
        LDB    2EH,0
        SJMP   FAD43
FAD47:  JC     FAD48
        NOT    20H
        NOT    22H
        INC    20H
        ADDC   22H,0
        XORB   2DH,#80H	 ;Sign CMP
FAD48:  NORML  20H,2CH
        SUBB   2EH,2CH
        SJMP   FAD42
FSUB4:  LD     20H,[1AH]
        LD     22H,2[1AH]
        LD     24H,[1CH]
        LD     26H,2[1CH]
        ANDB   2DH,23H,#80H     ;X sign
        ANDB   2FH,27H,#80H     ;Y sign
        LDB    2CH,20H
        LDB    2EH,24H
        ORB    23H,#80H	;X msb
        ORB    27H,#80H	;Y msb
        CLRB   20H
        CLRB   24H
        CMPB   2CH,0
        JE     FSB4A
        SUBB   2CH,2EH
        JE     FSB41
        JC     FSB44
        NEGB   2CH
        CMPB   2CH,#24
        JC     FSB4A
        SHRL   20H,2CH
FSB41:  XORB   2FH,2DH
        JBC    2FH,7,FSB46
        ADD    20H,24H
        ADDC   22H,26H
        JNC    FSB42
        SHRL   20H,#1	   ;Over flow
        INCB   2EH
        JBC    20H,7,FSB42
        INCB   21H	      ;4 / 5
        ADDC   22H,0
FSB42:  ANDB   23H,#7FH
        ORB    23H,2DH	  ;Sign
FSB43:  LDB    20H,2EH
        ST     20H,[1EH]
        ST     22H,2[1EH]
        RET
FSB49:  ADDB   2EH,2CH
        SJMP   FSB42
FSB44:  CMPB   2EH,0
        JE     FSB49
        CMPB   2CH,#24
        JC     FSB49
        ADDB   2EH,2CH
        SHRL   24H,2CH
        SJMP   FSB41
FSB4A:  XORB   2FH,#80H
FSB45:  ANDB   27H,#7FH
        ORB    27H,2FH	  ;Sign
        LDB    24H,2EH
        ST     24H,[1EH]
        ST     26H,2[1EH]
        RET
FSB46:  SUB    20H,24H
        SUBC   22H,26H
        JNE    FSB47
        LDB    2EH,0
        SJMP   FSB43
FSB47:  JC     FSB48
        NOT    20H
        NOT    22H
        INC    20H
        ADDC   22H,0
        XORB   2DH,#80H	 ;Sign CMP
FSB48:  NORML  20H,2CH
        SUBB   2EH,2CH
        SJMP   FSB42
FMUL4:  LD     20H,[1AH]
        LD     22H,2[1AH]
        LD     24H,[1CH]
        LD     26H,2[1CH]
	CMP    20H,0
	JE     FML43
        ORB    23H,#80H
FML43:  CMP    24H,0
	JE     FML44
	ORB    27H,#80H
FML44:  CLRB   20H
        CLRB   24H
        MULU   2CH,22H,24H
        MULU   28H,20H,26H
        MULU   20H,22H,26H
        ADD    28H,2CH
        ADDC   2AH,2EH
        ADDC   22H,0
        ADD    20H,2AH
        ADDC   22H,0
        LDB    2DH,3[1AH]
        XORB   2DH,3[1CH]
        ANDB   2DH,#80H
        LDB    2CH,[1AH]
        ADDB   2CH,[1CH]
        SUBB   2CH,#7FH	;PRODUCT
        NORML  20H,2EH
        JE     FML42
        JBC    20H,7,FML41
        INCB   21H	     ;4 / 5
        ADDC   22H,0
FML41:  SUBB   20H,2CH,2EH
        ANDB   23H,#7FH
        ORB    23H,2DH
FML42:  ST     20H,[1EH]
        ST     22H,2[1EH]
        RET
FDIV4:  LD     20H,[1AH]
        LD     22H,2[1AH]
        LD     24H,[1CH]
        LD     26H,2[1CH]
        ORB    23H,#80H
        ORB    27H,#80H
        CMPB   24H,0
        JNE    FDV45
        CLRC
        RET
FDV45:  CMPB   20H,0
        JNE    FDV40
        SJMP   FDV44
FDV40:  LDB    2CH,20H
        CLRB   20H
        CLRB   24H
FDV41:  CMP    22H,26H
        JNC    FDV43
        JNE    FDV42
        CMP    20H,24H
        JNC    FDV43
FDV42:  SHRL   20H,#1
        INCB   2CH
        SJMP   FDV41
FDV43:  LD     2AH,#0FFFEH
        STB    2CH,1[1EH]
        CLR    28H
        SUB    2AH,26H
	JNC    FDV46
        DIVU   28H,26H	 ;x
        MULU   2CH,24H,28H
        LD     2AH,2EH
        MULU   2CH,26H,28H      ;D * x
        ADD    24H,2CH
        ADDC   26H,2EH
        ADD    24H,2AH
        ADDC   26H,0	   ;D0 = (24H)
        MULU   2CH,20H,28H
        MULU   28H,22H
        ADD    20H,28H
        ADDC   22H,2AH
        ADD    20H,2EH
        ADDC   22H,0	   ;N0 = (20H)
FDV46:  NOT    26H
        NEG    24H
        ADDC   26H,0
        LDB    27H,26H
        LDB    26H,25H
        MULU   28H,20H,26H
        MULU   2CH,22H,26H
        ADD    2CH,2AH
        ADDC   2EH,0
        SHRL   2CH,#8
        ADDC   20H,2CH
        ADDC   22H,2EH	 ;X / Y
        NORML  20H,2AH
        LDB    2CH,1[1EH]
        ADDB   20H,2CH,#7FH
        SUBB   20H,2AH
        SUBB   20H,[1CH]
        LDB    2CH,3[1CH]
        XORB   2CH,3[1AH]
        ANDB   2CH,#80H	;Sign
        ANDB   23H,#7FH
        ORB    23H,2CH
FDV44:  ST     20H,[1EH]
        ST     22H,2[1EH]
        SETC
        RET
FPLN4:  POP    1CH
        LDB    28H,[1CH]+
        LDB    21H,[1CH]+
        LDB    22H,[1CH]+
        LDB    23H,[1CH]+
        LD     24H,[1AH]
        LD     26H,2[1AH]
        CLRB   24H
        CLRB   20H
        ANDB   29H,23H,#80H       ;Sign
	CMPB   28H,0
	JE     FPL40
        ORB    23H,#80H
FPL40:  CMPB   0,[1AH]
	JE     FPL41
	ORB    27H,#80H
FPL41:  PUSH   28H
        MULU   2CH,22H,24H
        MULU   28H,20H,26H
        MULU   20H,26H,22H
        ADD    28H,2CH
        ADDC   2AH,2EH
        ADDC   22H,0
        ADD    20H,2AH
        ADDC   22H,0
        POP    28H
        XORB   29H,3[1AH]
        ANDB   29H,#80H		;Sign of PRODUCT
        NORML  20H,2AH
        JE     FPL43		 ;Yi * X -> Yi
        ADDB   28H,[1AH]
        SUBB   28H,#7FH
        SUBB   28H,2AH
FPL43:  LDB    2AH,[1CH]+
        LDB    2DH,[1CH]+
        LDB    2EH,[1CH]+
        LDB    2FH,[1CH]+
        CLRB   2CH
	ANDB   2BH,2FH,#80H      ;Sign of Ai
        ORB    2FH,#80H
	CMPB   28H,0
        JE     FPL47
        CMPB   2AH,0
        JE     FPL45
        SUBB   2AH,28H
        JE     FPL44
        JC     FPL48
        NEGB   2AH
        CMPB   2AH,#30
        JC     FPL47
        SHRL   2CH,2AH
FPL44:  XORB   2BH,29H
        JBS    2BH,7,FPL49
        ADD    20H,2CH
        ADDC   22H,2EH
        JNC    FPL45
        SHRL   20H,#1
        ORB    23H,#80H
        INCB   28H
FPL45:  LDB    2AH,[1CH]
        CMPB   2AH,#0FFH
        JE     FPL4E
        SJMP   FPL41
FPL4E:  INC    1CH
        JBC    20H,7,FPL46
        INCB   21H	     ;4 / 5
        ADDC   22H,0
FPL46:  ANDB   23H,#7FH
        ORB    23H,29H
        LDB    20H,28H
        ST     20H,[1EH]
        ST     22H,2[1EH]
        BR     [1CH]
FPL47:  ADDB   28H,2AH
        LD     20H,2CH
        LD     22H,2EH
        SJMP   FPL45
FPL42:  CLRB   28H
        SJMP   FPL43
FPL48:  CMPB   2AH,#24
        JC     FPL45
        ADDB   28H,2AH
        SHRL   20H,2AH
        SJMP   FPL44
FPL49:  SUB    20H,2CH
        SUBC   22H,2EH
        JNE    FPL4A
        CLRB   28H
        SJMP   FPL45
FPL4A:  JC     FPL4B
        NOT    22H
        NEG    20H
        ADDC   22H,0
        XORB   29H,#80H
FPL4B:  NORML  20H,2AH
        SUBB   28H,2AH
        SJMP   FPL45
INTF4:  ANDB   24H,23H,#80H
        JBC    23H,7,INT41
        NOT    22H
        NEG    20H
        ADDC   22H,0
INT41:  NORML  20H,25H
        JE     INT42
        SUBB   25H,#32
        NEGB   25H
        ADDB   20H,25H,#7FH
        ANDB   23H,#7FH
        ORB    23H,24H
INT42:  ST     20H,[1EH]
        ST     22H,2[1EH]
        RET
FRCF4:  ANDB   24H,23H,#80H
        JBC    23H,7,FRF41
        NOT    22H
        NEG    20H
        ADDC   22H,0
FRF41:  NORML  20H,25H
        JE     FRF42
        NEGB   25H
        ADDB   20H,25H,#7FH
        ANDB   23H,#7FH
        ORB    23H,24H
FRF42:  ST     20H,[1EH]
        ST     22H,2[1EH]
        RET
FINT4:	LD     20H,[1AH]
	LD     22H,2[1AH]
	CMPB   20H,0
	JE     FIT42
	LDB    26H,23H
	ORB    23H,#80H
	SUBB   25H,20H,#7FH
	JBS    25H,7,FIT42
	CLRB   20H
	SUBB   25H,#31
	JC     FIT43
	NEGB   25H
	SHRL   20H,25H
	ADDC   20H,0
	ADDC   22H,0
	JBC    26H,7,FIT41
	NOT    22H
	NEG    20H

⌨️ 快捷键说明

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