diff --git a/src/xercesc/util/Platforms/Win32/Win32PlatformUtils.cpp b/src/xercesc/util/Platforms/Win32/Win32PlatformUtils.cpp
index abace9af394df9aeee8364dc5c54cfa9bebff186..4a61a17857d5a9f7d0b79782692d4447999a93e0 100644
--- a/src/xercesc/util/Platforms/Win32/Win32PlatformUtils.cpp
+++ b/src/xercesc/util/Platforms/Win32/Win32PlatformUtils.cpp
@@ -794,7 +794,7 @@ XMLPlatformUtils::compareAndSwap(       void**      toFill
     //  otherwise we are back to using assembler.
     //  (But only if building with compilers that support inline assembler.)
     //
-    #if defined(_MSC_VER) || defined(__BCPLUSPLUS__)
+    #if (defined(_MSC_VER) || defined(__BCPLUSPLUS__)) && !defined(XERCES_NO_ASM)
 
     void*   result;
     __asm