6-26 The Development Library
Operation Assembler Action S flags
Copy and shift
MLNf&kG(hfDh!K(F!zLqjG(9!
d:= <Oprnd> NZCR
Not
MN=f&kG(hfDh!K(F!zLqjG(9!
d:= ~<Oprnd> NZCR
Add
B44f&kG(hfDh!K(F!KGF!zLqjG(9!
d:= Rn + <Oprnd> NZCVR
Add w carry
B4Of&kG(hfDh!K(F!KGF!zLqjG(9!
d:= Rn + <Oprnd> + Carry NZCVR
Sub
D5Sf&kG(hfDh!K(F!KGF!zLqjG(9!
d:= Rn - <Oprnd> NZCVR
Sub w carry
DSOf&kG(hfDh!K(F!KGF!zLqjG(9!
d:= Rn - <Oprnd> - Not(Carry) NZCVR
Reverse Sub
KDSf&kG(hfDh!K(F!KGF!zLqjG(9!
d:= <Oprnd> - Rn NZCVR
Rev sub w carry
KDOf&kG(hfDh!K(F!KGF!zLqjG(9!
d:= <Oprnd> - Rn – Not(Carry) NZCVR
Multiply
M5Ef&kG(hfDh!K(F!KoF!KZ!
d:= Rm * Rs NZR
Multiply Add
MEBf&kG(hfDh!K(F!KoF!KZF!KG!
d:= (Rm * Rs) + Rn NZR
Compare
OM2f&kG(h!K(F!zLqjG(9!
flags:= Rn - <Oprnd> NZCV
Cmp Negative
OM=f&kG(h!K(F!zLqjG(9!
flags:= Rn + <Oprnd> NZCV
Test
:D:f&kG(h!KGF!zLqjG(9!
flags:= Rn And <Oprnd> NZC
Tst equivalence
:<Uf&kG(h!KGF!zLqjG(9!
flags:= Rn Xor <Oprnd> NZC
And
B=4f&kG(hfDh!K(F!KGF!zLqjG(9!
Rd:= Rn And <Oprnd> NZC
Xor
<LKf&kG(hfDh!K(F!KGF!zLqjG(9!
Rd:= Rn Xor <Oprnd> NZC
TLKf&kG(hfDh!K(F!KGF!zLqjG(9!
Rd:= Rn Xor <Oprnd> NZC
Or
LKKf&kG(hfDh!K(F!KGF!zLqjG(9!
Rd:= Rn Or <Oprnd> NZC
BitClear (ÑAnd)
S6Of&kG(hfDh!K(F!KGF!zLqjG(9!
Rd:= Rn And Not <Oprnd> NZC
Branch
Sf&kG(h!u$%)u!
R15/PC:= address
Gosub
SEf&kG(h!u$%)u!
R14:=R15/PC, R15/PC:= address
Load Int
E4Kf&kG(h!K(F!z$„ok()9!
E4Kf&kG(h!K(F!E$%)u!
Rd:= [address]
Rd:= data at label. The label address is calculated
relative to the PC. This does not work with
constants
Load Byte
E4Kf&kG(hS!K(F!z$„ok()9!
E4KSf&kG(h!K(F!E$%)u!
Rd:= [byte at address] 0 extended
Rd:= data at label. The label address is calculated
relative to the PC. This does not work with
constants
Multiple load
!
Stack operations (Pop)
Inc Before
E4Mf&kG(h6S!K(f•hF!fj)m!utZph!
! sets the W bit (updates the base
Inc After
E4Mf&kG(h6B!K(f•hF!fj)m!utZph!
register after the transfer)
Dec Before
E4Mf&kG(h4S!K(f•hF!fj)m!utZph!
Dec After
E4Mf&kG(h4B!K(f•hF!fj)m!utZph!
Store Int
D:Kf&kG(h!K(F!z$„ok()9!
D:Kf&kG(h!K(F!E$%)u!
[address]:= Rd
data at label:= Rd. The label address is calculated
relative to the PC. This does not work with
constants
Store Byte
D:KSf&kG(h!K(F!z$„ok()9!
D:KSf&kG(h!K(F!E$%)u!
[address]:= byte value from Rd
data at label:= Rd. The label address is calculated
relative to the PC. This does not work with
constants
Multiple Store
!
Stack operations (Push)
Inc Before
D:Mf&kG(h6S!K(f•hF!fj)m!utZph!
! Sets the W bit (updates the base
Inc After
D:Mf&kG(h6B!K(f•hF!fj)m!utZph!
register after the transfer
De Before
D:Mf&kG(h4S!K(f•hF!fj)m!utZph!
De After
D:Mf&kG(h4B!K(f•hF!fj)m!utZph!
multiplication
M5E!j(F!j3!jH!
rd=r1*r2
MEB!j(F!j3F!jHF!jV!
rd=r1*r2+r3
DM5EE!j(3F!j(HF!j3F!jH!
Signed mul rd1=low r1*r2, rd2=high r1*r2
DMEBE!j(3F!j(HF!j3F!jH!
Signed mul add rd1+=low r1*r2, rd2+=high r1*r2
5M5EE!j(3F!j(HF!j3F!jH!
rd1=low r1*r2, rd2=high r1*r2
5MEBE!j(3F!j(HF!j3F!jH!
mul add rd1+=low r1*r2, rd2+=high r1*r2
.u$%)u=$o)!
Creates a label
…!
See $ in ASM mode
ŠF!‰!
See ASM mode