+ if(sys->cpu->gr[r] == 0x0) {
+ sys->cpu->fr += ZF;
+ }
+}
+
+/**
+ * JMI命令
+ */
+void jmi(const WORD r, const WORD adr)
+{
+ if((sys->cpu->fr & SF) > 0) {
+ sys->cpu->pr = adr;
+ }
+}
+
+/**
+ * JNZ命令
+ */
+void jnz(const WORD r, const WORD adr)
+{
+ if((sys->cpu->fr & ZF) == 0) {
+ sys->cpu->pr = adr;
+ }
+}
+
+/**
+ * JZE命令
+ */
+void jze(const WORD r, const WORD adr)
+{
+ if((sys->cpu->fr & ZF) > 0) {
+ sys->cpu->pr = adr;
+ }
+}
+
+/**
+ * JUMP命令
+ */
+void jump(const WORD r, const WORD adr)
+{
+ sys->cpu->pr = adr;
+}
+
+/**
+ * JPL命令
+ */
+void jpl(const WORD r, const WORD adr)
+{
+ if((sys->cpu->fr & (SF | ZF)) == 0) {
+ sys->cpu->pr = adr;
+ }
+}
+
+/**
+ * JOV命令
+ */
+void jov(const WORD r, const WORD adr)
+{
+ if((sys->cpu->fr & OF) > 0) {
+ sys->cpu->pr = adr;
+ }
+}
+
+/**
+ * PUSH命令
+ */
+void push(const WORD r, const WORD adr)
+{
+ assert(sys->cpu->sp > execptr->end && sys->cpu->sp <= sys->memsize);
+ sys->memory[--(sys->cpu->sp)] = adr;
+}
+
+/**
+ * POP命令
+ */
+void pop(const WORD r, const WORD adr)
+{
+ assert(sys->cpu->sp > execptr->end && sys->cpu->sp <= sys->memsize);
+ sys->cpu->gr[r] = sys->memory[(sys->cpu->sp)++];
+}
+
+/**
+ * CALL命令
+ */
+void call(const WORD r, const WORD adr)
+{
+ assert(sys->cpu->sp > execptr->end && sys->cpu->sp <= sys->memsize);
+ sys->memory[--(sys->cpu->sp)] = sys->cpu->pr;
+ sys->cpu->pr = adr;
+}
+
+/**
+ * RET命令
+ */
+void ret(const WORD r, const WORD adr)
+{
+ assert(sys->cpu->sp <= sys->memsize);
+ if(sys->cpu->sp == sys->memsize) {
+ execptr->stop = true;
+ } else if(sys->cpu->sp < sys->memsize) {
+ sys->cpu->pr = sys->memory[(sys->cpu->sp)++];