The EMBED tag has a long and troubled history, being first introduced by Netscape, therefore being shunned by Microsoft up until IE3, then declared as deprecated in HTML 4 in favor of the OBJECT tag, then making a comeback in HTML 5.
The difference between the embed and object tags is that the embed tag infers the processing application based upon the data type, while the object tag expects you to explicitly specify the application by the classid and codebase attributes.
You should also be aware of the fact that IE uses an ActiveX control to display Flash, so that the Flash display in IE and other browsers is not done by the same software. This of course causes problems.
There are two possible causes that I can see for the EMBED tag not functioning:
- The Shockwave Flash ActiveX is broken (check here)
- The .swf MIME type is broken. This is probably defined in this registry key:
HKEY_CLASSES_ROOT\Mime\Database\Content Type\application/x-shockwave-flash.
More info is to be found in : Troubleshoot Flash Player installation | Windows.
Some useful resources are:
JavaScript Flash Detection Library (Flash Detect)
ActiveXHelper - view essential information about installed ActiveX components.