Результати роботи
Щоб вивести на індикатор за адресою #83FA букву G, необхідно на початку завантажити в акумулятор константу 7D.
Щоб вивести на індикатор за адресою #83FB букву Q, необхідно на початку завантажити в акумулятор константу BF.
A
G |
E C
D H
7 6 5 4 3 2 1 0
|
|
|
|
|
|
|
|
H G F E D C B A
Буква G висвітлюється на індикаторі, коли в сегментах A, C, D, E, F, G – 1.
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0111 1101 => 7D
Буква Q висвітлюється на індикаторі, коли в сегментах A, B, C, D, E, F, H – 1.
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1011 1111 => BF
Додаток а
Мнемо-код команди |
Задіяні регі-стри |
Код команди |
Цикл |
Адре-сація |
Байт |
Коментарі |
||||||||
КОМАНДИ ПЕРЕСИЛАННЯ |
||||||||||||||
MOV
|
A,A A,B A,C A,D A,E A,H A,L |
7F 78 79 7A 7B 7C 7D |
1 |
пряма |
1 |
Вміст регістра А B C D E H L пересилається в регістр А. |
||||||||
B,A B,B B,C B,D B,E B,H B,L |
47 40 41 42 43 44 45 |
1 |
пряма |
1 |
Вміст регістра А B C D E H L пересилається в регістр B. |
|||||||||
C,A C,B C,C C,D C,E C,H C,L |
4F 48 49 4A 4B 4C 4D |
1 |
пряма |
1 |
Вміст регістра A B C D E H L пересилається в регістр C. |
|||||||||
D,A D,B D,C D,D D,E D,H D,L |
57 50 51 52 53 54 55 |
1 |
пряма |
1 |
Вміст регістра A B C D E H L пересилається в регістр D. |
|||||||||
E,A E,B E,C E,D E,E E,H E,L |
5F 58 59 5A 5B 5C 5D |
1 |
пряма |
1 |
Вміст регістра A B C D E H L пересилається в регістр E. |
|||||||||
H,A H,B H,C H,D H,E H,H H,L |
67 60 61 62 63 64 65 |
1 |
пряма |
1 |
Вміст регістра A B C D E H L пересилається в регістр H. |
|||||||||
L,A L,B L,C L,D L,E L,H L,L |
6F 68 69 6A 6B 6C 6D |
1 |
пряма |
1 |
Вміст регістра A B C D E H L пересилається в регістр L. |
|||||||||
A,M B,M C,M D,M E,M H,M L,M |
7E 46 4E 56 5E 66 6E |
2 |
непряма |
1 |
Вміст комірки пам’яті M пересилається в регістр A B C D E H L. |
|||||||||
M,A M,B M,C M,D M,E M,H M,L |
77 70 71 72 73 74 75 |
1 |
пряма |
1 |
Вміст регістра А B C D E H L пересилається в комірку пам’яті М. |
|||||||||
КОМАНДИ БЕЗПОСЕРЕДНЬОЇ ПЕРЕСИЛКИ |
||||||||||||||
MVI |
A,байт B,байт C,байт D,байт E,байт H,байт L,байт M, байт |
3E 06 0E 16 1E 26 2E 36 |
2
3 |
безпосе-редня |
2 |
Пересилання 16-кової константи в регістр А B C D E H L в комірку пам’яті М. |
||||||||
КОМАНДИ БЕЗПОСЕРЕДНЬОГО ЗАВАНТАЖЕННЯ РЕГІСТРІВ |
||||||||||||||
LXI |
B,2 байта D,2 байта H,2 байта SP,2байта |
01 11 21 31 |
5 |
безпосе-редня |
3 |
Числова шістнадцяткова команда, яка може займати 2 байти завантажується в регістрову пару ВС DE HL стек, вказівник якого SP. |
||||||||
КОМАНДИ ЗАГРУЗКИ/ЗБЕРЕЖЕННЯ |
||||||||||||||
LDAX |
B D H |
0A 1A 7E |
2 |
непряма |
1 |
Вміст комірки пам’яті, адреса якої вказана в парі регістрів BC DE HL пересилається в акумулятор. |
||||||||
LHLD |
[адреса] |
2A |
4 |
|
3 |
Вміст комірки пам’яті, адреса якої вказана в другому або третьому байтах команди, пересилається в регістр L. Вміст комірки пам’яті з наступною адресою ((адр.)+1) пересилається в регістр H |
||||||||
LDA |
[адреса] |
3A |
4 |
непряма |
3 |
Вміст комірки пам’яті, адреса якої вказана в другому або третьому байтах команди, завантажується в акумулятор. |
||||||||
STAX |
B D |
02 12 |
2 |
непряма |
2 |
Вміст акумулятора пересилається в комірку пам’яті , адреса якої встановлений в парі регістрів BC DE. |
||||||||
SHLD |
[адреса] |
22 |
5 |
безпосе-редня |
3 |
Вміст регістра L пересилається в комірку пам’яті, адреса якої вказана в другому і третьому байтах команди. Вміст регістра H пересилається в наступну комірку пам’яті. |
||||||||
STA |
[адреса] |
32 |
4 |
безпосе-редня |
3 |
Вміст акумулятора пересилається в комірку пам’яті, адреса якої вказана в другому і третьому байтах команди. |
||||||||
КОМАНДИ ДОДАВАННЯ |
||||||||||||||
ADD |
A B C D E H L M |
87 80 81 82 83 84 85 86 |
2 |
непряма |
1 |
До вмісту акумулятора додаємо вміст регістру А B C D E H L комірки пам’яті М, адреса якої міститься а регістрі HL, і результат в акумуляторі. |
||||||||
ADC |
A B C D E H L M |
8F 88 89 8A 8B 8C 8D 8E |
1 |
непряма |
1 |
Додавання з переносом, до вмісту акумулятора додаємо вміст регістру A B C D E H L комірки пам’яті М, адреса якої міститься в регістрі HL, і біт основного переносу від попередньої операції. |
||||||||
ADI |
байт |
С6 |
2 |
безпосе-редня |
2 |
Числова константа додається до вмісту акумулятора, результат операції в акумуляторі. |
||||||||
ACI |
байт |
CE |
2 |
безпосе-редня |
2 |
Числова константа додається до вмісту акумулятора і біт основного переносу від попередньої операції, результат операції в акумуляторі. |
КОМАНДИ ІНКРЕМЕНТ |
||||||
INR |
A B C D E H L M |
3C 04 0C 14 1C 24 2C 34 |
1 |
непряма |
1 |
Вміст регістра A B C D E H L комірки пам’яті , адреса якої міститься в регістрі HL збільшити на 1. |
INX |
B D H SP |
03 13 23 33 |
1 |
непряма |
1 |
На одиницю збільшуємо регістрову пару BC DE HL вміст стеку вказівник якого SP. |
КОМАНДИ ДИКРЕМЕНТ |
||||||
DCR |
A B C D E H L M |
3D 05 0D 15 1D 25 2D 35 |
1 |
непряма |
1 |
Зменшення вмісту регістра А B C D E H L вмісту комірки пам’яті M, адреса якої міститься в регістрі HL, на 1. |
DCX |
B D H SP |
0B 1B 2B 3B |
1 |
непряма |
1 |
Зменшення вмісту регістрової пари BC DE HL вмісту стеку, вказівник якого SP на 1. |
ПОДВІЙНЕ ДОДАВАННЯ |
||||||
DAD |
B D H SP |
09 19 29 39 |
3 |
непряма |
1 |
Вміст пари регістрів BC DE HL Вміст стеку, вказівник якого SP, додається до вмісту регістрів H і L . Результат поміщається в пару регістрів H, L. |
КОМАНДИ ВІДНІМАННЯ |
||||||
SUB |
A B C D E H L M |
97 90 91 92 93 94 95 96 |
1 |
непряма |
1 |
Від вмісту акумулятора відняти вміст регістра А B C D E H L вміст комірки пам’яті M, адреса якої знаходиться в регістрі HL, а результат в акумуляторі. |
SBB |
A B C D E H L M |
9F 98 99 9A 9B 9C 9D 9E |
1 |
непряма |
1 |
Від вмісту акумулятора відняти вміст регістра А B C D E H L вміст комірки пам’яті M, адреса якої знаходиться в регістрі HL і 1 позички , віднімаємо біт СУ регістра ознак, а результат в акумуляторі. |
SUI |
Байт |
D6 |
2 |
безпосе-редня |
2 |
Від вмісту акумулятора віднімаємо шістнадцяткову константу від вмісту акумулятора. |
SBI |
Байт |
DE |
2 |
безпосе-редня |
2 |
Від вмісту акумулятора віднімаємо шістнадцяткову константу і біт основного переносу СУ регістра ознак від вмісту акумулятора. |
КОМАНДИ ПОРОЗРЯДНОГО ЛОГІЧНОГО «І» |
|||||||
ANA |
A
|
A7
|
1 |
непряма |
1 |
Виконується над вмістом акумулятора і регістром А
|
|
B C D E H L |
A0 A1 A2 A3 A4 A5
|
B C D E H L,
|
|||||
M |
A6 |
вмістом комірки пам’яті M незалежно в кожному розряді , без переносів, а результат в акумуляторі. |
|||||
ANI |
байт |
E6 |
1 |
безпосе-редня |
1 |
Виконується над вмістом акумулятора і шістнадцятковою константою незалежно в кожному розряді , без переносів, а результат в акумуляторі. |
|
КОМАНДИ ПОРОЗРЯДНОГО ЛОГІЧНОГО «АБО» |
|||||||
ORA |
A B C D E H L M |
B7 B0 B1 B2 B3 B4 B5 B6 |
1 |
непряма |
1 |
Виконується над вмістом акумулятора і регістром A B C D E H L вмістом комірки пам’яті M незалежно в кожному розряді , без переносів, а результат в акумуляторі. |
|
ORI |
байт |
F6 |
2 |
безпосередня |
2 |
Виконується над вмістом акумулятора і шістнадцятковою константою незалежно в кожному розряді , без переносів, а результат в акумуляторі. |
|
КОМАНДИ СУМА ПО MOD 2 |
|||||||
XRA |
A B C D E H L M |
AF A8 A9 AA AB AC AD AE |
1 |
непряма |
1 |
Виконується над вмістом акумулятора і регістром A B C D E H L вмістом комірки пам’яті M незалежно в кожному розряді , без переносів, а результат в акумуляторі. |
|
XRI |
байт |
EE |
2 |
безпосе-редня |
1 |
Виконується над вмістом акумулятора і шістнадцятковою константою незалежно в кожному розряді , без переносів, а результат в акумуляторі. |
|
CMP |
A B C D E H L |
BF B8 B9 BA BB BC BD |
1 |
|
1 |
Вміст регістра A B C D E H L порівнюється з вмістом акумулятора. |
|
CMP |
M |
BE |
2 |
|
1 |
Вміст комірки пам’яті, адреса якої знаходиться в регістровій парі HL, порівнюється з вмістом акумулятора. |
|
CPI |
байт |
FE |
2 |
|
1 |
Вміст другого байта команди порівнюється з вмістом акумулятора. |
|
КОМАНДИ ЗСУВУ |
|||||||
RLC |
|
07 |
1 |
|
1 |
Вміст акумулятора зсувається вліво на одну позицію. Вміст найстаршого біту заноситься в молодший біт і біт прапорця переносу. Команда діє лише на прапорець переносу СУ. |
|
RRC |
|
OF |
1 |
|
1 |
Вміст акумулятора зсувається вправо на одну позицію. Вміст молодшого біту заноситься в старший біт і біт прапорця переносу. Команда діє лише на прапорець переносу СУ. |
|
RAL |
|
17 |
1 |
|
1 |
Вміст акумулятора зсувається вліво на одну позицію через біт переносу СУ. Молодший біт стає рівний прапорцю переносу, а біт прапорця переносу СУ – рівний величині старшого біта акумулятора . Команда діє лише на прапорець переносу СУ. |
|
RAR |
|
1F |
1 |
|
1 |
Вміст акумулятора зсувається вправо на одну позицію через біт переносу СУ. Старший біт акумулятора стає рівний прапорцю переносу, а прапорець переносу СУ – рівний молодшому біту акумулятора . Команда використовує лише прапорець переносу СУ. |
|
СПЕЦІАЛЬНІ КОМАНДИ |
|||||||
DAA |
|
27 |
1 |
|
1 |
Команда десяткової корекції. 8-бітне число в акумуляторі доповнюється до представлення в вигляді двох 4-бітних чисел в двійково-десятковому коді за допомогою таких операцій:
Використовуються всі прапорці. |
|
CMA |
|
2F |
1 |
|
1 |
Вміст акумулятора інвертується (біт, рівний 1, стає рівним 0; біт, рівний 0, стає рівним 1). Прапорці не використовуються. |
|
STC |
|
37 |
1 |
|
1 |
Біт прапорця переносу встановлюється в 1, інші прапорці не використовуються. |
|
CMC |
|
3F |
1 |
|
1 |
Інвертується біт прапорця переносу СУ. Інші прапорці не використовуються. |
|
КОМАНДИ ПЕРЕХОДІВ |
|||||||
JMP |
[адреса] |
C3 |
3 |
|
3 |
Безумовний перехід на комірку пам’яті з вказаною адресою |
|
JNZ |
[адреса] |
C2 |
3 |
|
3 |
Перехід по ненулю, то наступна команда, яка буде виконана це та, яка вказана в команді переходу, в іншому випадку виконається команда, яка іде наступною за командою переходу |
|
JZ |
[адреса] |
CA |
3 |
|
3 |
Перехід по нулю, то наступна команда, яка буде виконана це та, яка вказана в команді переходу, в іншому випадку виконається команда, яка іде наступною за командою переходу |
|
JNC |
[адреса] |
D2 |
3 |
|
3 |
Перехід по непереносу, якщо біт основного переносу регістра ознак СУ=0, то наступна команда, яка буде виконана це та, яка вказана в команді переходу, в іншому випадку виконається команда, яка іде наступною за командою переходу |
|
JC |
[адреса] |
DA |
3 |
|
3 |
Перехід по переносу, якщо біт основного переносу регістра ознак СУ=1, то наступна команда, яка буде виконана це та, яка вказана в команді переходу, в іншому випадку виконається команда, яка іде наступною за командою переходу |
|
JPO |
[адреса] |
E2 |
3 |
|
3 |
Перехід по непарності кількості одиниць на команду, яка вказана в команді переходу, в іншому випадку виконається команда, яка іде наступною за командою переходу |
|
JPE |
[адреса] |
EA |
3 |
|
3 |
Перехід по парності кількості одиниць на команду, яка вказана в команді переходу, в іншому випадку виконається команда, яка іде наступною за командою переходу |
|
JP |
[адреса] |
F2 |
3 |
|
3 |
Перехід по плюсу ( тобто аналізується 7-й біт акумулятора) на команду, яка вказана в команді переходу, в іншому випадку виконається команда, яка іде наступною за командою переходу |
|
JM |
[адреса] |
FA |
3 |
|
3 |
Перехід по мінусу ( тобто аналізується 7-й біт акумулятора) на команду, яка вказана в команді переходу, в іншому випадку виконається команда, яка іде наступною за командою переходу |
|
PCHL |
[адреса] |
E9 |
3 |
|
3 |
Завантаження в РС вмісту регістрової пари HL, потім перехід на адресу, яка зберігається в регістровій парі HL |
|
КОМАНДИ ВИКЛИКУ ПІДПРОГРАМ |
|||||||
CALL |
[адреса] |
CD |
5 |
|
2 |
Безумовний виклик підпрограми. Старші 8 біт адреси наступної команди пересилаються в комірку пам’яті, адреса якої на 1 менша вмісту вказівника СТЕКУ SP. Молодші 8 біт адреси наступної команди пересилаються в комірку пам’яті, адреса якої на 2 менша від величини показника СТЕКУ SP. Вміст вказівника СТЕКУ зменшується на 2. управління передається команді, адреса якої вказана в 2 і 3 байтах команди виклику. |
|
CNZ |
[адреса] |
C4 |
5 |
|
2 |
Виклик підпрограми по ненулю. Якщо вказана умова істинна, то виконуються дії, описані в команді CALL, в протилежному випадку послідовність команд не зміниться. |
|
CZ |
[адреса] |
CC |
5 |
|
2 |
Виклик підпрограми по нулю. Якщо вказана умова істинна, то виконуються дії, описані в команді CALL, в протилежному випадку послідовність команд не зміниться. |
|
CNC |
[адреса] |
D4 |
5 |
|
2 |
Виклик підпрограми по непереносу, СУ=0. Якщо вказана умова істинна, то виконуються дії, описані в команді CALL, в протилежному випадку послідовність команд не зміниться. |
|
CC |
[адреса] |
DC |
5 |
|
2 |
Виклик підпрограми по основному переносу, СУ=1. Якщо вказана умова істинна, то виконуються дії, описані в команді CALL, в протилежному випадку послідовність команд не зміниться. |
|
CPO |
[адреса] |
E4 |
5 |
|
2 |
Виклик підпрограми по непарності. Якщо вказана умова істинна, то виконуються дії, описані в команді CALL, в протилежному випадку послідовність команд не зміниться. |
|
CPE |
[адреса] |
EC |
5 |
|
2 |
Виклик підпрограми по парності. Якщо вказана умова істинна, то виконуються дії, описані в команді CALL, в протилежному випадку послідовність команд не зміниться. |
|
CP |
[адреса] |
F4 |
5 |
|
2 |
Виклик підпрограми якщо додатне значення старшого біту акумулятора. Якщо вказана умова істинна, то виконуються дії, описані в команді CALL, в протилежному випадку послідовність команд не зміниться. Команда виконується за 5 циклів. |
|
CM |
[адреса] |
FC |
5 |
|
2 |
Виклик підпрограми якщо від’ємне значення старшого біту акумулятора. Якщо вказана умова істинна, то виконуються дії, описані в команді CALL, в протилежному випадку послідовність команд не зміниться. |
|
КОМАНДИ ПОВЕРНЕННЯ З ПІДПРОГРАМИ |
|||||||
RET |
|
C9 |
3 |
|
1 |
Безумовне повернення з підпрограми. Вміст комірки пам’яті, адреса якої міститься і вказівнику СТЕКУ SP, пересилаються в 8 молодших біт програмного лічильника PC. Вміст комірки пам’яті, адреса якої на 1 більша вмісту вказівника СТЕКУ, пересилається в 8 старших біт програмного лічильника. Вміст вказівника СТЕКА збільшується на 2. |
|
RNZ |
|
CO |
3 |
|
1 |
Вихід з підпрограми по ненулю. Якщо вказана умова істинна, то виконуються дії, описані в команді RET, в протилежному випадку послідовність команд не зміниться. |
|
RZ |
|
C8 |
3 |
|
1 |
Вихід з підпрограми по нулю. Якщо вказана умова істинна, то виконуються дії, описані в команді RET, в протилежному випадку послідовність команд не зміниться. |
|
RNC |
|
DO |
3 |
|
1 |
Вихід з підпрограми по непереносу, СУ=0. Якщо вказана умова істинна, то виконуються дії, описані в команді RET, в протилежному випадку послідовність команд не зміниться. |
|
RC |
|
D8 |
3 |
|
1 |
Вихід з підпрограми по переносу, СУ=1. Якщо вказана умова істинна, то виконуються дії, описані в команді RET, в протилежному випадку послідовність команд не зміниться. |
|
RPO |
|
EO |
3 |
|
1 |
Вихід з підпрограми по непарності. Якщо вказана умова істинна, то виконуються дії, описані в команді RET, в протилежному випадку послідовність команд не зміниться. |
|
RPE |
|
E8 |
3 |
|
1 |
Вихід з підпрограми по парності. Якщо вказана умова істинна, то виконуються дії, описані в команді RET, в протилежному випадку послідовність команд не зміниться. |
|
RP |
|
FO |
3 |
|
1 |
Вихід з підпрограми, коли додатне значення старшого біту акумулятора. Якщо вказана умова істинна, то виконуються дії, описані в команді RET, в протилежному випадку послідовність команд не зміниться. |
|
RM |
|
F8 |
3 |
|
1 |
Вихід з підпрограми, коли від’ємне значення старшого біту акумулятора. Якщо вказана умова істинна, то виконуються дії, описані в команді RET, в протилежному випадку послідовність команд не зміниться. |
|
КОМАНДА РЕСТАРТ |
|||||||
RST |
0 1 2 3 4 5 6 7 |
C7 CF D7 DF E7 EF F7 FF |
3 |
|
|
Старші 8 біт адреси наступної команди пересилаються в комірку пам’яті, адреса якої на 1 менша ніж вміст вказівника СТЕКУ. Молодші 8 біт адреси наступної команди пересилаються в комірку пам’яті, адреса якої на 2 менша ніж вміст вказівника СТЕКУ. Вміст вказівника СТЕКУ зменшується на 2. Управління передається команді, адреса якої рівна коду NNN, помноженому на 8. |
|
ОПЕРАЦІЇ ЗІ СТЕКОМ |
|||||||
PUSH |
B D H |
С5 D5 E5 |
3 |
|
1 |
Вміст старшого регістра пари BC DE HL пересилається в комірку пам’яті, адреса якої на 1 менша ніж вміст вказівника СТЕКУ SP. |
|
PUSH |
PSW |
F5 |
3 |
|
2 |
Вміст пересилається в комірку пам’яті, адреса якої на 1 менша ніж вміст вказівника СТЕКУ SP. Вміст прапорців об’єднується в одне слово стану, яке пересилається в комірку пам’яті, адреса якої на 2 менша ніж вміст вказівника СТЕКУ . Вміст вказівника СТЕКУ зменшується на 2. |
|
XTHL |
|
E3 |
5 |
|
1 |
Вміст регістра L обмінюється на вміст комірки пам’яті, адреса якої міститься у вказівнику СТЕКУ SP. Вміст регістра H обмінюється на вміст комірки пам’яті, адреса якої на 1 більша за вміст вказівника СТЕКУ. |
|
POP |
B D H |
С1 D1 E1 |
3 |
|
1 |
Вміст комірки пам’яті, адреса якої визначається вмістом вказівника СТЕКУ SP, пересилається в молодший регістр пари регістрів BC DE HL. |
|
POP |
PSW |
F1 |
3 |
|
2 |
Вміст комірки пам’яті, адреса якої визначається вмістом вказівника СТЕКУ SP, використовується для відновлення стану прапорців. Вміст комірки пам’яті, адреса якої на 1 більша ніж вміст вказівника СТЕКУ, переключається в акумулятор. Вміст вказівника стеку збільшується на 2. |
|
SPHL |
|
F9 |
1 |
|
1 |
Вміст регістрівH і L (16 біт) пересилається у вказівник СТЕКУ |
|
КОМАНДИ ВВОДУ/ ВИВОДУ |
|||||||
OUT |
байт |
D3 |
3 |
|
2 |
Дані, які містяться в 8 бітах двох напрямленої шини даних вказівника порту, пересилаються в акумулятор. |
|
IN |
байт |
DB |
3 |
|
2 |
Вміст акумулятора переміщається на двох напрямлену шину даних для передачі у вказівний порт. |
|
КОМАНДИ УПРАВЛІННЯ |
|||||||
DI |
|
F3 |
1 |
|
1 |
Система переривання забороняється безпосередньо при виконання наступної за DI командою. |
|
EI |
|
FB |
1 |
|
1 |
Система переривання забороняється при виконанні наступної команди. |
|
NOP |
|
00 |
1 |
|
1 |
Порожня команда. В РС заноситься адреса наступної команди, і МП переходить до її обробки. Стан прапорців і регіст-рів не змінюється. |
|
HLT
|
|
76 |
1 |
|
1 |
В РС заноситься адреса наступної команди. Процесор не виконує нічого до приходу переривання. Стан прапорців і регістрів не змінюється. |