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

📄 ffix.asm

📁 一个大整数计算的小程序,可以进行大数的计算,可以对素数进行测试
💻 ASM
字号:
;;
;; ffix -- fix up the FWAIT bug in the Microsoft FPU emulation library used
;;         in QuickBASIC 4.x; PDS 6+ and VBDOS 1 interpreters and compilers.
;;
;; copyleft 1998 by v1ctor [av1ctor@yahoo.com.br]
;;
;; QB prototype: declare sub ffix ()
;;
;; to assemble: tasm ffix
;;          or: masm ffix _or_ ml /c ffix.asm
;;          or: a86 +so ffix.asm
;;
;; to add to a library: lib _libfilename_ +ffix;

                .model  medium, basic
                .186

.code
old_int3d       dd      ?
installed       db      0

;;::::::::::::::::::
int3d:          push    bp
                mov     bp, sp
                push    ds

                lds     bp, [bp + 2]            ;; ds:bp -> return address                
                mov     word ptr ds:[bp-2],909Bh;; fix up with: fwait; nop

                pop     ds
                pop     bp
                iret

;;::::::::::::::::::
done:           ;; restore old interrupt 3Dh vector
                push    ds
                lds     dx, cs:old_int3d
                mov     ax, 253Dh               ;; set int vector
                int     21h
                pop     ds

                mov     cs:installed, 0
                retf

;;::::::::::::::::::
                public  ffix
ffix            proc

                cmp     cs:installed, 0
                jne     exit                    ;; already installed?
                mov     cs:installed, 1

                ;; add done proc to QB exit queue
                push    cs
                push    offset done
                extrn   B_ONEXIT:far
                call    B_ONEXIT

                ;; save old interrupt 3Dh vector
                push    es
                mov     ax, 353Dh               ;; get int vector
                int     21h
                mov     word ptr old_int3d+0, bx
                mov     word ptr old_int3d+2, es
                pop     es

                ;; point the vector to int3d ISR
                push    ds
                mov     ax, cs
                mov     ds, ax
                mov     dx, offset int3d
                mov     ax, 253Dh               ;; set int vector
                int     21h
                pop     ds

exit:           retf
ffix            endp
                end

⌨️ 快捷键说明

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