There is nothing in the IOTA protocol that enforces this, but virtually all IOTA software will do everything in their power to prevent it.
At the protocol level, if you have an address containing 100 Mi, and you broadcast a valid transaction that transfers 75 Mi to another address, your original address will still have 25 Mi in it. This is 100% allowed.
However, because it is unsafe to spend from the same address multiple times, virtually all IOTA software that you use will automatically transfer any remaining amount(s) to a new address controlled by your seed.
The process works something like this:
Offline
- Create the spend transaction(s).
- Find input address(es) with sufficient IOTAs to cover the spend amount.1
- For each input address, add input transactions that authorise the spending of the entire balance of each address.2
- If there are any remaining IOTAs, generate a new address using your seed and add a final spend transaction that sends the change to that new address.
Offline/Online (depending on circumstances)
- Perform proof of work (this may be done locally, or it may be offloaded onto an IRI node, depending on the circumstances).
Online
- Broadcast the transactions to the Tangle.3
Note that the only step that requires a node is step 6 — and by that point, the transactions have already been created.
In other words, it is up to the software that you are using – not the IOTA protocol itself – to protect you from address reuse.
1 Multiple input addresses may be necessary, if there is no single address with sufficient balance to cover the entire spend.
2 Each input typically requires 1-3 transactions to contain the entire signature, depending on the corresponding address' security level.
3 All of these transactions are treated as an atomic unit known as a bundle.