Difference between revisions of "PM Opc JMP"
From SublabWiki
m (→Conditions) |
(Same modifications) |
||
Line 8: | Line 8: | ||
|- | |- | ||
|E4 ss | |E4 ss | ||
− | |JC | + | |JC #ss |
|8 | |8 | ||
|Carry=1 | |Carry=1 | ||
|- | |- | ||
|E5 ss | |E5 ss | ||
− | |JNC | + | |JNC #ss |
|8 | |8 | ||
|Carry=0 | |Carry=0 | ||
|- | |- | ||
|E6 ss | |E6 ss | ||
− | |JZ | + | |JZ #ss |
|8 | |8 | ||
|Zero=1 | |Zero=1 | ||
|- | |- | ||
|E7 ss | |E7 ss | ||
− | |JNZ | + | |JNZ #ss |
|8 | |8 | ||
|Zero=0 | |Zero=0 | ||
|- | |- | ||
|EC ss ss | |EC ss ss | ||
− | | | + | |JCW #ssss |
|12 | |12 | ||
|Carry=1 | |Carry=1 | ||
|- | |- | ||
|ED ss ss | |ED ss ss | ||
− | | | + | |JNCW #ssss |
|12 | |12 | ||
|Carry=0 | |Carry=0 | ||
|- | |- | ||
|EE ss ss | |EE ss ss | ||
− | | | + | |JZW #ssss |
|12 | |12 | ||
|Zero=1 | |Zero=1 | ||
|- | |- | ||
|EF ss ss | |EF ss ss | ||
− | | | + | |JNZW #ssss |
|12 | |12 | ||
|Zero=0 | |Zero=0 | ||
|- | |- | ||
|F1 ss | |F1 ss | ||
− | |JMP | + | |JMP #ss |
|8 | |8 | ||
|None | |None | ||
|- | |- | ||
|F3 ss ss | |F3 ss ss | ||
− | | | + | |JMPW #ssss |
|12 | |12 | ||
|None | |None | ||
Line 103: | Line 103: | ||
|- | |- | ||
|CE E6 ss | |CE E6 ss | ||
− | | | + | |JNS #ss |
|12 | |12 | ||
|Sign=0 | |Sign=0 | ||
|- | |- | ||
|CE E7 ss | |CE E7 ss | ||
− | | | + | |JS #ss |
|12 | |12 | ||
|Sign=1 | |Sign=1 | ||
Line 133: | Line 133: | ||
|- | |- | ||
|CE EC ss | |CE EC ss | ||
− | | | + | |JX0 #ss |
|12 | |12 | ||
|?? | |?? |
Revision as of 17:13, 24 May 2009
JMP = Jump to routine
Hex | Mnemonic | Cycles | Condition |
---|---|---|---|
E4 ss | JC #ss | 8 | Carry=1 |
E5 ss | JNC #ss | 8 | Carry=0 |
E6 ss | JZ #ss | 8 | Zero=1 |
E7 ss | JNZ #ss | 8 | Zero=0 |
EC ss ss | JCW #ssss | 12 | Carry=1 |
ED ss ss | JNCW #ssss | 12 | Carry=0 |
EE ss ss | JZW #ssss | 12 | Zero=1 |
EF ss ss | JNZW #ssss | 12 | Zero=0 |
F1 ss | JMP #ss | 8 | None |
F3 ss ss | JMPW #ssss | 12 | None |
F4 | JMP HL | 8 | None |
F5 ss | JDBNZ #ss | 16 | B <> 0x00, decrement B before check |
FD nn | JINT #nn | 8 | None |
CE E0 ss | JL #ss | 12 | Overflow != Sign |
CE E1 ss | JLE #ss | 12 | (Overflow != Sign) OR (Zero=1) |
CE E2 ss | JG #ss | 12 | (Overflow == Sign) OR (Zero=0) |
CE E3 ss | JGE #ss | 12 | Overflow == Sign |
CE E4 ss | JO #ss | 12 | Overflow=1 |
CE E5 ss | JNO #ss | 12 | Overflow=0 |
CE E6 ss | JNS #ss | 12 | Sign=0 |
CE E7 ss | JS #ss | 12 | Sign=1 |
CE E8 ss | JNX0 #ss | 12 | ?? |
CE E9 ss | JNX1 #ss | 12 | ?? |
CE EA ss | JNX2 #ss | 12 | ?? |
CE EB ss | JNX3 #ss | 12 | ?? |
CE EC ss | JX0 #ss | 12 | ?? |
CE ED ss | JX1 #ss | 12 | ?? |
CE EE ss | JX2 #ss | 12 | ?? |
CE EF ss | JX3 #ss | 12 | ?? |
Execute
#nn = Immediate unsigned 8-Bits #ss = Immediate signed 8-Bits #ssss = Immediate signed 16-Bits B = Register B U/V = Register U or V HL = Register HL: (H shl 8) or L SP = Register SP (Stack Pointer) PC = Register PC (Program Counter) [#nnnn] = Memory: (I shl 16) or #nnnn
; J* #ss IF (Condition) THEN V = U PC = PC + #ss - 1 ENDIF
; J* #ssss IF (Condition) THEN V = U PC = PC + #ssss - 1 ENDIF
; JMP #ss V = U PC = PC + #ss - 1
; JMP #ssss V = U PC = PC + #ssss - 1
; JMP HL V = U PC = HL
; JDBNZ #ss B = B - 1 IF (B <> 0) THEN V = U PC = PC + #ss - 1 ENDIF
; JINT #nn (not fully tested) V = U PC = Memory16[#nn SHL 1]
Description
Jump into a new position of the program.
NOTE: All non-branch instructions does "U = V" causing U to be restored, any branch that require banking needs "MOV U, A" or "MOV U, #nn" before it...
Conditions
0xF5 - JDBNZ #ss
Zero: Set when result is 0
Carry, Overflow and Sign remain unchanged
All others:
None
Examples
; A = 0x10 CMP A, 0x10 ; Compare A with 0x10 ; F = (Zero=1):(Carry=0):(Overflow=0):(Sign=0) JZ val_is_16 MOV A, 0x00 val_is_16: ; A = 0x10
; Jump into a label located at a different bank MOV U, $0F JMP function_at_bank_16