[FAST486]
authorAleksandar Andrejevic <aandrejevic@reactos.org>
Thu, 14 Nov 2013 02:54:20 +0000 (02:54 +0000)
committerAleksandar Andrejevic <aandrejevic@reactos.org>
Thu, 14 Nov 2013 02:54:20 +0000 (02:54 +0000)
Update the register values in REP LODS.

svn path=/branches/ntvdm/; revision=60988

lib/fast486/opcodes.c

index de75b50..a3e1664 100644 (file)
@@ -5885,6 +5885,18 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeLods)
             if (AddressSize) State->GeneralRegs[FAST486_REG_ESI].Long -= (Count - 1) * DataSize;
             else State->GeneralRegs[FAST486_REG_ESI].LowWord -= (Count - 1) * DataSize;
         }
+
+        /* Update registers */
+        if (OperandSize)
+        {
+            State->GeneralRegs[FAST486_REG_ECX].Long = 0;
+            State->GeneralRegs[FAST486_REG_ESI].Long += Count - 1;
+        }
+        else
+        {
+            State->GeneralRegs[FAST486_REG_ECX].LowWord = 0;
+            State->GeneralRegs[FAST486_REG_ESI].LowWord += Count - 1;
+        }
     }
 
     /* Read from the source operand */