nolist ; ***************************** ; * Codemacros for 8087 * ; * numeric data processor: * ; *************************** ; ; stack references: st equ 0 ; stack top (= register 0) st0 equ 0 ; register 0 st1 equ 1 ; register 1 st2 equ 2 ; register 2 st3 equ 3 ; register 3 st4 equ 4 ; register 4 st5 equ 5 ; register 5 st6 equ 6 ; register 6 st7 equ 7 ; register 7 ; ; codemacro FLD src:Mb segfix src db 0d9h modrm 0,src endm codemacro FLD src:Mw segfix src db 0ddh modrm 0,src endm codemacro FLD src:Db(0,7) db 0d9h dbit 5(18h),3(src(0)) endm codemacro FLDTR src:M segfix src db 0dbh modrm 5,src endm codemacro FST dst:Mb segfix dst db 0d9h modrm 2,dst endm codemacro FST dst:Mw segfix dst db 0ddh modrm 2,dst endm codemacro FST dst:Db(0,7) db 0ddh dbit 5(1ah),3(dst(0)) endm codemacro FSTP dst:Mb segfix dst db 0d9h modrm 3,dst endm codemacro FSTP dst:Mw segfix dst db 0ddh modrm 3,dst endm codemacro FSTP dst:Db(0,7) db 0ddh dbit 5(1bh),3(dst(0)) endm codemacro FSTPTR dst:M segfix dst db 0dbh modrm 7,dst endm codemacro FXCH dw 0c9d9h endm codemacro FXCH dst:Db(0,7) db 0d9h dbit 5(19h),3(dst(0)) endm codemacro FILD src:Mb segfix src db 0dbh modrm 0,src endm codemacro FILDLI src:Mw segfix src db 0dfh modrm 5,src endm codemacro FILD src:Mw segfix src db 0dfh modrm 0,src endm codemacro FIST dst:Mb segfix dst db 0dbh modrm 2,dst endm codemacro FIST dst:Mw segfix dst db 0dfh modrm 2,dst endm codemacro FISTP dst:Mb segfix dst db 0dbh modrm 3,dst endm codemacro FISTPLI dst:Mw segfix dst db 0dfh modrm 7,dst endm codemacro FISTP dst:Mw segfix dst db 0dfh modrm 3,dst endm codemacro FBLD src:Mb segfix src db 0dfh modrm 4,src endm codemacro FBSTP dst:Mb segfix dst db 0dfh modrm 6,dst endm codemacro FADD dw 0c1d8h endm codemacro FADD dst:Db(0),src:Db(0,7) db 0d8h dbit 5(18h),3(src(0)) endm codemacro FADD src:Mb segfix src db 0d8h modrm 0,src endm codemacro FADD src:Mw segfix src db 0dch modrm 0,src endm codemacro FADD dst:Db(0,7),src:Db(0) db 0dch dbit 5(18h),3(dst(0)) endm codemacro FADDP dst:Db(0,7),src:Db(0) db 0deh dbit 5(18h),3(dst(0)) endm codemacro FIADD src:Mb segfix src db 0dah modrm 0,src endm codemacro FIADD src:Mw segfix src db 0deh modrm 0,src endm codemacro FSUB dw 0e1d8h endm codemacro FSUB dst:Db(0),src:Db(0,7) db 0d8h dbit 5(1ch),3(src(0)) endm codemacro FSUB src:Mb segfix src db 0d8h modrm 4,src endm codemacro FSUB src:Mw segfix src db 0dch modrm 4,src endm codemacro FSUB dst:Db(0,7),src:Db(0) db 0dch dbit 5(1ch),3(dst(0)) endm codemacro FSUBP dst:Db(0,7),src:Db(0) db 0deh dbit 5(1ch),3(dst(0)) endm codemacro FISUB src:Mb segfix src db 0dah modrm 4,src endm codemacro FISUB src:Mw segfix src db 0deh modrm 4,src endm codemacro FSUBR dw 0e9d8h endm codemacro FSUBR dst:Db(0),src:Db(0,7) db 0d8h dbit 5(1dh),3(src(0)) endm codemacro FSUBR src:Mb segfix src db 0d8h modrm 5,src endm codemacro FSUBR src:Mw segfix src db 0dch modrm 5,src endm codemacro FSUBR dst:Db(0,7),src:Db(0) db 0dch dbit 5(1dh),3(dst(0)) endm codemacro FSUBRP dst:Db(0,7),src:Db(0) db 0deh dbit 5(1dh),3(dst(0)) endm codemacro FISUBR src:Mb segfix src db 0dah modrm 5,src endm codemacro FISUBR src:Mw segfix src db 0deh modrm 5,src endm codemacro FMUL dw 0c9d8h endm codemacro FMUL dst:Db(0),src:Db(0,7) db 0d8h dbit 5(19h),3(src(0)) endm codemacro FMUL src:Mb segfix src db 0d8h modrm 1,src endm codemacro FMUL src:Mw segfix src db 0dch modrm 1,src endm codemacro FMUL dst:Db(0,7),src:Db(0) db 0dch dbit 5(19h),3(dst(0)) endm codemacro FMULP dst:Db(0,7),src:Db(0) db 0deh dbit 5(19h),3(dst(0)) endm codemacro FIMUL src:Mb segfix src db 0dah modrm 1,src endm codemacro FIMUL src:Mw segfix src db 0deh modrm 1,src endm codemacro FDIV dw 0f1d8h endm codemacro FDIV dst:Db(0),src:Db(0,7) db 0d8h dbit 5(1eh),3(src(0)) endm codemacro FDIV src:Mb segfix src db 0d8h modrm 6,src endm codemacro FDIV src:Mw segfix src db 0dch modrm 6,src endm codemacro FDIV dst:Db(0,7),src:Db(0) db 0dch dbit 5(1eh),3(dst(0)) endm codemacro FDIVP dst:Db(0,7),src:Db(0) db 0deh dbit 5(1eh),3(dst(0)) endm codemacro FIDIV src:Mb segfix src db 0dah modrm 6,src endm codemacro FIDIV src:Mw segfix src db 0deh modrm 6,src endm codemacro FDIVR dw 0f9d8h endm codemacro FDIVR dst:Db(0),src:Db(0,7) db 0d8h dbit 5(1fh),3(src(0)) endm codemacro FDIVR src:Mb segfix src db 0d8h modrm 7,src endm codemacro FDIVR src:Mw segfix src db 0dch modrm 7,src endm codemacro FDIVR dst:Db(0,7),src:Db(0) db 0dch dbit 5(1fh),3(dst(0)) endm codemacro FDIVRP dst:Db(0,7),src:Db(0) db 0deh dbit 5(1fh),3(dst(0)) endm codemacro FIDIVR src:Mb segfix src db 0dah modrm 7,src endm codemacro FIDIVR src:Mw segfix src db 0deh modrm 7,src endm codemacro FSQRT dw 0fad9h endm codemacro FSCALE dw 0fdd9h endm codemacro FPREM dw 0f8d9h endm codemacro FRNDINT dw 0fcd9h endm codemacro FXTRACT dw 0f4d9h endm codemacro FABS dw 0e1d9h endm codemacro FCHS dw 0e0d9h endm codemacro FCOM dw 0d1d8h endm codemacro FCOM src:Db(0,7) db 0d8h dbit 5(1ah),3(src(0)) endm codemacro FCOM src:Mb segfix src db 0d8h modrm 2,src endm codemacro FCOM src:Mw segfix src db 0dch modrm 2,src endm codemacro FCOMP dw 0d9d8h endm codemacro FCOMP src:Db(0,7) db 0d8h dbit 5(1bh),3(src(0)) endm codemacro FCOMP src:Mb segfix src db 0d8h modrm 3,src endm codemacro FCOMP src:Mw segfix src db 0dch modrm 3,src endm codemacro FCOMPP dw 0c9deh endm codemacro FICOM src:Mb segfix src db 0dah modrm 2,src endm codemacro FICOM src:Mw segfix src db 0deh modrm 2,src endm codemacro FICOMP src:Mb segfix src db 0dah modrm 3,src endm codemacro FICOMP src:Mw segfix src db 0deh modrm 3,src endm codemacro FTST dw 0e4d9h endm codemacro FXAM dw 0e5d9h endm codemacro FPTAN dw 0f2d9h endm codemacro FPATAN dw 0f3d9h endm codemacro F2XM1 dw 0f0d9h endm codemacro FYL2X dw 0f1d9h endm codemacro FYL2XP1 dw 0f9d9h endm codemacro FLDZ dw 0eed9h endm codemacro FLD1 dw 0e8d9h endm codemacro FLDPI dw 0ebd9h endm codemacro FLDL2T dw 0e9d9h endm codemacro FLDL2E dw 0ead9h endm codemacro FLDLG2 dw 0ecd9h endm codemacro FLDLN2 dw 0edd9h endm codemacro FINIT dw 0e3dbh endm FNINIT equ FINIT codemacro FDISI dw 0e1dbh endm FNDISI equ FDISI codemacro FENI dw 0e0dbh endm FNENI equ FENI codemacro FLDCW src:Mw segfix src db 0d9h modrm 5,src endm codemacro FSTCW dst:Mw segfix dst db 0d9h modrm 7,dst endm FNSTCW equ FSTCW codemacro FSTSW dst:Mw segfix dst db 0ddh modrm 7,dst endm FNSTSW equ FSTSW codemacro FCLEX dw 0e2dbh endm FNCLEX equ FCLEX codemacro FSAVE dst:M segfix dst db 0ddh modrm 6,dst endm FNSAVE equ FSAVE codemacro FRSTOR src:M segfix src db 0ddh modrm 4,src endm codemacro FSTENV dst:M segfix dst db 0d9h modrm 6,dst endm FNSTENV equ FSTENV codemacro FLDENV src:M segfix src db 0d9h modrm 4,src endm codemacro FINCSTP dw 0f7d9h endm codemacro FDECSTP dw 0f6d9h endm codemacro FFREE dst:Db(0,7) db 0ddh dbit 5(18h),3(dst(0)) endm codemacro FNOP dw 0d0ddh endm FWAIT equ WAIT list