+ WORD w[1];
+ w[0] = sys->memory[sys->cpu->pr];
+ addl(get_r_r1(w[0]), sys->cpu->gr[get_x_r2(w[0])]);
+ sys->cpu->pr += 1;
+}
+
+/**
+ * SUBL命令 - オペランドr,adr,x。語長2
+ * \relates exec
+ */
+void subl_r_adr_x()
+{
+ WORD w[2];
+ w[0] = sys->memory[sys->cpu->pr];
+ w[1] = sys->memory[sys->cpu->pr + 1];
+ addl(get_r_r1(w[0]), ~(get_val_adr_x(w[1], w[0])) + 1);
+ sys->cpu->pr += 2;
+}
+
+
+/**
+ * SUBL命令 - オペランドr1,r2。語長1
+ * \relates exec
+ */
+void subl_r1_r2()
+{
+ WORD w[1];
+ w[0] = sys->memory[sys->cpu->pr];
+ addl(get_r_r1(w[0]), ~(sys->cpu->gr[get_x_r2(w[0])]) + 1);
+ sys->cpu->pr += 1;
+}
+
+/**
+ * AND命令 - オペランドr,adr,x。語長2
+ * \relates exec
+ */
+void and_r_adr_x()
+{
+ WORD w[2];
+ w[0] = sys->memory[sys->cpu->pr];
+ w[1] = sys->memory[sys->cpu->pr + 1];
+ setfr(sys->cpu->gr[get_r_r1(w[0])] &= get_val_adr_x(w[1], w[0]));
+ sys->cpu->pr += 2;
+}
+
+/**
+ * AND命令 - オペランドr1,r2。語長1
+ * \relates exec
+ */
+void and_r1_r2()
+{
+ WORD w[1];
+ w[0] = sys->memory[sys->cpu->pr];
+ setfr(sys->cpu->gr[get_r_r1(w[0])] &= sys->cpu->gr[get_x_r2(w[0])]);
+ sys->cpu->pr += 1;
+}
+
+/**
+ * OR命令 - オペランドr,adr,x。語長2
+ * \relates exec
+ */
+void or_r_adr_x()
+{
+ WORD w[2];
+ w[0] = sys->memory[sys->cpu->pr];
+ w[1] = sys->memory[sys->cpu->pr + 1];
+ setfr(sys->cpu->gr[get_r_r1(w[0])] |= get_val_adr_x(w[1], w[0]));
+ sys->cpu->pr += 2;
+}
+
+/**
+ * OR命令 - オペランドr1,r2。語長1
+ * \relates exec
+ */
+void or_r1_r2()
+{
+ WORD w[1];
+ w[0] = sys->memory[sys->cpu->pr];
+ setfr(sys->cpu->gr[get_r_r1(w[0])] |= sys->cpu->gr[get_x_r2(w[0])]);
+ sys->cpu->pr += 1;
+}
+
+/**
+ * XOR命令 - オペランドr,adr,x。語長2
+ * \relates exec
+ */
+void xor_r_adr_x()
+{
+ WORD w[2];
+ w[0] = sys->memory[sys->cpu->pr];
+ w[1] = sys->memory[sys->cpu->pr + 1];
+ setfr(sys->cpu->gr[get_r_r1(w[0])] ^= get_val_adr_x(w[1], w[0]));
+ sys->cpu->pr += 2;
+}
+
+/**
+ * XOR命令 - オペランドr1,r2。語長1
+ * \relates exec
+ */
+void xor_r1_r2()
+{
+ WORD w[1];
+ w[0] = sys->memory[sys->cpu->pr];
+ setfr(sys->cpu->gr[get_r_r1(w[0])] ^= sys->cpu->gr[get_x_r2(w[0])]);
+ sys->cpu->pr += 1;
+}
+
+/**
+ * CPA命令のテンプレート\n
+ * 汎用レジスタrの内容と値valを算術比較
+ */
+void cpa(WORD r, WORD val)
+{
+ sys->cpu->fr = 0x0;
+ if((short)sys->cpu->gr[r] < (short)val) {
+ sys->cpu->fr = SF;
+ } else if(sys->cpu->gr[r] == val) {
+ sys->cpu->fr = ZF;