3.2. Машинні цикли базового мікропроцесора.
Команди в базовому мікропроцесорі виконуються як послідовність внутрішніх мікрокоманд. Кожна з мікрокоманд виконується на протязі одного циклу, тривалість якого складає 3-5 тактів. Кількість машинних циклів та загальна кількість тактів визначається типом команди. Всього є 10 типів машинних циклів:
вибірка команди;
зчитування слова з запам'ятовуючого пристрою
запис слова в запам'ятовуючий пристрій
зчитування слова зі стеку
запис слова в стек
зчитування слова з пристрою введення/виведення
запис слова в пристрій введення/виведення
підтвердження переривання
підтвердження зупинки
підтвердження переривання під час зупинки.
Перший цикл завжди є цикл вибірки команди і займає 4 або 5 тактів. Три наступних цикли завжди виконуються за три такти, а п'ятий за три або п'ять тактів. З огляду на це завжди можна розрахувати кількість циклів і тактів команди, якщо відомо способи адресації, які вона використовує.
Наприклад: команда MVI М, B2 двобайтова, використовує безпосередню/непряму адресацію. Під час виконання команди дані, які містяться в другому байті програми, завантажуються в комірку пам'яті, адреса якої знаходиться в регістровій парі HL. Перший цикл - вибірка першого байта з пам'яті (4 або 5 тактів), наступний - вибірка другого байта (3 такти). Ще один цикл - запис даних в комірку пам'яті (3 такти). Отже команда виконується за 3 цикли 10 або 11 тактів. (насправді 10 тактів).
3.3. Команди загрузки і пересилок даних
– XCHG |
Обмін даними між регістровими парами H и D |
– XTHL |
Обмін даними між регістровою парою H і верхушкою стека (L) ↔((SP)), (H) B (D,H) ↔ ((SP+1)) |
– STA addr |
Вміст акум. A заноситься в комірку пам’яті за адресою addr із другого та третього байтів команди |
– LDA addr |
Вміст комірки пам’яті за адресою addr із другого та третього байтів команди заноситься в акум. A |
– SHLD addr |
Вміст регістрової пари H заноситься в двобайтову комірку пам’яті з початковою адресою addr із другого та третього байтів команди |
– LHLD addr |
Вміст двобайтової комірки пам’яті з початковою адресою addr із другого та третього байтів команди заноситься в ркгістрову пару H |
– MVI R,d8 |
Вміст другого байту команди заноситься в регістр R (за виключенням регістру F) |
– LXI (B,D,H,SP),d16 |
Вміст другого та третього байтів команди заносяться в регістрові пари B,D,H,SP |
– PCHL |
Вміст регістрової пари H заноситься в лічильник команд PC |
– SPHL |
Вміст регістрової пари H заноситься в лічильник команд SP |
– MOV R1,R2 |
Вміст регістру R2 (за виключенням регістру F) заноситься в регістр R1 (за виключенням регістру F) за виключенням MOV M,M |
– STAX B |
Вміст акум. A заноситься в комірку пам’яті за адресою, яка розміщена в регістровій парі B |
– STAX D |
Вміст акум. A заноситься в комірку пам’яті за адресою, яка розміщена в регістровій парі D |
– LDAX B |
Вміст комірки пам’яті за адресою, яка розміщена в регістровій парі B, заноситься в акум. A |
– LDAX D |
Вміст комірки пам’яті за адресою, яка розміщена в регістровій парі D, заноситься в акум. A |
– PUSH (B,D,H) |
запис вмісту регістрової пари B (D, H) в стек (B,D,H) ®(( SP-1 )), (C,E,L) ®(( SP-2 )), (SP)=(SP)-2 |
– PUSH PSW |
запис вмісту регістрової пари PSW в стек (A) ®((SP-1)), (F) ®(( SP-2 )), (SP)=(SP)-2 |
– POP (B,D,H) |
читання зі стеку в регістрову пару B (D, H) B(D,H) ((SP)) ® (C,E,L), ((SP+1)) ®(B,D,H), (SP)=(SP)+2 |
– POP PSW |
читання зі стеку в регістрову пару PSW ((SP)) ® (F), ((SP+1)) ®( A), (SP)=(SP)+2 |
– IN port |
вміст порту з адресою port заноситься в акумулятор |
– OUT port |
вміст акумулятора заноситься в порт з адресою port |
