News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests
NB: Posting URL's See here: Posted URL Change

Main Menu

Few errors with code conversion

Started by Magnum, March 17, 2013, 12:46:27 AM

Previous topic - Next topic

Magnum

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

Take care,
                   Andy

Ubuntu-mate-18.04-desktop-amd64

http://www.goodnewsnetwork.org