Writing programs as hex words like 1E 3F 2D 00 is error-prone. Assembly language gives each opcode a short name, a mnemonic, and writes addresses as numbers or labels. One line of assembly is one machine instruction.
LOAD Eis1E.ADD Fis3F.HALTis00.
An assembler is the program that translates assembly into machine code: it looks up each mnemonic's opcode, fills in the address field, and packs them by the instruction format. Going the other way, from words back to mnemonics, is disassembly.
Assembly is still one-to-one with the hardware. Unlike a high-level language, it has no variables, loops or if-statements built in. A loop is a jump instruction backwards; an if-statement is a conditional branch over some code.
To write a Tiny8 program, decide where each instruction and each data word goes in the 16-word memory, then write one line per word.