yes and no.
For Windows 2000/2003/NT/XP use "/MAXMEM=<amount in MB>" in BOOT.INI to set the maximum physical address that Windows will scan in search of RAM. Other programs which are able to access the memory directly(!) can then use the other memory.
http://support.microsoft.com/kb/108393
For Window Vista use the "TRUNCATEMEMORY <amount in bytes>" switch in BCDEDIT for the same effect.
Never ever set those values lower than the minimum requirements for te OS! And it is highly important to note that this will only work if you have contiguous ram. eg: there will always be a gap in the address space at the 3,5GB boundery.
---
However, it must be noted that the "/BURNMEMORY=<amount in MB>" parameter would probably more what you're looking for though. This will subtract the amount of megabytes you've specified from the amount of memory otherwise allocated to the system.
For Windows Vista the equivalent is the "REMOVEMEMORY <amount in bytes>" switch.
Then there is also the /3GB parameter...
---------------------------------------
But actually, as said several times before, there is no reason and it makes very little sense why you should want to use all that (unless you want to test something in a simulated low or high memory environment). The Windows OS uses as much memroy as it can use and it does this in a dynamic and ntelligent way, it will not 'overuse' the memory. Furthermore, memory is there to be used, and if the OS doesn't use it, it is available for programs, and vice versa. And remember that using the task manager (or many many other but similar tools) to check how much memory actually is used by a program or Windows is not possible!! It will give you a completely wrong idea.
Things you MUST read before using it:
http://support.microsoft.com/kb/108393
http://technet.microsoft.com/nl-be/sysinternals/bb963892(en-us).aspx
http://blogs.msdn.com/oldnewthing/archive/2007/01/26/1537079.aspx