This is the 360 (with some 370) instruction set.
Instruction op-codes are all 1 hex byte.
The first half of the op-code byte (hex digit) is at the start of each row.
The second half of the op-code byte (other hex digit 0-F) is along the top.
So, in this list, an opcode of x'47' would be in the #4 row,
and under the '7' column. If you go down the '7' column
to the 4? row, you see "BC" which is the branch instruction. (Branch Conditional)
This is the instruction set devised by Gene Amdahl,
who later went on to form his own company and compete with IBM.
If you look down the '9' column you see all the 'C' (compare) instructions.
And then the '?A, ?B, ?C, and ?D' columns have add, subt, multiply, and divide instructions.
Store halfword and store are x'40' and x'50'
Load halfword and load are x'48 and x'58'
In addition to those, load register, load halfword, load, and load multiple are all in col-8.
The equivalent store instructions are all in col-0.
There are AND, OR, and EXCLUSIVE OR, instructions.
The easy way to think of them is:
AND turns bits off. (col-4)
OR turns bits on. (col-6)
EXCLUSIVE OR reverses bits. (col-7)
If you look across row-4, you'll see several half word instructions.
Just below that, in row-5, are similar full word instructions.
There are, of course several instructions (eg EDit) that are individual and not in a set.
Floating point instructions work with floating point registers, and are not often used.
A?, B?, and C? instructions were not originally defined at all, and have since been used for new instruction.
I've shown most op-codes are UPPER CASE (like BALR).
I put privileged (not user) instructions in lower case.
Although I have used many of these instructions, very few programs use more than 30 of them,
and 80-90% of each program consists of only about half of that.
The problem isn't what shape your blocks are, but rather how you put them together.
0 1 2 3 4 5 6 7 8 9 A B C D E F
0? spm BALR BCTR BCR ssk isk SVC BSM BASSM BASR MVCL CLCL
1? LPR LNR LTR LCR NR CLR OR XR LR CR AR SR MR DR ALR SLR
2? -- floating point --
3? -- floating point --
4? STH LA STC IC EX BAL BCT BC LH CH AH SH MH BAS CVD CVB
5? ST lae N CL O X L C A S M D AL SL
6? -- floating point --
7? -- floating point --
8? ssm lpsw diag wrd rdd BXH BXLE SRL SLL SRA SLA SRDL SLDL SRDA SLDA
9? STM TM MVI ts NI CLI OI XI LM sio tio hio tch
A? -- new extended (2-byte opcodes)
B? -- new extended CS CDS CLM STCM ICM
C? -- new extended
D? trtr MVN MVC MVZ NC CLC OC XC TR TRT ED EDMK
E? -- new extended (2-byte opcodes)
F? srp MVO PACK UNPK ZAP CP AP SP MP DP