Home » Archimedes archive » Acorn User » AU 1997-Xmas A.adf » StrongHelp » !Manuals/Assembly

!Manuals/Assembly

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1997-Xmas A.adf » StrongHelp
Filename: !Manuals/Assembly
Read OK:
File size: 13E0 bytes
Load address: 0000
Exec address: 0000
File contents
HELP(�����,���$DIR$DF������.!RoottE�������cond4F����{�Op2�E���7���nPCh	F����[wRd�	F���$p�Rnh
F���tk�SF����8?AShift\F����V��bitsDATA.Instructions :
#wrap off
#tab
ADC	Add with Carry		MUL	Multiply
ADD	Add			MVN	Move Negative
AND	And			ORR	Inclusive OR
B	Branch			RSB	Reverse Subtract
BIC	Bit Clear		RSC	Reverse Subtract with Carry
CMN	Compare Negative	SBC	Subtract with Carry
CMP	Compare			STM	Store Multiple
EOR	Exlusive OR		STR	Store Register
LDM	Load Multiple		SUB	Subtract
LDR	Load Register		SWI	Software Interrupt
MLA	Multiply with Accumulate	TEQ	Test for Equality
MOV	Move			TST	Test Masked
#tab

 <Bit patterns=>bits> <Condition codes=>cond> <S suffix=>S> < Rd > < Rn > < Op2 >DATA�Condition codes
All instructions are conditionally executed. If the condition in the top four bits of the instruction is not met, then even illegal instructions will have no effect...

#wrap off; tab
Condition field	 	 	Execute IF
#Line
  0000	EQ	:	 Z		(equal)
  0001	NE	:	~Z		(not equal)
  0010	CS	:	 C		(unsigned higher or same)
  0011	CC	:	~C		(unsigned lower)
  0100	MI	:	 N		(negative)
  0101	PL	:	~N		(positive or zero)
  0110	VS	:	 V		(overflow)
  0111	VC	:	~V		(no overflow)
  1000	HI	:	 C and ~Z	(unsigned higher)
  1001	LS	:	~C or Z		(unsigned lower or same)
  1010	GE	:	 N = V		(signed higher or same)
  1011	LT	:	 N != V		(signed lower)
  1100	GT	:	~Z and (N = V)	(signed higher)
  1101	LE	:	 Z or (N != V)	(signed lower or same)
  1110	AL	:	 1		(always)
  1111	NV	:	 0		(never)
#tab; wrap nojoin

( 1 is true, 0 is false, ~ is NOT )

Note: The NV code shouldn't be used anymore. If you want a no-op, you should use something like MOV R0,R0DATA�Op2
This can take several forms :
   -	Reg
   -	Reg <shift> #constant
   -	Reg <shift> Reg
	(Note: This takes an extra clock cycle)
   -	#constant
	( of the form Byte ROR n*2, n is 0..15 )DATAnR15
  3         2         1
 10987654321098765432109876543210
%NZCOIF....program.counter.....MM
                               00 = User mode
      FIRQ Disable             01 = FIRQ mode
     IRQ Disable               10 = IRQ mode
    Overflow                   11 = Supervisor mode
   Carry / Not borrow / Rotate Extend
  Zero
 Negative / Signed less thanDATAwRd
Rd can be any of the registers from R0 to R15. If Rd = R15 then only the PC bits will be set, not the flags.DATA�Rn
Rn can be any of the registers from R0 to R15. If Rn = R15 then only the PC bits are used. The flag bits will appear cleared.DATA�S
Flags will only be updated if this is present. The S flag is implicit in CMP, CMN, TEQ and TST

  SUBS R1,R1,R2		;
  ADD  R1,R1,R3		; 
  Beq  xxx		; jump if R1-R2 = 0DATAAShift
The shift types are :
  LSL	Logical Shift Left
  LSR	Logical Shift Right
  ASR	Arithmetic Shift Right
  ROR	ROtate Right
  RRX	Rotate Right eXtended

RRX is special. It is a rotate by one, where bit 31 = old carry and new carry = old bit 0.

For all shifts the carry flag is set to the last bit shifted out.DATA�Bit patterns
#wrap off; fcode
 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
 -------+---+-+-------+-+-------+-------+-----------------------
| cond  |0 0|i| opcod |s|   Rn  |   Rd  |        Operand2       |  Data processing
+-------+---+-+-----+-+-+-------+-------+-------+-------+-------+
| cond  |0 0 0 0 0 0|a|s|   Rd  |   Rn  |   Rs  |1 0 0 1|   Rm  |  Multiply
+-------+-------+---+-+---------+-------+-------+-------+-------+
| cond  |0 0 0 1|x x x x x x x x x x x x x x x x 1 x x 1 x x x x|  Undefined
+-------+---+-+-+-+-+-+-+-------+-------+-----------------------+
| cond  |0 1|i|P|U|B|W|L|   Rn  |   Rd  |         Offset        |  LDR / STR
+-------+---+-+-+-+-+-+-+-------+-------+-----------------------+
| cond  |0 1 1|x x x x x x x x x x x x x x x x x x x x 1 x x x x|  Undefined
+-------+-----+-+-+-+-+-+-------+-------------------------------+
| cond  |1 0 0|P|U|S|W|L|   Rn  |         Register list         |  LDM / STM
+-------+-----+-+-+-+-+-+-------+-------------------------------+
| cond  |1 0 1|L|                 word offset                   |  Branch
+-------+-----+-+-+-+-+-+-------+-------+-------+---------------+
| cond  |1 1 0|P|U|N|W|L|   Rn  |  CRd  |  Cp#  |     Offset    |  Coproc Data Transfer
+-------+-----+-+-+-+-+-+-------+-------+-------+-----+-+-------+
| cond  |1 1 1 0| Opcod |  CRn  |  CRd  |  Cp#  |  CP |0|  CRm  |  Coproc Data op
+-------+-------+-----+-+-------+-------+-------+-----+-+-------+
| cond  |1 1 1 0|Opcod|L|  CRn  |   Rd  |  Cp#  |  CP |1|  CRm  |  Coproc RegTrans
+-------+-------+-----+-+-------+-------+-------+-----+-+-------+
| cond  |1 1 1 1|                   swi number                  |  SWI
 -------+-------+-----------------------------------------------
 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
#f; wrap on
00000000  48 45 4c 50 28 00 00 00  c9 00 00 00 ff ff ff ff  |HELP(...........|
00000010  2c 00 00 00 00 fd ff ff  00 00 00 00 10 01 00 00  |,...............|
00000020  00 01 00 00 00 00 00 00  24 00 00 00 44 49 52 24  |........$...DIR$|
00000030  18 01 00 00 18 01 00 00  44 01 00 00 46 fd ff ff  |........D...F...|
00000040  f7 c8 c1 fc 2e 02 00 00  13 00 00 00 00 00 00 00  |................|
00000050  21 52 6f 6f 74 00 00 00  74 03 00 00 45 fd ff ff  |!Root...t...E...|
00000060  f8 b3 dd ff c0 03 00 00  13 00 00 00 00 00 00 00  |................|
00000070  63 6f 6e 64 00 00 00 00  34 07 00 00 46 fd ff ff  |cond....4...F...|
00000080  85 7b 08 00 c4 00 00 00  13 00 00 00 00 00 00 00  |.{..............|
00000090  4f 70 32 00 f8 07 00 00  45 fd ff ff 37 9d e8 df  |Op2.....E...7...|
000000a0  6e 01 00 00 13 00 00 00  00 00 00 00 50 43 00 00  |n...........PC..|
000000b0  68 09 00 00 46 fd ff ff  b0 5b 08 00 77 00 00 00  |h...F....[..w...|
000000c0  13 00 00 00 00 00 00 00  52 64 00 00 e0 09 00 00  |........Rd......|
000000d0  46 fd ff ff 24 70 08 00  88 00 00 00 13 00 00 00  |F...$p..........|
000000e0  00 00 00 00 52 6e 00 00  68 0a 00 00 46 fd ff ff  |....Rn..h...F...|
000000f0  74 6b 08 00 b0 00 00 00  13 00 00 00 00 00 00 00  |tk..............|
00000100  53 00 00 00 18 0b 00 00  46 fd ff ff d1 38 3f 03  |S.......F....8?.|
00000110  41 01 00 00 13 00 00 00  00 00 00 00 53 68 69 66  |A...........Shif|
00000120  74 00 00 00 5c 0c 00 00  46 fd ff ff f4 56 d4 e5  |t...\...F....V..|
00000130  84 07 00 00 13 00 00 00  00 00 00 00 62 69 74 73  |............bits|
00000140  00 00 00 00 44 41 54 41  2e 02 00 00 49 6e 73 74  |....DATA....Inst|
00000150  72 75 63 74 69 6f 6e 73  20 3a 0a 23 77 72 61 70  |ructions :.#wrap|
00000160  20 6f 66 66 0a 23 74 61  62 0a 41 44 43 09 41 64  | off.#tab.ADC.Ad|
00000170  64 20 77 69 74 68 20 43  61 72 72 79 09 09 4d 55  |d with Carry..MU|
00000180  4c 09 4d 75 6c 74 69 70  6c 79 0a 41 44 44 09 41  |L.Multiply.ADD.A|
00000190  64 64 09 09 09 4d 56 4e  09 4d 6f 76 65 20 4e 65  |dd...MVN.Move Ne|
000001a0  67 61 74 69 76 65 0a 41  4e 44 09 41 6e 64 09 09  |gative.AND.And..|
000001b0  09 4f 52 52 09 49 6e 63  6c 75 73 69 76 65 20 4f  |.ORR.Inclusive O|
000001c0  52 0a 42 09 42 72 61 6e  63 68 09 09 09 52 53 42  |R.B.Branch...RSB|
000001d0  09 52 65 76 65 72 73 65  20 53 75 62 74 72 61 63  |.Reverse Subtrac|
000001e0  74 0a 42 49 43 09 42 69  74 20 43 6c 65 61 72 09  |t.BIC.Bit Clear.|
000001f0  09 52 53 43 09 52 65 76  65 72 73 65 20 53 75 62  |.RSC.Reverse Sub|
00000200  74 72 61 63 74 20 77 69  74 68 20 43 61 72 72 79  |tract with Carry|
00000210  0a 43 4d 4e 09 43 6f 6d  70 61 72 65 20 4e 65 67  |.CMN.Compare Neg|
00000220  61 74 69 76 65 09 53 42  43 09 53 75 62 74 72 61  |ative.SBC.Subtra|
00000230  63 74 20 77 69 74 68 20  43 61 72 72 79 0a 43 4d  |ct with Carry.CM|
00000240  50 09 43 6f 6d 70 61 72  65 09 09 09 53 54 4d 09  |P.Compare...STM.|
00000250  53 74 6f 72 65 20 4d 75  6c 74 69 70 6c 65 0a 45  |Store Multiple.E|
00000260  4f 52 09 45 78 6c 75 73  69 76 65 20 4f 52 09 09  |OR.Exlusive OR..|
00000270  53 54 52 09 53 74 6f 72  65 20 52 65 67 69 73 74  |STR.Store Regist|
00000280  65 72 0a 4c 44 4d 09 4c  6f 61 64 20 4d 75 6c 74  |er.LDM.Load Mult|
00000290  69 70 6c 65 09 09 53 55  42 09 53 75 62 74 72 61  |iple..SUB.Subtra|
000002a0  63 74 0a 4c 44 52 09 4c  6f 61 64 20 52 65 67 69  |ct.LDR.Load Regi|
000002b0  73 74 65 72 09 09 53 57  49 09 53 6f 66 74 77 61  |ster..SWI.Softwa|
000002c0  72 65 20 49 6e 74 65 72  72 75 70 74 0a 4d 4c 41  |re Interrupt.MLA|
000002d0  09 4d 75 6c 74 69 70 6c  79 20 77 69 74 68 20 41  |.Multiply with A|
000002e0  63 63 75 6d 75 6c 61 74  65 09 54 45 51 09 54 65  |ccumulate.TEQ.Te|
000002f0  73 74 20 66 6f 72 20 45  71 75 61 6c 69 74 79 0a  |st for Equality.|
00000300  4d 4f 56 09 4d 6f 76 65  09 09 09 54 53 54 09 54  |MOV.Move...TST.T|
00000310  65 73 74 20 4d 61 73 6b  65 64 0a 23 74 61 62 0a  |est Masked.#tab.|
00000320  0a 20 3c 42 69 74 20 70  61 74 74 65 72 6e 73 3d  |. <Bit patterns=|
00000330  3e 62 69 74 73 3e 20 3c  43 6f 6e 64 69 74 69 6f  |>bits> <Conditio|
00000340  6e 20 63 6f 64 65 73 3d  3e 63 6f 6e 64 3e 20 3c  |n codes=>cond> <|
00000350  53 20 73 75 66 66 69 78  3d 3e 53 3e 20 3c 20 52  |S suffix=>S> < R|
00000360  64 20 3e 20 3c 20 52 6e  20 3e 20 3c 20 4f 70 32  |d > < Rn > < Op2|
00000370  20 3e 00 00 44 41 54 41  c0 03 00 00 43 6f 6e 64  | >..DATA....Cond|
00000380  69 74 69 6f 6e 20 63 6f  64 65 73 0a 41 6c 6c 20  |ition codes.All |
00000390  69 6e 73 74 72 75 63 74  69 6f 6e 73 20 61 72 65  |instructions are|
000003a0  20 63 6f 6e 64 69 74 69  6f 6e 61 6c 6c 79 20 65  | conditionally e|
000003b0  78 65 63 75 74 65 64 2e  20 49 66 20 74 68 65 20  |xecuted. If the |
000003c0  63 6f 6e 64 69 74 69 6f  6e 20 69 6e 20 74 68 65  |condition in the|
000003d0  20 74 6f 70 20 66 6f 75  72 20 62 69 74 73 20 6f  | top four bits o|
000003e0  66 20 74 68 65 20 69 6e  73 74 72 75 63 74 69 6f  |f the instructio|
000003f0  6e 20 69 73 20 6e 6f 74  20 6d 65 74 2c 20 74 68  |n is not met, th|
00000400  65 6e 20 65 76 65 6e 20  69 6c 6c 65 67 61 6c 20  |en even illegal |
00000410  69 6e 73 74 72 75 63 74  69 6f 6e 73 20 77 69 6c  |instructions wil|
00000420  6c 20 68 61 76 65 20 6e  6f 20 65 66 66 65 63 74  |l have no effect|
00000430  2e 2e 2e 0a 0a 23 77 72  61 70 20 6f 66 66 3b 20  |.....#wrap off; |
00000440  74 61 62 0a 43 6f 6e 64  69 74 69 6f 6e 20 66 69  |tab.Condition fi|
00000450  65 6c 64 09 20 09 20 09  45 78 65 63 75 74 65 20  |eld. . .Execute |
00000460  49 46 0a 23 4c 69 6e 65  0a 20 20 30 30 30 30 09  |IF.#Line.  0000.|
00000470  45 51 09 3a 09 20 5a 09  09 28 65 71 75 61 6c 29  |EQ.:. Z..(equal)|
00000480  0a 20 20 30 30 30 31 09  4e 45 09 3a 09 7e 5a 09  |.  0001.NE.:.~Z.|
00000490  09 28 6e 6f 74 20 65 71  75 61 6c 29 0a 20 20 30  |.(not equal).  0|
000004a0  30 31 30 09 43 53 09 3a  09 20 43 09 09 28 75 6e  |010.CS.:. C..(un|
000004b0  73 69 67 6e 65 64 20 68  69 67 68 65 72 20 6f 72  |signed higher or|
000004c0  20 73 61 6d 65 29 0a 20  20 30 30 31 31 09 43 43  | same).  0011.CC|
000004d0  09 3a 09 7e 43 09 09 28  75 6e 73 69 67 6e 65 64  |.:.~C..(unsigned|
000004e0  20 6c 6f 77 65 72 29 0a  20 20 30 31 30 30 09 4d  | lower).  0100.M|
000004f0  49 09 3a 09 20 4e 09 09  28 6e 65 67 61 74 69 76  |I.:. N..(negativ|
00000500  65 29 0a 20 20 30 31 30  31 09 50 4c 09 3a 09 7e  |e).  0101.PL.:.~|
00000510  4e 09 09 28 70 6f 73 69  74 69 76 65 20 6f 72 20  |N..(positive or |
00000520  7a 65 72 6f 29 0a 20 20  30 31 31 30 09 56 53 09  |zero).  0110.VS.|
00000530  3a 09 20 56 09 09 28 6f  76 65 72 66 6c 6f 77 29  |:. V..(overflow)|
00000540  0a 20 20 30 31 31 31 09  56 43 09 3a 09 7e 56 09  |.  0111.VC.:.~V.|
00000550  09 28 6e 6f 20 6f 76 65  72 66 6c 6f 77 29 0a 20  |.(no overflow). |
00000560  20 31 30 30 30 09 48 49  09 3a 09 20 43 20 61 6e  | 1000.HI.:. C an|
00000570  64 20 7e 5a 09 28 75 6e  73 69 67 6e 65 64 20 68  |d ~Z.(unsigned h|
00000580  69 67 68 65 72 29 0a 20  20 31 30 30 31 09 4c 53  |igher).  1001.LS|
00000590  09 3a 09 7e 43 20 6f 72  20 5a 09 09 28 75 6e 73  |.:.~C or Z..(uns|
000005a0  69 67 6e 65 64 20 6c 6f  77 65 72 20 6f 72 20 73  |igned lower or s|
000005b0  61 6d 65 29 0a 20 20 31  30 31 30 09 47 45 09 3a  |ame).  1010.GE.:|
000005c0  09 20 4e 20 3d 20 56 09  09 28 73 69 67 6e 65 64  |. N = V..(signed|
000005d0  20 68 69 67 68 65 72 20  6f 72 20 73 61 6d 65 29  | higher or same)|
000005e0  0a 20 20 31 30 31 31 09  4c 54 09 3a 09 20 4e 20  |.  1011.LT.:. N |
000005f0  21 3d 20 56 09 09 28 73  69 67 6e 65 64 20 6c 6f  |!= V..(signed lo|
00000600  77 65 72 29 0a 20 20 31  31 30 30 09 47 54 09 3a  |wer).  1100.GT.:|
00000610  09 7e 5a 20 61 6e 64 20  28 4e 20 3d 20 56 29 09  |.~Z and (N = V).|
00000620  28 73 69 67 6e 65 64 20  68 69 67 68 65 72 29 0a  |(signed higher).|
00000630  20 20 31 31 30 31 09 4c  45 09 3a 09 20 5a 20 6f  |  1101.LE.:. Z o|
00000640  72 20 28 4e 20 21 3d 20  56 29 09 28 73 69 67 6e  |r (N != V).(sign|
00000650  65 64 20 6c 6f 77 65 72  20 6f 72 20 73 61 6d 65  |ed lower or same|
00000660  29 0a 20 20 31 31 31 30  09 41 4c 09 3a 09 20 31  |).  1110.AL.:. 1|
00000670  09 09 28 61 6c 77 61 79  73 29 0a 20 20 31 31 31  |..(always).  111|
00000680  31 09 4e 56 09 3a 09 20  30 09 09 28 6e 65 76 65  |1.NV.:. 0..(neve|
00000690  72 29 0a 23 74 61 62 3b  20 77 72 61 70 20 6e 6f  |r).#tab; wrap no|
000006a0  6a 6f 69 6e 0a 0a 28 20  31 20 69 73 20 74 72 75  |join..( 1 is tru|
000006b0  65 2c 20 30 20 69 73 20  66 61 6c 73 65 2c 20 7e  |e, 0 is false, ~|
000006c0  20 69 73 20 4e 4f 54 20  29 0a 0a 4e 6f 74 65 3a  | is NOT )..Note:|
000006d0  20 54 68 65 20 4e 56 20  63 6f 64 65 20 73 68 6f  | The NV code sho|
000006e0  75 6c 64 6e 27 74 20 62  65 20 75 73 65 64 20 61  |uldn't be used a|
000006f0  6e 79 6d 6f 72 65 2e 20  49 66 20 79 6f 75 20 77  |nymore. If you w|
00000700  61 6e 74 20 61 20 6e 6f  2d 6f 70 2c 20 79 6f 75  |ant a no-op, you|
00000710  20 73 68 6f 75 6c 64 20  75 73 65 20 73 6f 6d 65  | should use some|
00000720  74 68 69 6e 67 20 6c 69  6b 65 20 4d 4f 56 20 52  |thing like MOV R|
00000730  30 2c 52 30 44 41 54 41  c4 00 00 00 4f 70 32 0a  |0,R0DATA....Op2.|
00000740  54 68 69 73 20 63 61 6e  20 74 61 6b 65 20 73 65  |This can take se|
00000750  76 65 72 61 6c 20 66 6f  72 6d 73 20 3a 0a 20 20  |veral forms :.  |
00000760  20 2d 09 52 65 67 0a 20  20 20 2d 09 52 65 67 20  | -.Reg.   -.Reg |
00000770  3c 73 68 69 66 74 3e 20  23 63 6f 6e 73 74 61 6e  |<shift> #constan|
00000780  74 0a 20 20 20 2d 09 52  65 67 20 3c 73 68 69 66  |t.   -.Reg <shif|
00000790  74 3e 20 52 65 67 0a 09  28 4e 6f 74 65 3a 20 54  |t> Reg..(Note: T|
000007a0  68 69 73 20 74 61 6b 65  73 20 61 6e 20 65 78 74  |his takes an ext|
000007b0  72 61 20 63 6c 6f 63 6b  20 63 79 63 6c 65 29 0a  |ra clock cycle).|
000007c0  20 20 20 2d 09 23 63 6f  6e 73 74 61 6e 74 0a 09  |   -.#constant..|
000007d0  28 20 6f 66 20 74 68 65  20 66 6f 72 6d 20 42 79  |( of the form By|
000007e0  74 65 20 52 4f 52 20 6e  2a 32 2c 20 6e 20 69 73  |te ROR n*2, n is|
000007f0  20 30 2e 2e 31 35 20 29  44 41 54 41 6e 01 00 00  | 0..15 )DATAn...|
00000800  52 31 35 0a 20 20 33 20  20 20 20 20 20 20 20 20  |R15.  3         |
00000810  32 20 20 20 20 20 20 20  20 20 31 0a 20 31 30 39  |2         1. 109|
00000820  38 37 36 35 34 33 32 31  30 39 38 37 36 35 34 33  |8765432109876543|
00000830  32 31 30 39 38 37 36 35  34 33 32 31 30 0a 25 4e  |2109876543210.%N|
00000840  5a 43 4f 49 46 2e 2e 2e  2e 70 72 6f 67 72 61 6d  |ZCOIF....program|
00000850  2e 63 6f 75 6e 74 65 72  2e 2e 2e 2e 2e 4d 4d 0a  |.counter.....MM.|
00000860  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000870  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 30  |               0|
00000880  30 20 3d 20 55 73 65 72  20 6d 6f 64 65 0a 20 20  |0 = User mode.  |
00000890  20 20 20 20 46 49 52 51  20 44 69 73 61 62 6c 65  |    FIRQ Disable|
000008a0  20 20 20 20 20 20 20 20  20 20 20 20 20 30 31 20  |             01 |
000008b0  3d 20 46 49 52 51 20 6d  6f 64 65 0a 20 20 20 20  |= FIRQ mode.    |
000008c0  20 49 52 51 20 44 69 73  61 62 6c 65 20 20 20 20  | IRQ Disable    |
000008d0  20 20 20 20 20 20 20 20  20 20 20 31 30 20 3d 20  |           10 = |
000008e0  49 52 51 20 6d 6f 64 65  0a 20 20 20 20 4f 76 65  |IRQ mode.    Ove|
000008f0  72 66 6c 6f 77 20 20 20  20 20 20 20 20 20 20 20  |rflow           |
00000900  20 20 20 20 20 20 20 20  31 31 20 3d 20 53 75 70  |        11 = Sup|
00000910  65 72 76 69 73 6f 72 20  6d 6f 64 65 0a 20 20 20  |ervisor mode.   |
00000920  43 61 72 72 79 20 2f 20  4e 6f 74 20 62 6f 72 72  |Carry / Not borr|
00000930  6f 77 20 2f 20 52 6f 74  61 74 65 20 45 78 74 65  |ow / Rotate Exte|
00000940  6e 64 0a 20 20 5a 65 72  6f 0a 20 4e 65 67 61 74  |nd.  Zero. Negat|
00000950  69 76 65 20 2f 20 53 69  67 6e 65 64 20 6c 65 73  |ive / Signed les|
00000960  73 20 74 68 61 6e 00 00  44 41 54 41 77 00 00 00  |s than..DATAw...|
00000970  52 64 0a 52 64 20 63 61  6e 20 62 65 20 61 6e 79  |Rd.Rd can be any|
00000980  20 6f 66 20 74 68 65 20  72 65 67 69 73 74 65 72  | of the register|
00000990  73 20 66 72 6f 6d 20 52  30 20 74 6f 20 52 31 35  |s from R0 to R15|
000009a0  2e 20 49 66 20 52 64 20  3d 20 52 31 35 20 74 68  |. If Rd = R15 th|
000009b0  65 6e 20 6f 6e 6c 79 20  74 68 65 20 50 43 20 62  |en only the PC b|
000009c0  69 74 73 20 77 69 6c 6c  20 62 65 20 73 65 74 2c  |its will be set,|
000009d0  20 6e 6f 74 20 74 68 65  20 66 6c 61 67 73 2e 00  | not the flags..|
000009e0  44 41 54 41 88 00 00 00  52 6e 0a 52 6e 20 63 61  |DATA....Rn.Rn ca|
000009f0  6e 20 62 65 20 61 6e 79  20 6f 66 20 74 68 65 20  |n be any of the |
00000a00  72 65 67 69 73 74 65 72  73 20 66 72 6f 6d 20 52  |registers from R|
00000a10  30 20 74 6f 20 52 31 35  2e 20 49 66 20 52 6e 20  |0 to R15. If Rn |
00000a20  3d 20 52 31 35 20 74 68  65 6e 20 6f 6e 6c 79 20  |= R15 then only |
00000a30  74 68 65 20 50 43 20 62  69 74 73 20 61 72 65 20  |the PC bits are |
00000a40  75 73 65 64 2e 20 54 68  65 20 66 6c 61 67 20 62  |used. The flag b|
00000a50  69 74 73 20 77 69 6c 6c  20 61 70 70 65 61 72 20  |its will appear |
00000a60  63 6c 65 61 72 65 64 2e  44 41 54 41 b0 00 00 00  |cleared.DATA....|
00000a70  53 0a 46 6c 61 67 73 20  77 69 6c 6c 20 6f 6e 6c  |S.Flags will onl|
00000a80  79 20 62 65 20 75 70 64  61 74 65 64 20 69 66 20  |y be updated if |
00000a90  74 68 69 73 20 69 73 20  70 72 65 73 65 6e 74 2e  |this is present.|
00000aa0  20 54 68 65 20 53 20 66  6c 61 67 20 69 73 20 69  | The S flag is i|
00000ab0  6d 70 6c 69 63 69 74 20  69 6e 20 43 4d 50 2c 20  |mplicit in CMP, |
00000ac0  43 4d 4e 2c 20 54 45 51  20 61 6e 64 20 54 53 54  |CMN, TEQ and TST|
00000ad0  0a 0a 20 20 53 55 42 53  20 52 31 2c 52 31 2c 52  |..  SUBS R1,R1,R|
00000ae0  32 09 09 3b 0a 20 20 41  44 44 20 20 52 31 2c 52  |2..;.  ADD  R1,R|
00000af0  31 2c 52 33 09 09 3b 20  0a 20 20 42 65 71 20 20  |1,R3..; .  Beq  |
00000b00  78 78 78 09 09 3b 20 6a  75 6d 70 20 69 66 20 52  |xxx..; jump if R|
00000b10  31 2d 52 32 20 3d 20 30  44 41 54 41 41 01 00 00  |1-R2 = 0DATAA...|
00000b20  53 68 69 66 74 0a 54 68  65 20 73 68 69 66 74 20  |Shift.The shift |
00000b30  74 79 70 65 73 20 61 72  65 20 3a 0a 20 20 4c 53  |types are :.  LS|
00000b40  4c 09 4c 6f 67 69 63 61  6c 20 53 68 69 66 74 20  |L.Logical Shift |
00000b50  4c 65 66 74 0a 20 20 4c  53 52 09 4c 6f 67 69 63  |Left.  LSR.Logic|
00000b60  61 6c 20 53 68 69 66 74  20 52 69 67 68 74 0a 20  |al Shift Right. |
00000b70  20 41 53 52 09 41 72 69  74 68 6d 65 74 69 63 20  | ASR.Arithmetic |
00000b80  53 68 69 66 74 20 52 69  67 68 74 0a 20 20 52 4f  |Shift Right.  RO|
00000b90  52 09 52 4f 74 61 74 65  20 52 69 67 68 74 0a 20  |R.ROtate Right. |
00000ba0  20 52 52 58 09 52 6f 74  61 74 65 20 52 69 67 68  | RRX.Rotate Righ|
00000bb0  74 20 65 58 74 65 6e 64  65 64 0a 0a 52 52 58 20  |t eXtended..RRX |
00000bc0  69 73 20 73 70 65 63 69  61 6c 2e 20 49 74 20 69  |is special. It i|
00000bd0  73 20 61 20 72 6f 74 61  74 65 20 62 79 20 6f 6e  |s a rotate by on|
00000be0  65 2c 20 77 68 65 72 65  20 62 69 74 20 33 31 20  |e, where bit 31 |
00000bf0  3d 20 6f 6c 64 20 63 61  72 72 79 20 61 6e 64 20  |= old carry and |
00000c00  6e 65 77 20 63 61 72 72  79 20 3d 20 6f 6c 64 20  |new carry = old |
00000c10  62 69 74 20 30 2e 0a 0a  46 6f 72 20 61 6c 6c 20  |bit 0...For all |
00000c20  73 68 69 66 74 73 20 74  68 65 20 63 61 72 72 79  |shifts the carry|
00000c30  20 66 6c 61 67 20 69 73  20 73 65 74 20 74 6f 20  | flag is set to |
00000c40  74 68 65 20 6c 61 73 74  20 62 69 74 20 73 68 69  |the last bit shi|
00000c50  66 74 65 64 20 6f 75 74  2e 00 00 00 44 41 54 41  |fted out....DATA|
00000c60  84 07 00 00 42 69 74 20  70 61 74 74 65 72 6e 73  |....Bit patterns|
00000c70  0a 23 77 72 61 70 20 6f  66 66 3b 20 66 63 6f 64  |.#wrap off; fcod|
00000c80  65 0a 20 33 20 33 20 32  20 32 20 32 20 32 20 32  |e. 3 3 2 2 2 2 2|
00000c90  20 32 20 32 20 32 20 32  20 32 20 31 20 31 20 31  | 2 2 2 2 2 1 1 1|
00000ca0  20 31 20 31 20 31 20 31  20 31 20 31 20 31 0a 20  | 1 1 1 1 1 1 1. |
00000cb0  31 20 30 20 39 20 38 20  37 20 36 20 35 20 34 20  |1 0 9 8 7 6 5 4 |
00000cc0  33 20 32 20 31 20 30 20  39 20 38 20 37 20 36 20  |3 2 1 0 9 8 7 6 |
00000cd0  35 20 34 20 33 20 32 20  31 20 30 20 39 20 38 20  |5 4 3 2 1 0 9 8 |
00000ce0  37 20 36 20 35 20 34 20  33 20 32 20 31 20 30 0a  |7 6 5 4 3 2 1 0.|
00000cf0  20 2d 2d 2d 2d 2d 2d 2d  2b 2d 2d 2d 2b 2d 2b 2d  | -------+---+-+-|
00000d00  2d 2d 2d 2d 2d 2d 2b 2d  2b 2d 2d 2d 2d 2d 2d 2d  |------+-+-------|
00000d10  2b 2d 2d 2d 2d 2d 2d 2d  2b 2d 2d 2d 2d 2d 2d 2d  |+-------+-------|
00000d20  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000d30  0a 7c 20 63 6f 6e 64 20  20 7c 30 20 30 7c 69 7c  |.| cond  |0 0|i||
00000d40  20 6f 70 63 6f 64 20 7c  73 7c 20 20 20 52 6e 20  | opcod |s|   Rn |
00000d50  20 7c 20 20 20 52 64 20  20 7c 20 20 20 20 20 20  | |   Rd  |      |
00000d60  20 20 4f 70 65 72 61 6e  64 32 20 20 20 20 20 20  |  Operand2      |
00000d70  20 7c 20 20 44 61 74 61  20 70 72 6f 63 65 73 73  | |  Data process|
00000d80  69 6e 67 0a 2b 2d 2d 2d  2d 2d 2d 2d 2b 2d 2d 2d  |ing.+-------+---|
00000d90  2b 2d 2b 2d 2d 2d 2d 2d  2b 2d 2b 2d 2b 2d 2d 2d  |+-+-----+-+-+---|
00000da0  2d 2d 2d 2d 2b 2d 2d 2d  2d 2d 2d 2d 2b 2d 2d 2d  |----+-------+---|
*
00000dc0  2d 2d 2d 2d 2b 0a 7c 20  63 6f 6e 64 20 20 7c 30  |----+.| cond  |0|
00000dd0  20 30 20 30 20 30 20 30  20 30 7c 61 7c 73 7c 20  | 0 0 0 0 0|a|s| |
00000de0  20 20 52 64 20 20 7c 20  20 20 52 6e 20 20 7c 20  |  Rd  |   Rn  | |
00000df0  20 20 52 73 20 20 7c 31  20 30 20 30 20 31 7c 20  |  Rs  |1 0 0 1| |
00000e00  20 20 52 6d 20 20 7c 20  20 4d 75 6c 74 69 70 6c  |  Rm  |  Multipl|
00000e10  79 0a 2b 2d 2d 2d 2d 2d  2d 2d 2b 2d 2d 2d 2d 2d  |y.+-------+-----|
00000e20  2d 2d 2b 2d 2d 2d 2b 2d  2b 2d 2d 2d 2d 2d 2d 2d  |--+---+-+-------|
00000e30  2d 2d 2b 2d 2d 2d 2d 2d  2d 2d 2b 2d 2d 2d 2d 2d  |--+-------+-----|
*
00000e50  2d 2d 2b 0a 7c 20 63 6f  6e 64 20 20 7c 30 20 30  |--+.| cond  |0 0|
00000e60  20 30 20 31 7c 78 20 78  20 78 20 78 20 78 20 78  | 0 1|x x x x x x|
00000e70  20 78 20 78 20 78 20 78  20 78 20 78 20 78 20 78  | x x x x x x x x|
00000e80  20 78 20 78 20 31 20 78  20 78 20 31 20 78 20 78  | x x 1 x x 1 x x|
00000e90  20 78 20 78 7c 20 20 55  6e 64 65 66 69 6e 65 64  | x x|  Undefined|
00000ea0  0a 2b 2d 2d 2d 2d 2d 2d  2d 2b 2d 2d 2d 2b 2d 2b  |.+-------+---+-+|
00000eb0  2d 2b 2d 2b 2d 2b 2d 2b  2d 2b 2d 2d 2d 2d 2d 2d  |-+-+-+-+-+------|
00000ec0  2d 2b 2d 2d 2d 2d 2d 2d  2d 2b 2d 2d 2d 2d 2d 2d  |-+-------+------|
00000ed0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000ee0  2d 2b 0a 7c 20 63 6f 6e  64 20 20 7c 30 20 31 7c  |-+.| cond  |0 1||
00000ef0  69 7c 50 7c 55 7c 42 7c  57 7c 4c 7c 20 20 20 52  |i|P|U|B|W|L|   R|
00000f00  6e 20 20 7c 20 20 20 52  64 20 20 7c 20 20 20 20  |n  |   Rd  |    |
00000f10  20 20 20 20 20 4f 66 66  73 65 74 20 20 20 20 20  |     Offset     |
00000f20  20 20 20 7c 20 20 4c 44  52 20 2f 20 53 54 52 0a  |   |  LDR / STR.|
00000f30  2b 2d 2d 2d 2d 2d 2d 2d  2b 2d 2d 2d 2b 2d 2b 2d  |+-------+---+-+-|
00000f40  2b 2d 2b 2d 2b 2d 2b 2d  2b 2d 2d 2d 2d 2d 2d 2d  |+-+-+-+-+-------|
00000f50  2b 2d 2d 2d 2d 2d 2d 2d  2b 2d 2d 2d 2d 2d 2d 2d  |+-------+-------|
00000f60  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000f70  2b 0a 7c 20 63 6f 6e 64  20 20 7c 30 20 31 20 31  |+.| cond  |0 1 1|
00000f80  7c 78 20 78 20 78 20 78  20 78 20 78 20 78 20 78  ||x x x x x x x x|
00000f90  20 78 20 78 20 78 20 78  20 78 20 78 20 78 20 78  | x x x x x x x x|
00000fa0  20 78 20 78 20 78 20 78  20 31 20 78 20 78 20 78  | x x x x 1 x x x|
00000fb0  20 78 7c 20 20 55 6e 64  65 66 69 6e 65 64 0a 2b  | x|  Undefined.+|
00000fc0  2d 2d 2d 2d 2d 2d 2d 2b  2d 2d 2d 2d 2d 2b 2d 2b  |-------+-----+-+|
00000fd0  2d 2b 2d 2b 2d 2b 2d 2b  2d 2d 2d 2d 2d 2d 2d 2b  |-+-+-+-+-------+|
00000fe0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000ff0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2b  |---------------+|
00001000  0a 7c 20 63 6f 6e 64 20  20 7c 31 20 30 20 30 7c  |.| cond  |1 0 0||
00001010  50 7c 55 7c 53 7c 57 7c  4c 7c 20 20 20 52 6e 20  |P|U|S|W|L|   Rn |
00001020  20 7c 20 20 20 20 20 20  20 20 20 52 65 67 69 73  | |         Regis|
00001030  74 65 72 20 6c 69 73 74  20 20 20 20 20 20 20 20  |ter list        |
00001040  20 7c 20 20 4c 44 4d 20  2f 20 53 54 4d 0a 2b 2d  | |  LDM / STM.+-|
00001050  2d 2d 2d 2d 2d 2d 2b 2d  2d 2d 2d 2d 2b 2d 2b 2d  |------+-----+-+-|
00001060  2b 2d 2b 2d 2b 2d 2b 2d  2d 2d 2d 2d 2d 2d 2b 2d  |+-+-+-+-------+-|
00001070  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00001080  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2b 0a  |--------------+.|
00001090  7c 20 63 6f 6e 64 20 20  7c 31 20 30 20 31 7c 4c  || cond  |1 0 1|L|
000010a0  7c 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  ||               |
000010b0  20 20 77 6f 72 64 20 6f  66 66 73 65 74 20 20 20  |  word offset   |
000010c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000010d0  7c 20 20 42 72 61 6e 63  68 0a 2b 2d 2d 2d 2d 2d  ||  Branch.+-----|
000010e0  2d 2d 2b 2d 2d 2d 2d 2d  2b 2d 2b 2d 2b 2d 2b 2d  |--+-----+-+-+-+-|
000010f0  2b 2d 2b 2d 2d 2d 2d 2d  2d 2d 2b 2d 2d 2d 2d 2d  |+-+-------+-----|
00001100  2d 2d 2b 2d 2d 2d 2d 2d  2d 2d 2b 2d 2d 2d 2d 2d  |--+-------+-----|
00001110  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2b 0a 7c 20 63 6f  |----------+.| co|
00001120  6e 64 20 20 7c 31 20 31  20 30 7c 50 7c 55 7c 4e  |nd  |1 1 0|P|U|N|
00001130  7c 57 7c 4c 7c 20 20 20  52 6e 20 20 7c 20 20 43  ||W|L|   Rn  |  C|
00001140  52 64 20 20 7c 20 20 43  70 23 20 20 7c 20 20 20  |Rd  |  Cp#  |   |
00001150  20 20 4f 66 66 73 65 74  20 20 20 20 7c 20 20 43  |  Offset    |  C|
00001160  6f 70 72 6f 63 20 44 61  74 61 20 54 72 61 6e 73  |oproc Data Trans|
00001170  66 65 72 0a 2b 2d 2d 2d  2d 2d 2d 2d 2b 2d 2d 2d  |fer.+-------+---|
00001180  2d 2d 2b 2d 2b 2d 2b 2d  2b 2d 2b 2d 2b 2d 2d 2d  |--+-+-+-+-+-+---|
00001190  2d 2d 2d 2d 2b 2d 2d 2d  2d 2d 2d 2d 2b 2d 2d 2d  |----+-------+---|
000011a0  2d 2d 2d 2d 2b 2d 2d 2d  2d 2d 2b 2d 2b 2d 2d 2d  |----+-----+-+---|
000011b0  2d 2d 2d 2d 2b 0a 7c 20  63 6f 6e 64 20 20 7c 31  |----+.| cond  |1|
000011c0  20 31 20 31 20 30 7c 20  4f 70 63 6f 64 20 7c 20  | 1 1 0| Opcod | |
000011d0  20 43 52 6e 20 20 7c 20  20 43 52 64 20 20 7c 20  | CRn  |  CRd  | |
000011e0  20 43 70 23 20 20 7c 20  20 43 50 20 7c 30 7c 20  | Cp#  |  CP |0| |
000011f0  20 43 52 6d 20 20 7c 20  20 43 6f 70 72 6f 63 20  | CRm  |  Coproc |
00001200  44 61 74 61 20 6f 70 0a  2b 2d 2d 2d 2d 2d 2d 2d  |Data op.+-------|
00001210  2b 2d 2d 2d 2d 2d 2d 2d  2b 2d 2d 2d 2d 2d 2b 2d  |+-------+-----+-|
00001220  2b 2d 2d 2d 2d 2d 2d 2d  2b 2d 2d 2d 2d 2d 2d 2d  |+-------+-------|
00001230  2b 2d 2d 2d 2d 2d 2d 2d  2b 2d 2d 2d 2d 2d 2b 2d  |+-------+-----+-|
00001240  2b 2d 2d 2d 2d 2d 2d 2d  2b 0a 7c 20 63 6f 6e 64  |+-------+.| cond|
00001250  20 20 7c 31 20 31 20 31  20 30 7c 4f 70 63 6f 64  |  |1 1 1 0|Opcod|
00001260  7c 4c 7c 20 20 43 52 6e  20 20 7c 20 20 20 52 64  ||L|  CRn  |   Rd|
00001270  20 20 7c 20 20 43 70 23  20 20 7c 20 20 43 50 20  |  |  Cp#  |  CP |
00001280  7c 31 7c 20 20 43 52 6d  20 20 7c 20 20 43 6f 70  ||1|  CRm  |  Cop|
00001290  72 6f 63 20 52 65 67 54  72 61 6e 73 0a 2b 2d 2d  |roc RegTrans.+--|
000012a0  2d 2d 2d 2d 2d 2b 2d 2d  2d 2d 2d 2d 2d 2b 2d 2d  |-----+-------+--|
000012b0  2d 2d 2d 2b 2d 2b 2d 2d  2d 2d 2d 2d 2d 2b 2d 2d  |---+-+-------+--|
000012c0  2d 2d 2d 2d 2d 2b 2d 2d  2d 2d 2d 2d 2d 2b 2d 2d  |-----+-------+--|
000012d0  2d 2d 2d 2b 2d 2b 2d 2d  2d 2d 2d 2d 2d 2b 0a 7c  |---+-+-------+.||
000012e0  20 63 6f 6e 64 20 20 7c  31 20 31 20 31 20 31 7c  | cond  |1 1 1 1||
000012f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001300  20 20 20 73 77 69 20 6e  75 6d 62 65 72 20 20 20  |   swi number   |
00001310  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 7c  |               ||
00001320  20 20 53 57 49 0a 20 2d  2d 2d 2d 2d 2d 2d 2b 2d  |  SWI. -------+-|
00001330  2d 2d 2d 2d 2d 2d 2b 2d  2d 2d 2d 2d 2d 2d 2d 2d  |------+---------|
00001340  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001360  2d 2d 2d 2d 2d 2d 0a 20  33 20 33 20 32 20 32 20  |------. 3 3 2 2 |
00001370  32 20 32 20 32 20 32 20  32 20 32 20 32 20 32 20  |2 2 2 2 2 2 2 2 |
00001380  31 20 31 20 31 20 31 20  31 20 31 20 31 20 31 20  |1 1 1 1 1 1 1 1 |
00001390  31 20 31 0a 20 31 20 30  20 39 20 38 20 37 20 36  |1 1. 1 0 9 8 7 6|
000013a0  20 35 20 34 20 33 20 32  20 31 20 30 20 39 20 38  | 5 4 3 2 1 0 9 8|
000013b0  20 37 20 36 20 35 20 34  20 33 20 32 20 31 20 30  | 7 6 5 4 3 2 1 0|
000013c0  20 39 20 38 20 37 20 36  20 35 20 34 20 33 20 32  | 9 8 7 6 5 4 3 2|
000013d0  20 31 20 30 0a 23 66 3b  20 77 72 61 70 20 6f 6e  | 1 0.#f; wrap on|
000013e0