Yep, assembly, not including pseudo-instructions (which aren't relevant for this game anyway), has more or less a 1:1 conversion into machine code. Assembly languages are hardware-specific; as they represent the ISA (Instruction Set Architecture) of the hardware. Operations and such are pretty simple and have a fairly rigid syntax; typically of the form
label:
opcode $t1, $s1, $s2 #comment
where label is a label which can be used for jump (goto) commands,
opcode is a simple instruction name (for example: add, mov, j, jr, mul),
$t1 is typically the register being outputted to (though it varies based on opcode),
$s1 and $s2 are registers being read from
again, varies on opcode; some use less registers, though never more than 3, all comma separated
the pound sign # typically indicates a comment comes after
A register varies based on the architecture, but for CPUs is typically the size of the memory space the CPU is meant to operate on. For the DCPU, it's a 16 bit value. Assembly has no data types or objects or anything of that sort, just data. Additionally, the code it runs is also just data. The CPU has only a few registers, as on-chip memory access is really fast but takes up highly valuable real-estate. Thus the program must read from and write to RAM when loading or storing values before or after making use of them. As such, the concept of pointers to memory locations is important. For example, if you need to poke around in an array in RAM consisting of 100 values and have 8 registers, you must do pointer arithmetic with the array's location to get the elements in the array in such a way as to avoid requiring more registers than you have available.
Opcodes available and how exactly they work also depends on the architecture, though the DCPU's specs can be found on the site, as has been mentioned.