I am getting 3 compiler errors.
; Crit_Section.asm
;
;
include \masm32\include\masm32rt.inc
Thread1 PROTO :DWORD
Thread2 PROTO :DWORD
;#include<windows.h>
;#include<iostream>
;using namespace std;
.data
stCS CRITICAL_SECTION<>
dwThread dd 0
.data?
IDThread1 dw ?
IDThread2 dw ?
;// Declare the global variable
;static int g_n;
;CRITICAL_SECTION m_cs;
.code
start:
; int main()
; {
;// Create the array of Handle
;HANDLE hThrd[2];
;//Thread ID's
;DWORD IDThread1, IDThread2;
;//Initilize the critical section
;InitializeCriticalSection(&m_cs);
invoke InitializeCriticalSection,ADDR stCS
;// Create threads use CreateThread function with NULL Security
;hThrd[0] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) ThreadOne,(LPVOID)NULL,0,&IDThread1);
invoke CreateThread,NULL,0,ADDR Thread1,NULL,0,Thread1
;hThrd[1] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) ThreadTwo,(LPVOID)NULL,0,&IDThread2);
invoke CreateThread,NULL,0,ADDR Thread2,NULL,0,Thread2
;// Wait for the main thread
;WaitForMultipleObjects(2,hThrd,TRUE,INFINITE);
invoke WaitForMultipleObjects,2,dwThread,TRUE,INFINITE
;invoke WaitForMultipleObjects,dwThread,lpObjarr,TRUE,INFINITE
; // Delete critical Section
; DeleteCriticalSection(&m_cs);
invoke DeleteCriticalSection,ADDR stCS
; return 0;
invoke ExitProcess,0
Thread1 proc
LOCAL count:DWORD
;////////Thread One Function///////////////////
;UINT ThreadOne(LPVOID lParam)
;{
;// Lock the Critical section
;EnterCriticalSection(&m_cs);
invoke EnterCriticalSection,ADDR stCS
;for(int i=0;i<10;i++)
;{
; g_n++;
; cout << "Thread 1: " << g_n << "\n";
;}
.while count < 10
inc count
;//Release the Critical section
;LeaveCriticalSection(&m_cs);
invoke LeaveCriticalSection,ADDR stCS
;// return the thread
;return 0;
;}
Thread1 endp
Thread2 proc
LOCAL count:DWORD
;////////Thread Two Function///////////////////
;UINT ThreadTwo(LPVOID lParam)
;{
;// Lock the Critical section
;EnterCriticalSection(&m_cs);
invoke EnterCriticalSection,ADDR stCS
;for(int i=0;i<10;i++)
;{
; g_n++;
; cout << "Thread 2: "<< g_n << "\n";
;}
.while count < 10
inc count
;//Release the Critical section
;LeaveCriticalSection(&m_cs);
invoke LeaveCriticalSection,ADDR stCS
;// return the thread
;return 0;
;}
Thread2 endp
;}
end start