Here is the complete list of CSC-1 instructions along with their opcodes and formats and assembler mnemonics, (pronounced nee-MAHN-niks) which are short names of 2 or 3 characters used in writing assembler programs.
opcode mnemonic format meaning ---------------------------------------------------------------------------- 0000 LOD 0000xxxxxxxxxxxx Load memory word xx... into A 0001 STD 0001xxxxxxxxxxxx Store A into memory xx... 0010 LDI 0010kkkkkkkkkkkk Load constant kk... into A 0011 ADD 0011xxxxxxxxxxxx Add memory word xx... to A 0100 SUB 0100xxxxxxxxxxxx Subtract memory word xx...from A 0101 AND 0101xxxxxxxxxxxx Boolean bitwise AND of memory with A 0110 OR 0110xxxxxxxxxxxx Boolean bitwise OR of memory with A 0111 NOT 0111xxxxxxxxxxxx Boolean bitwise NOT of memory 1000 JMP 1000xxxxxxxxxxxx Jump to address xx... unconditionally 1001 JZ 1001xxxxxxxxxxxx Jump to address xx... if Z=1 1010 JC 1010xxxxxxxxxxxx Jump to address xx... if C=1 1011 JV 1011xxxxxxxxxxxx Jump to address xx... if V=1 1100 JN 1100xxxxxxxxxxxx Jump to address xx... if N=1 1101 JP 1101xxxxxxxxxxxx Jump to address xx... if N=0 and Z=0 1110 CAL 1110xxxxxxxxxxxx Call subroutine xx... 11110001 RET 1111000100000000 Return from subroutine 11110010 A2S 1111001000000000 Copy A into S 11110011 S2A 1111001100000000 Copy S into A 11110100 SHL 1111010000000000 Shift Left 1 bit (logical shift) 11110101 SHR 1111010100000000 Shift Right 1 bit (logical shift) 11110110 LDS 1111011000000000 Load A via S (indirect load) 11110111 STS 1111011100000000 Store A via S (indirect store) 11111000 NOP 1111100000000000 No Operation (waste cycle) 11111001 HLT 1111100100000000 Halt the computer
We will become very familiar with these instructions as we learn to implement them and to write simple assembler programs using them.
In the above notation, xxxxxxxxxxxx is a 12-bit binary number. Since it is a memory address, it is unsigned.
kkkkkkkkkkkk is also a 12-bit binary number, also unsigned. It is just a binary number, from 0 to 4095, and is not necessarily a memory address. The letter k was chosen because this number is a constant (konstant in German) that is plunked into the A register by the LDI instruction.