📄 testfp.asm
字号:
puts
putcr
putcr
free
;
;
;-----
;
print
db "Testing LEFPOL:",cr,lf,0
;
lefpol
dt 1.0
XAccOp
print
db " 1.0 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt -10.25
XAccOp
print
db " -10.25 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt 100.50
XAccOp
print
db " 100.50 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt -1000.75
XAccOp
print
db " -1000.75 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt 10000.22
XAccOp
print
db " 10000.22 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt -100000.44
XAccOp
print
db " -100000.44 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt 123456789012345678901.66
XAccOp
print
db "123456789012345678901.66 =",0
mov ax, 219h
ftoam
puts
print
db " Note: only 17 sig. digits.",cr,lf,0
free
;
lefpol
dt -123456.88
XAccOp
print
db "-123456.88 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt 65432.11
XAccOp
print
db " 65432.11 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt -9876.33
XAccOp
print
db " -9876.33 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt 192.55
XAccOp
print
db " 192.55 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt -38.77
XAccOp
print
db " -38.77 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt 9.99
XAccOp
print
db " 9.99 =",0
mov ax, 20bh
ftoam
puts
putcr
putcr
free
;
;
;-----
;
;
;
;
;
; Test the arithmetic operations:
;
print
db "Testing addition",cr,lf,0
;
print
db "2.0 = ",0
lefpal
dt 1.9999999999999999999
lefpol
dt 0.0000000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.999999999999999999
lefpol
dt 0.000000000000000001
fpadd
mov ax, 1418h
ftoam
puts
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.99999999999999999
lefpol
dt 0.00000000000000001
fpadd
mov ax, 20bh
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.9999999999999999
lefpol
dt 0.0000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.999999999999999
lefpol
dt 0.000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.99999999999999
lefpol
dt 0.00000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.9999999999999
lefpol
dt 0.0000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.999999999999
lefpol
dt 0.000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.99999999999
lefpol
dt 0.00000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.9999999999
lefpol
dt 0.0000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.999999999
lefpol
dt 0.000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.99999999
lefpol
dt 0.00000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.9999999
lefpol
dt 0.0000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.999999
lefpol
dt 0.000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.99999
lefpol
dt 0.00001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.9999
lefpol
dt 0.0001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.999
lefpol
dt 0.001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.99
lefpol
dt 0.01
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.9
lefpol
dt 0.1
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
putcr
;
;---------
;
print
db "More addition:",cr,lf,lf,0
print
db "-2.0 = ",0
lefpal
dt -1.9999999999999999999
lefpol
dt -0.0000000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.999999999999999999
lefpol
dt -0.000000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.99999999999999999
lefpol
dt -0.00000000000000001
fpadd
mov ax, 20bh
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.9999999999999999
lefpol
dt -0.0000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.999999999999999
lefpol
dt -0.000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.99999999999999
lefpol
dt -0.00000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.9999999999999
lefpol
dt -0.0000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.999999999999
lefpol
dt -0.000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.99999999999
lefpol
dt -0.00000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.9999999999
lefpol
dt -0.0000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.999999999
lefpol
dt -0.000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.99999999
lefpol
dt -0.00000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.9999999
lefpol
dt -0.0000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.999999
lefpol
dt -0.000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.99999
lefpol
dt -0.00001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.9999
lefpol
dt -0.0001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.999
lefpol
dt -0.001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.99
lefpol
dt -0.01
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.9
lefpol
dt -0.1
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
putcr
;
;----
;
print
db "Yet more addition:",cr,lf,lf,0
print
db "2.0 = ",0
lefpal
dt 2.0000000000000000001
lefpol
dt -0.0000000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.000000000000000001
lefpol
dt -0.000000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.00000000000000001
lefpol
dt -0.00000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.0000000000000001
lefpol
dt -0.0000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.000000000000001
lefpol
dt -0.000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.00000000000001
lefpol
dt -0.00000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.0000000000001
lefpol
dt -0.0000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.000000000001
lefpol
dt -0.000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.00000000001
lefpol
dt -0.00000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.0000000001
lefpol
dt -0.0000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.000000001
lefpol
dt -0.000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.00000001
lefpol
dt -0.00000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.0000001
lefpol
dt -0.0000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.000001
lefpol
dt -0.000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.00001
lefpol
dt -0.00001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.0001
lefpol
dt -0.0001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.001
lefpol
dt -0.001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.01
lefpol
dt -0.01
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.1
lefpol
dt -0.1
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
putcr
;
;-----
;
print
db "Simple subtraction test (sub is same as add)"
db cr,lf,lf,0
;
print
db "2.9.. - 1.9.. = ",0
lefpal
dt 2.99999999999999999
lefpol
dt 1.99999999999999999
fpsub
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
print
db "1.9.. - 2.9.. = ",0
lefpal
dt 1.99999999999999999
lefpol
dt 2.99999999999999999
fpsub
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
putcr
;
;----
;
print
db "Testing Multiply...",cr,lf,lf,0
;
mov cx, 20
lefpal
dt 1.0
MultLoop: lefpol
dt -10.0
fpmul
mov ax, 24h
etoam
puts
free
call PutFPAcc
putcr
loop MultLoop
putcr
;
;---
;
print
db "More multiply tests...",cr,lf,lf,0
;
lefpal
dt 0.0000000000000000001
mov cx, 20
MultLoop2: lefpol
dt -10.0
fpmul
mov ax, 24h
etoam
puts
free
call PutFPAcc
putcr
loop MultLoop2
putcr
;
;
;-----
;
print
db "Some Division Tests:",cr,lf,lf,0
;
mov cx, 20
lefpal
dt 1.0e+15
DivLoop: lefpol
dt -10.0
fpdiv
mov ax, 24
etoam
puts
free
call PutFPAcc
putcr
loop DivLoop
putcr
;
;
;---
;
print
db "More Division Tests...",cr,lf,lf,0
;
lefpal
dt 1.0e-15
mov cx, 20
DivLoop2: lefpol
dt -1.0e-1
fpdiv
mov ax, 24
etoam
puts
free
call PutFPAcc
putcr
loop DivLoop2
putcr
;
;
;------
;
print
db "Testing FPCMP...",cr,lf,0
;
lefpal
dt 0.0
lefpol
dt 0.0
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEql0
print
db " 0.0 <> 0.0",cr,lf,0
jmp EndTest0
;
TheyreEql0: print
db " 0.0 = 0.0",cr,lf,0
EndTest0:
;
lefpal
dt 1.0
lefpol
dt 0.0
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEql1
print
db " 1.0 <> 0.0",cr,lf,0
jmp EndTest1
;
TheyreEql1: print
db " 1.0 = 0.0",cr,lf,0
EndTest1:
;
lefpal
dt 0.0
lefpol
dt 1.0
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEql2
print
db " 0.0 <> 1.0",cr,lf,0
jmp EndTest2
;
TheyreEql2: print
db " 0.0 = 1.0",cr,lf,0
EndTest2:
;
lefpal
dt -1.0
lefpol
dt 0.0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -