; pentbug.asm ; ; tests for the existence of the well-documented Pentium NPU bug ; ; assemble and run this program using Borland's TASM and run under DOS: ; ; TASM pentbug ; one pass assemble ; TLINK /Tdc pentbug ; link as COM file ; PENTBUG ; run the program... ; .MODEL tiny .386 .387 .CODE ORG 100h Start: mov dx,OFFSET okmsg ; start out optimistically fild [first] ; load the first number (x) fild [second] ; and the second (y) fdiv st(1),st ; perform y/x fmulp st(1),st ; now st(0) = (y/x)*x fild [first] ; reload y fcompp ; compare the two fnstsw ax ; put status word into ax sahf ; load into CPU flags jz short @@NoBug ; if they're equal, no bug mov dx,OFFSET bugmsg ; load bad news message... @@NoBug: mov ah,9 ; print appropriate message int 21h ; mov ah,4ch ; and exit int 21h ; first DD 4195835 ; "magic numbers" culled from second DD 3145727 ; the net. There are others... okmsg DB "No " bugmsg DB "Pentium bug found.",13,10,'$' END Start