Программа, написанная на языке ассемблера – с использованием символических обозначений всех ее полей, для выполнения в микропроцессоре должна быть преобразована в машинные коды. Коды операций - первые байты всех команд микропроцессора КР580ВМ80А в шестнадцатеричном виде могут быть определены с помощью таблицы 6. Формат первого байта изображен на рис. 5 и описан в разделе “Программная модель микропроцессора”. Вторые и третьи байты команд, если они имеются, содержат адреса, данные или номера портов ввода-вывода.
Для определения кода операции необходимо найти нужную команду в таблице, взять шестнадцатеричную цифру, соответствующую номеру столбца, в котором находится команда, и дополнить ее номером строки. Например, для команды LXI H, 8300H (символ H показывает, что число 8300 задано в шестнадцатеричном коде), находящейся в столбце с номером 2 и строке с номером 1, первый байт команды – 21. Второй байт этой трехбайтной команды – 00, третий – 83, так как сначала указывается младшая часть 16-битных данных или адреса, а затем уже старшая часть. Полный код команды LXI H, 8300H в шестнадцатеричном виде – 21 00 83.
Код однобайтной команды ADD B, находящейся в столбце с номером 8 и строке с номером 0 – 80. Код двухбайтной команды SUI 25 – D6 19, так как 25=19H (шестнадцатеричный код числа 25 равен 19) .
| 0
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
| A
| B
| C
| D
| E
| F
|
| 0
| NOP
| -
| -
| -
| MOV
B, B
| MOV
D, B
| MOV
H, B
| MOV
M, B
| ADD
B
| SUB
B
| ANA
B
| ORA
B
| RNZ
| RNC
| RPO
| RP
| 0
| 1
| LXI
B, D16
| LXI
D,D16
| LXI
H,D16
| LXI
SP,D16
| MOV
B, C
| MOV
D, C
| MOV
H, C
| MOV
M, C
| ADD
C
| SUB
C
| ANA
C
| ORA
C
| POP
B
| POP
D
| POP
H
| POP
PSW
| 1
| 2
| STAX
B
| STAX
D
| SHLD
ADR
| STA
ADR
| MOV
B, D
| MOV
D, D
| MOV
H, D
| MOV
M, D
| ADD
D
| SUB
D
| ANA
D
| ORA
D
| JNZ
ADR
| JNC
ADR
| JPO
ADR
| JP
ADR
| 2
| 3
| INX
B
| INX
D
| INX
H
| INX
SP
| MOV
B, E
| MOV
D, E
| MOV
H, E
| MOV
M, E
| ADD
E
| SUB
E
| ANA
E
| ORA
E
| JMP
ADR
| OUT
N
| XTHL
| DI
| 3
| 4
| INR
B
| INR
D
| INR
H
| INR
M
| MOV
B, H
| MOV
D, H
| MOV
H, H
| MOV
M, H
| ADD
H
| SUB
H
| ANA
H
| ORA
H
| CNZ
ADR
| CNC
ADR
| CPO
ADR
| CP
ADR
| 4
| 5
| DCR
B
| DCR
D
| DCR
H
| DCR
M
| MOV
B, L
| MOV
D, L
| MOV
H, L
| MOV
M, L
| ADD
L
| SUB
L
| ANA
L
| ORA
L
| PUSH
B
| PUSH
D
| PUSH
H
| PUSH
PSW
| 5
| 6
| MVI
B, D8
| MVI
D, D8
| MVI
H, D8
| MVI
M, D8
| MOV
B, M
| MOV
D, M
| MOV
H, M
| HLT
| ADD
M
| SUB
M
| ANA
M
| ORA
M
| ADI
D8
| SUI
D8
| ANI
D8
| ORI
D8
| 6
| 7
| RLC
| RAL
| DAA
| STC
| MOV
B, A
| MOV
D, A
| MOV
H, A
| MOV
M, A
| ADD
A
| SUB
A
| ANA
A
| ORA
A
| RST
0
| RST
2
| RST
4
| RST
6
| 7
| 8
| -
| -
| -
| -
| MOV
C, B
| MOV
E, B
| MOV
L, B
| MOV
A, B
| ADC
B
| SBB
B
| XRA
B
| CMP
B
| RZ
| RC
| RPE
| RM
| 8
| 9
| DAD
B
| DAD
D
| DAD
H
| DAD
SP
| MOV
C, C
| MOV
E, C
| MOV
L, C
| MOV
A, C
| ADC
C
| SBB
C
| XRA
C
| CMP
C
| RET
| -
| PCHL
| SPHL
| 9
| A
| LDAX
B
| LDAX
D
| LHLD
ADR
| LDA
ADR
| MOV
C, D
| MOV
E, D
| MOV
L, D
| MOV
A, D
| ADC
D
| SBB
D
| XRA
D
| CMP
D
| JZ
ADR
| JC
ADR
| JPE
ADR
| JM
ADR
| A
| B
| DCX
B
| DCX
D
| DCX
H
| DCX
SP
| MOV
C, E
| MOV
E, E
| MOV
L, E
| MOV
A, E
| ADC
E
| SBB
E
| XRA
E
| CMP
E
| -
| IN
N
| XCHG
| EI
| B
| C
| INR
C
| INR
E
| INR
L
| INR
A
| MOV
C, H
| MOV
E, H
| MOV
L, H
| MOV
A, H
| ADC
H
| SBB
H
| XRA
H
| CMP
H
| CZ
ADR
| CC
ADR
| CPE
ADR
| CM
ADR
| C
| D
| DCR
C
| DCR
E
| DCR
L
| DCR
A
| MOV
C, L
| MOV
E, L
| MOV
L, L
| MOV
A, L
| ADC
L
| SBB
L
| XRA
L
| CMP
L
| CALL
ADR
| -
| -
| -
| D
| E
| MVI
C, D8
| MVI
E, D8
| MVI
L, D8
| MVI
A, D8
| MOV
C, M
| MOV
E, M
| MOV
L, M
| MOV
A, M
| ADC
M
| SBB
M
| XRA
M
| CMP
M
| ACI
D8
| SBI
D8
| XRI
D8
| CPI
D8
| E
| F
| RRC
| RAR
| CMA
| CMC
| MOV
C, A
| MOV
E, A
| MOV
L, A
| MOV
A, A
| ADC
A
| SBB
A
| XRA
A
| CMP
A
| RST
1
| RST
3
| RST
5
| RST
7
| F
|
| 0
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
| A
| B
| C
| D
| E
| F
|
| Табл. 6. Коды команд микропроцессора КР580ВМ80А
|