flat assembler
Message board for the users of flat assembler.
![]() |
Author |
|
LocoDelAssembly 22 Sep 2012, 21:56
Very simple to fix error: INVOKE and ADDR must be written all lowercase. This is because these are not assembler nor preprocessor directives but a macro and a symbol respectively and since fasm is case-sensitive you get the error.
|
|||
![]() |
|
Force 22 Sep 2012, 23:11
yes I solved problem by using " Cinvoke " its different function for me
at least i learned how to use it ![]() It is working Code : Code: INCLUDE "C:\Fasm\include\win32ax.inc" .data AppName db "VolumeInformation of C:\",0 PathName db "C:\",0 VolumeName db 16 dup(?) NameSize dd 50 volumeSerial dd 0 VolumeSize dd 50 VolSer db 50 dup(?) DiskDataHex DB "%lX",NULL Buffer db 100 dup(?) drvName db "Drive Name : C:\ ",0 srNum db "Serial Number : ",0 NL db 13,10 .code WIN_START: invoke GetVolumeInformation,addr PathName,addr VolumeName,addr NameSize,addr volumeSerial,addr VolumeSize,NULL,NULL,NULL cinvoke wsprintf, VolSer,DiskDataHex,[volumeSerial] invoke lstrcat,addr Buffer,addr drvName invoke lstrcat,addr Buffer,addr VolumeName invoke lstrcat,addr Buffer,addr NL invoke lstrcat,addr Buffer,addr srNum invoke lstrcat,addr Buffer,addr VolSer invoke MessageBox,NULL,addr Buffer,addr AppName,0 invoke ExitProcess, 0 .end WIN_START |
|||
![]() |
|
LocoDelAssembly 23 Sep 2012, 00:02
Quote:
Here is a simplified version of your code: Code: INCLUDE "C:\Fasm\include\win32axp.inc" NL equ 13, 10 NAME_SIZE equ (MAX_PATH + 1) .data AppName db "VolumeInformation of C:\",0 PathName db "D:\",0 fmt db "Drive Name : C:\ %s", NL,\ "Serial Number : %lX", 0 VolumeName rb NAME_SIZE volumeSerial dd 0 Buffer rb 256 .code ; I'm not using addr because it is not needed when accessing global vars. ; Using addr causes an additional instruction (LEA) to be used. WIN_START: invoke GetVolumeInformation, PathName,\ ; _In_opt_ LPCTSTR lpRootPathName VolumeName,\ ; _Out_opt_ LPTSTR lpVolumeNameBuffer NAME_SIZE,\ ; _In_ DWORD nVolumeNameSize volumeSerial,\ ; _Out_opt_ LPDWORD lpVolumeSerialNumber NULL,\ ; _Out_opt_ LPDWORD lpMaximumComponentLength NULL,\ ; _Out_opt_ LPDWORD lpFileSystemFlags NULL,\ ; _Out_opt_ LPTSTR lpFileSystemNameBuffer 0 ; _In_ DWORD nFileSystemNameSize cinvoke wsprintf, Buffer, fmt, VolumeName, [volumeSerial] invoke MessageBox, NULL, Buffer, AppName, 0 invoke ExitProcess, 0 .end WIN_START |
|||
![]() |
|
Force 23 Sep 2012, 10:34
Thanks LocoDelAssemly for simplified code
i just started to learn fasm so i dunno fasm enough in fact i m new in assembly Force |
|||
![]() |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2023, Tomasz Grysztar. Also on GitHub, YouTube, Twitter.
Website powered by rwasa.