ABCDEFGHIJ
1
LSC-8 ISA
2
Index Register Instructions
Load instructions do not affect any flag. The Inc and Dec instructions affect all flags except carry.
3
Accumulator Group Instructions
The result of an ALU instruction affect all flags. The rotation instructions only affect the carry flag.
4
Program Counter and Stack Control InstructionsSSS
Source Reg
5
Input/Output InstructionsDDD
Destination Reg
6
Machine Instructionsregisters
7
MnemonicLenOpcodeActionFlagsA000
8
MOV Rd, Rs111 DDD SSSRd = RsB001
9
MOV Rd, M111 DDD 111Rd = MemC010
10
MOV M, Rs111 111 SSSMem = RsD011
11
MVI Rd, Imm200 DDD 110Rd = Immed ValueE100
12
MVI M, Imm200 111 110Mem = Immed ValueH101
13
INC Rd100 DDD 000Rd = Rd+ 1 (Rd ≠ M)P, S, Z, xL110
14
DEC Rd100 DDD 001Rd = Rd- 1 (Rd ≠ M)P, S, Z, xMem111
15
PUSH Rs101 SSS 100Push SSS to Stack
16
PUSH M101 111 100Push Mem to stack
17
PUSH Imm200 110 010Push Imm to Stack
18
POP Rd101 DDD 110Pop to DDD from Stack
19
POP M101 111 110Pop to Mem from Stack
20
CLC/STC/CLI/STI100 FS0 101SET/CLR Flags: F - Flag (0=C, 1=I), S - State (0=CLR, 1=SET)
21
ADD A, Rs110 000 SSSA = A + RsP, S, Z, C
22
ADD A, M110 000 111A = A + MemP, S, Z, C
23
ADI A, Imm200 000 100A = A + Immed ValueP, S, Z, C
24
ADC A, Rs110 001 SSSA = A + Carry + RsP, S, Z, CFlag flip-flops are defined by C4C3:
carry (00 - overflow or underflow),
zero (01 - result is zero),
sign (10 - MSB of result is "1"),
parity (11 - parity is even).
25
ADC A, M110 001 111A = A + Carry + MemP, S, Z, C
26
ACI A, Imm200 001 100A = A + Carry + Immed ValueP, S, Z, C
27
SUB A, Rs110 010 SSSA = A - RsP, S, Z, C
28
SUB A, M110 010 111A = A - MemP, S, Z, C
29
SUI A, Imm200 010 100A = A - Immed ValueP, S, Z, C
30
SBB A, Rs110 011 SSSA = A - (Carry + Rs)P, S, Z, CM/IOS1S0Characteristics
31
SBB A, M110 011 111A = A - (Carry + Mem)P, S, Z, C111Interrupt Acknowledge
32
SCI A, Imm200 011 100A = A - (Carry + Immed Value)P, S, Z, C110Read I/O Port
33
ANA Rs110 100 SSSA = A ∧ RsP, S, Z, c0101Write I/O Port
34
ANA M110 100 111A = A ∧ MemP, S, Z, c0100None; Idle
35
ANI200 100 100A = A ∧ Immed ValueP, S, Z, c0011Halt
36
XRA Rs110 101 SSSA = A ⊕ RsP, S, Z, c0010Read Memory
37
XRA M110 101 111A = A ⊕ MemP, S, Z, c0001Write Memory
38
XRI200 101 100A = A ⊕ Immed ValueP, S, Z, c0000None; Idle
39
ORA Rs110 110 SSSA = A ∨ RsP, S, Z, c0
40
ORA M110 110 111A = A ∨ MemP, S, Z, c000xxmathДОБАВИТЬ!!!
41
ORI200 110 100A = A ∨ Immed ValueP, S, Z, c001xxlogicNOP
42
CMP Rs110 111 SSSCompare A with Rs, set flagsP, S, Z, C10xxrotateNOT
43
CMP M110 111 111Compare A with Mem, set flagsP, S, Z, C11xx
inc/dec
NEG
44
CPI200 111 100Compare A with Immed Value, set flagsP, S, Z, CTEST
45
RLC100 000 010Rotate A Left Oncex, x, x, C0000addMUL
46
RRC100 001 010Rotate A Right Oncex, x, x, C0001adcDIV
47
RAL100 010 010Rotate A Left Through Carry Oncex, x, x, C0010subSHR
48
RAR100 011 010Rotate A Right Through Carry Oncex, x, x, C0011sbbSHL
49
JMP300 111 000Unconditional Jump to immed address0100anaSAR
50
JNC, JAE, JNB301 000 000If carry = 0, jump to immed address0101xraSAL
51
JNZ, JNE301 001 000If result ≠ 0, jump to immed address0110oraпересмотреть
52
JNS301 010 000If sign = 0 (positive), jump to immed address0111cmpRET Cond
53
JPO, JNS301 011 000If parity = 0 (odd), jump to immed address1000rlcCALL Cond
54
JC, JB, JNAE301 100 000If carry = 1, jump to immed address1001rrc
55
JZ, JE301 101 000If result = 0, jump to immed address1010ral
56
JS301 110 000If sign = 1 (negative), jump to immed address1011rar
57
JPE, JP301 111 000If parity = 1 (even), jump to immed address1100INC
58
CALL300 111 001
Save current address onto the stack and jump to immed address
1110DEC
59
CNC301 000 010If carry = 0, save current address and jump to immed address
60
CNZ301 001 010
If result ≠ 0, save current address and jump to immed address
61
CP301 010 010
If sign = 0 (positive), save current address and jump to immed address
62
CPO301 011 010
If parity = 0 (odd), save current address and jump to immed address
63
CC301 100 010If carry = 1, save current address and jump to immed address
64
CZ301 101 010
If result = 0, save current address and jump to immed address
65
CM301 110 010
If sign = 1 (negative), save current address and jump to immed address
66
CPE301 111 010
If parity = 1 (even), save current address and jump to immed address
67
RET100 100 010Unconditionally return, down one stack level
68
RNC100 000 011If carry = 0, return, down one stack level
69
RNZ100 001 011If result ≠ 0, return, down one stack level
70
RP100 010 011If sign = 0 (positive), return, down one stack level
71
RPO100 011 011If parity = 0 (odd), return, down one stack level
72
RC100 100 011If carry = 1, return, down one stack level
73
RZ100 101 011If result = 0, return, down one stack level
74
RM100 110 011If sign = 1 (negative), return, down one stack level
75
RPE100 111 011If parity = 1 (even), return, down one stack level
76
IN101 0MM MM1A = PORT[MMMM]
77
OUT101 1MM MM1PORT[MMM] = A
78
HLT111 111 111Enter STOPPED state; remain there until interrupted
79
INT200 101 010
80
IRET100 111 010