|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Алгоритми виконання командДля написання програм використовуються спеціальні команди, які записують у скороченому мнемонічному вигляді. Всі команди поділяють на п’ять груп: – команди пересилки даних – використовують для передачі даних із регістра у регістр або із пам’яті у регістр і навпаки; – арифметичні команди – використовуються для додавання, віднімання, порівняння; – логічні команди НІ, І, АБО і комплексні; – команди переходів – використовуються для умовних і безумовних переходів, виклику підпрограм і повернення із них; – команди управління, вводу-виводу і роботи із стеком – використовуються для управління перериваннями, вводом-виводом інформації і виконання команд переходів. Команди пересилки даних: Пересилка із регістру в регістр MOV R 1, R 2 – переслати дані із регістра R 2 в регістр R 1. Довжина команди – 1 байт. Наприклад, MOV А, С – переслати дані із регістру А в регістр С. Вміст регістру С при цьому не змінюється. Безпосередня пересилка числа MVI R, < байт > – вміст другого байту команди переслати в регістр R. Довжина команди – 2 байти. Наприклад, MVI А, 56 – переслати число 56 в регістр А. Завантаження регістра А із пам’яті LDA < байт > < байт > – вміст комірки пам’яті, адреса якої знаходиться у другому і третьому байті команди завантажити в регістр А. Довжина команди – 3 байти. Наприклад, LDA 0950 – завантажити в регістр А вміст комірки пам’яті за номером 0950. Увага! У трибайтних командах при запису команди в кодах завантажується спочатку молодший байт, а далі старший Вивантаження вмісту регістру А у пам’ять STA < байт > < байт > – вивантажити вміст регістру А в комірку пам’яті, номер якої позначено у другому і третьому байті команди. Довжина команди – 3 байти. Наприклад, STA 0850 – вивантажити вміст регістру А в комірку пам’яті з номером 0850. Арифметичні команди: Команда додавання вмісту регістра ADD R – вміст регістру R додати до вмісту регістру А. Результат залишається в регістрі А. Вміст регістру R при цьому не змінюється. Довжина команди – 1 байт. Наприклад, ADD С – вміст регістру С додати до вмісту регістру А. Команда безпосереднього додавання ADI < байт> – вміст другого байту команди додати до вмісту регістру А. Довжина команди – 2 байти. Наприклад, ADI 24 – число 24 додати до вмісту регістру А. Команда віднімання вмісту регістра SUB R – вміст регістру R відняти від вмісту регістру А. Результат залишається в регістрі А. Вміст регістру R при цьому не змінюється. Довжина команди – 1 байт. Наприклад, SUB С – вміст регістру С відняти від вмісту регістру А. Команда безпосереднього віднімання SUІ < байт> – вміст другого байту команди відняти від вмісту регістру А. Довжина команди – 2 байти. Наприклад, SUІ 32– число 32 відняти від вмісту регістру А. Команда збільшення вмісту регістра на одиницю INR R – додати одиницю до вмісту регістру R. Довжина команди – 1 байт. Наприклад, INR А – додати одиницю до вмісту регістру А. Команда зменшення вмісту регістру на одиницю DCR R – відняти одиницю від вмісту регістру R. Довжина команди – 1 байт. Наприклад, DCR C – додати одиницю до вмісту регістру C. Команда порівняння із вмістом регістру СМР R – порівняти вміст регістру R з вмістом регістру А. При виконанні команди вміст регістру R віднімається від вмісту регістру А. Вміст регістру R при цьому не змінюється. За результати віднімання установлюються стани при виконанні таких умов: стан знаку S, якщо знаковий біт результату операції дорівнює одиниці (число від’ємне),стан нуля Z, якщо результат операції дорівнює нулю, стан додаткового переносу AC, якщо є переніс із третього розряду, стан парності P, якщо результат вміщує парне число одиниць, стан переносу CY, якщо є переніс (при складанні) або займання (при відніманні) із старшого розряду. Довжина команди – 1 байт Наприклад, СМР С (в регістрі С записано число 24, в регістрі А – число В 3). Виконання: В 3 – 24 = 8 F. Записуємо результат у двійковому коді 10001111. S = 0 (знаковий біт результату операції дорівнює нулю, так як результат операції додатний), Z = 0 (так як результат операції не дорівнює нулю), АС = 0 (так як переніс із третього розряду відсутній), Р = 0 (так як результат операції непарний), CY = 1 (так як є займання із старшого розряду). Команда порівняння із числом СРІ <байт> – порівняти вміст регістру А із числом, що знаходиться у другому байті. Довжина команди – 2 байти. Наприклад, СРІ АВ (в регістрі А записано число С 9). Виконання: C 9 – AB = 1 E. Записуємо результат у двійковому коді 00011110. S = 0 (знаковий біт результату операції дорівнює нулю, так як результат операції додатний), Z = 0 (так як результат операції не дорівнює нулю), АС = 0 (так як немає переносу із третього розряду), Р = 1 (так як результат операції парний), CY = 1 (так як є займання із старшого розряду). Логічні команди: Команда НІ (інверсія) СМА <байт> – виконати операцію НІ з числом, що знаходиться у другому байті. Операція виконується із кожним розрядом окремо. Довжина команди – 2 байти. Наприклад, СМА 43. Виконання: записуємо число у двійковому коді 01000011. Виконуємо інверсне перетворення 10111100. Переводимо у шістнадцятковий код. Відповідь – ВС. Команда І (логічне множення) ANA R – виконати операцію І між числами, що знаходяться у регістрі А і в регістрі R. Операція виконується із кожним розрядом окремо. Довжина команди – 1 байт Наприклад, ANA Е (в регістрі А записано число 53, в регістрі Е число 9 А). Виконання: записуємо числа у двійковому коді 53 – 01010011, 9 А – 10011010. Виконуємо логічне множення за матрицею таблиці 4.1 Таблиця 4.1 Матриця виконання команди ANA R.
Результат: 00010010. Переводимо у шістнадцятковий код. Відповідь – 12. Команда АБО (логічне додавання) ОRA R – виконати операцію АБО між числами, що знаходяться у регістрі А і в регістрі R. Операція виконується із кожним розрядом окремо. Довжина команди – 1 байт Наприклад, ОRA С (в регістрі А записано число В 9, в регістрі С число 39). Виконання: записуємо числа у двійковому коді В 9 – 10111001, 37– 00110111. Виконуємо логічне множення за матрицею таблиці 4.2. Таблиця 4.2 Матриця виконання команди ОRA R.
Результат: 10111111. Переводимо у шістнадцятковий код. Відповідь – ВF. Команда АБО – НІ ХRA R – виконати операцію АБО – НІ між числами, що знаходяться у регістрі А і в регістрі R. Операція виконується із кожним розрядом окремо. Довжина команди – 1 байт. Наприклад, ХRA В (в регістрі А записано число 74, в регістрі С число 93). Виконання: записуємо числа у двійковому коді 74 – 01110100, 93– 10010011. Виконуємо логічне множення за матрицею таблиці 4.3. Таблиця 4.3. Матриця виконання команди ХRA R.
Результат: 11100111. Переводимо у шістнадцятковий код. Відповідь – Е 7.
Команди переходів: Безумовний перехід до виконання команди JMP <байт> <байт> – перейти до виконання команди, адреса якої знаходиться у другому і третьому байті. Довжина команди – 3 байти. Наприклад, JMP 080 А – перейти до виконання команди, яка знаходиться за адресою 080 А. Умовний перехід до виконання команди J <умова> <байт> <байт> – перейти до виконання команди, адреса якої знаходиться у другому і третьому байті, якщо умова виконується. Довжина команди – 3 байти. В залежності від умов команди мають вигляд: JС – перехід, якщо є переніс; JNС – перехід, якщо переносу немає; JZ – перехід, якщо результат дорівнює нулю; JNZ – перехід, якщо результат не дорівнює нулю; JP – перехід, якщо результат додатний; JM – перехід, якщо результат від’ємний; JPE – перехід при парності; JPO – перехід при непарності. Наприклад, JNZ 0908– перейти до виконання команди, яка знаходиться за адресою 0908, якщо результатне дорівнює нулю. Команди безумовного переходу до підпрограм CALL <байт> <байт> – перейти до виконання підпрограми, яка починається з адреси, що знаходиться у другому і третьому байті. Довжина команди – 3 байти. Наприклад, CALL 0850– перейти до виконання підпрограми, яка починається з адреси 0850. Команди умовного переходу до підпрограм C <умова> <байт> <байт> – перейти до виконання підпрограми, яка починається з адреси, що знаходиться у другому і третьому байті, якщо умова виконується. Використовуються також умови, як і при переході до команд. Довжина команди – 3 байти. Наприклад, CP 0950– перейти до виконання підпрограми, яка починається з адреси 0950, якщо результат додатний. Команди безумовного повернення з підпрограм RET – повернутися до виконання основної програми. Адреса повернення знаходиться в регістрі стеку. Довжина команди – 1 байт. Команди умовного повернення з підпрограм R <умова> – повернутися до виконання основної програми, якщо умова виконується. Адреса повернення знаходиться в регістрі стеку. Довжина команди – 1 байт. Наприклад, RZ – повернутися до виконання основної програми, якщо результат дорівнює нулю. Команди управління, вводу-виводу і роботи із стеком: Команда зупинки HLT – зупинити виконання програми. Довжина команди – 1 байт. Команда відсутності операції NOP – відсутність операції. Довжина команди – 1 байт Команди введення-виведення IN <байт> – ввести інформацію з порту введення, адреса якого наведена у другому байті. Довжина команди – 2 байти. Наприклад, IN F 8– ввести інформацію з порту введення за адресою F 8. OUT <байт> – вивести інформацію у порт виведення, адреса якого наведена у другому байті команди. Довжина команди – 2 байти. Наприклад, IN FВ – вивести інформацію у порт введення за адресою FВ.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.009 сек.) |