[FAST486]
authorAleksandar Andrejevic <aandrejevic@reactos.org>
Fri, 7 Nov 2014 19:20:38 +0000 (19:20 +0000)
committerAleksandar Andrejevic <aandrejevic@reactos.org>
Fri, 7 Nov 2014 19:20:38 +0000 (19:20 +0000)
Fix BT, BTC, BTS and BTR.

svn path=/trunk/; revision=65310

reactos/lib/fast486/extraops.c

index 1f2fc72..48e25f4 100644 (file)
@@ -752,7 +752,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBitTest)
          * For memory operands, add the bit offset divided by
          * the data size to the address
          */
-        ModRegRm.MemoryAddress += BitNumber / DataSize;
+        ModRegRm.MemoryAddress += (BitNumber / DataSize) * (DataSize / 8);
     }
 
     /* Normalize the bit number */
@@ -936,7 +936,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBts)
          * For memory operands, add the bit offset divided by
          * the data size to the address
          */
-        ModRegRm.MemoryAddress += BitNumber / DataSize;
+        ModRegRm.MemoryAddress += (BitNumber / DataSize) * (DataSize / 8);
     }
 
     /* Normalize the bit number */
@@ -1378,7 +1378,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBtr)
          * For memory operands, add the bit offset divided by
          * the data size to the address
          */
-        ModRegRm.MemoryAddress += BitNumber / DataSize;
+        ModRegRm.MemoryAddress += (BitNumber / DataSize) * (DataSize / 8);
     }
 
     /* Normalize the bit number */
@@ -1592,7 +1592,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeBtc)
          * For memory operands, add the bit offset divided by
          * the data size to the address
          */
-        ModRegRm.MemoryAddress += BitNumber / DataSize;
+        ModRegRm.MemoryAddress += (BitNumber / DataSize) * (DataSize / 8);
     }
 
     /* Normalize the bit number */