HLA accepts assembly written using a high-level format, and converts the code into another format (MASM or GAS, usually).
In MASM, for instance, we could write the following code:
mov EAX, 0x05
In HLA, this code would become:
HLA uses the same order-of-operations as GAS syntax, but doesn't require any of the name decoration of GAS. Also, HLA uses the parenthesis notation to call an instruction. HLA terminates its lines with a semicolon, similar to C or Pascal.
Some people criticize HLA because it "isn't low-level enough". This is false, because HLA can be as low-level as MASM or GAS, but it also offers the options to use some higher-level abstractions. For instance, HLA can use the following syntax to pass eax as an argument to the Function1 function:
But HLA also allows the programmer to simplify the process, if they want:
This is called the "parenthesis notation" for calling functions.
HLA also contains a number of different loops (do-while, for, until, etc..) and control structures (if-then-else, switch-case) that the programmer can use. However, these high-level constructs come with a caveat: Using them may be simple, but they translate into MASM code instructions. It is usually faster to implement the loops by hand.