diff --git a/src/cpu/core_full/string.h b/src/cpu/core_full/string.h index 18a31517..bc8f2360 100644 --- a/src/cpu/core_full/string.h +++ b/src/cpu/core_full/string.h @@ -88,6 +88,13 @@ di_index=(di_index+add_index) & add_mask; } break; + case R_INSD: + add_index<<=2; + for (;count>0;count--) { + SaveMd(di_base+di_index,IO_ReadD(reg_dx)); + di_index=(di_index+add_index) & add_mask; + } + break; case R_STOSB: for (;count>0;count--) { SaveMb(di_base+di_index,reg_al); diff --git a/src/cpu/core_normal/string.h b/src/cpu/core_normal/string.h index 40ebce7d..88540822 100644 --- a/src/cpu/core_normal/string.h +++ b/src/cpu/core_normal/string.h @@ -93,6 +93,13 @@ static void DoString(STRING_OP type) { di_index=(di_index+add_index) & add_mask; } break; + case R_INSD: + add_index<<=2; + for (;count>0;count--) { + SaveMd(di_base+di_index,IO_ReadD(reg_dx)); + di_index=(di_index+add_index) & add_mask; + } + break; case R_STOSB: for (;count>0;count--) { SaveMb(di_base+di_index,reg_al);