hi, i am trying to get this code to work.. please help me
unsigned int offset = (y2 * g_iScreenMultiple);
unsigned int *start = (g_puiScreen) + offset +x1;
char col = 50;
if (x1 < x2)
{
__asm
{
lea edi, [start] // Get address of buffer
mov al, col // Set al to color
mov ecx, x2 // Set ecx to x2
sub ecx, x1 // subtract x1 from ecx
drawloop: // While (ecx > 0) ecx--;
mov [edi], al //set memorylocation to pixel color
inc edi //Increase the xposition
loop drawloop //loop until ecx is zero
}
}
Here is what the asm is suppose to do
while (x1 < x2)
{
{
(*start) = color;
}
start++;
x1++;
}
It is giving me runtime errors saying stack around start is corrupt
Here is the dissamsbler code
if ((x1 < x2) && (x1 < g_iWidth))
00411F81 mov eax,dword ptr [x1]
00411F84 cmp eax,dword ptr [x2]
00411F87 jge drawloop+5 (411FA5h)
00411F89 mov eax,dword ptr [x1]
00411F8C cmp eax,dword ptr [g_iWidth (41A720h)]
00411F92 jge drawloop+5 (411FA5h)
{
__asm
{
lea edi, [start] // Get address of buffer
00411F94 lea edi,[start]
mov al, col // Set al to color
00411F97 mov al,byte ptr [col]
mov ecx, x2 // Set ecx to x2
00411F9A mov ecx,dword ptr [x2]
sub ecx, x1 // subtract x1 from ecx
00411F9D sub ecx,dword ptr [x1]
drawloop: // While (ecx > 0) ecx--;
mov [edi], al //set memorylocation to pixel color
00411FA0 mov byte ptr [edi],al
inc edi //Increase the xposition
00411FA2 inc edi
loop drawloop //loop until ecx is zero
00411FA3 loop drawloop (411FA0h)
}
}
};
00411FA5 push edx
00411FA6 mov ecx,ebp
00411FA8 push eax
00411FA9 lea edx,ds:[411FCAh]
00411FAF call @ILT+235(@_RTC_CheckStackVars@8) (4110F0h)
00411FB4 pop eax <---- Line highlighted