ASTRA-256 Assembler

ASTRA-256 Assembler

Not enough ratings
Список нових команд
By Screamster
27 нових команд дозволяють ефективніше використовувати пам'ять. Менше коду, більше можливостей.
   
Award
Favorite
Favorited
Unfavorite
Команди копіювання до або з акумулятора
MOVIRA | 13h | 00010011b | 2 bytes | ZF
Копіює в Акумулятор вміст елемента пам'яті, адреса якого знаходиться в іншому елементі пам'яті.
2-й байт - адреса елемента пам'яті, в якому знаходиться адреса іншого елемента пам'яті.
Якщо в результаті операції в Акумуляторі отримуємо 00h, то прапор ZF = 1, інакше ZF = 0.

MOVIAR | 14h | 00010100b | 2 bytes
Копіює вміст Акумулятора в елемент пам'яті, адреса якого знаходиться в іншому елементі пам'яті.
2-й байт - адреса елемента пам'яті, в якому знаходиться адреса іншого елемента пам'яті.

MOVILR | 15h | 00010101b | 3 bytes
Записує буквальне значення в елемент пам'яті, адреса якого знаходиться в іншому елементі пам'яті.
2-й байт - значення, що має бути занесено в елемент пам'яті.
3-й байт - адреса елемента пам'яті, в якому міститься адреса іншого елемента пам'яті, що в нього має бути скопійовано значення.

MOVAL | 16h | 00010110b | 2 bytes | ZF
Записує вміст Акумулятора в другій байт цієї ж команди.
2-й байт - байт, в який буде записано вміст Акумулятора. Може мати будь-яке початкове значення. Воно зміниться в процесі виконання команди.
Якщо результат в Акумуляторі 00h, то прапор ZF = 1, інакше ZF = 0.

LOIRA | 17h | 00010111b | 2 bytes | ZF
Записує в Акумулятор число з елемента пам'яті, адреса якого міститься в іншому елементі пам'яті. Після цього, в залежності від значення прапора CF, збільшує або зменшує на 1 значення адреси, що міститься в зазначеному елементі. Якщо CF = 0, адреса збільшується на 1, якщо CF = 1, адреса зменшується на 1.
2-й байт - адреса елементу пам'яті, в якому міститься адреса для виконання непрямої адресації. Після виконання операції, вміст цього елемента пам'яті збільшується або зменшується на 1.
Якщо в результаті операції в Акумуляторі отримуємо 00h, тоді прапор ZF = 1, інакше ZF = 0.

CLEARA | E4h | 11100100b | 2 bytes | ZF
Переносить вміст Акумулятора за вказаною адресою, після чого обнуляє Акумулятор.
2-й байт - адреса елемента пам'яті, в який буде записано вміст Акумулятора.
Завжди встановлює ZF = 1.
Команди копіювання в пам'ять
MOVIRR | 22h | 00100010b | 3 bytes
Копіює вміст однієї елемента пам'яті в інший, при непрямій адресації обох елементів.
2-й байт - адреса елемента пам'яті з адресою іншого елемента пам'яті, з якого копіюється значення.
3-й байт - адреса елемента пам'яті з адресою іншого елемента пам'яті, в який має бути записано значення.

CLEARR | E5h | 11100101b | 2 bytes
Записує нуль в адресований елемент пам'яті.
2-й байт - адреса елемента пам'яті, в який буде записано 00h.
Команди арифметичних та логічних операцій з акумулятором
AAD | 3Eh | 00111110b | 1 bytes | ZF
Перетворює число в акумуляторі з двійково-десяткового у двійковий вигляд.
Якщо в результаті операції в Акумуляторі отримуємо 00h, то прапор ZF = 1, інакше ZF = 0.

AAA | 3Fh | 00111111b | 1 bytes | ZF, CF
Перетворює число в Акумуляторі з двійкового у двійково-десятковий вигляд.
Якщо в результаті операції в Акумуляторі отримуємо 00h, то прапор ZF = 1, інакше ZF = 0.
Якщо отримуємо переповнення в Акумуляторі (значення, більше за FFh), прапор переносу CF=1, інакше CF=0.

ADDLACF | 88h | 10001000b | 2 bytes | ZF, CF
Додає до вмісту Акумулятора буквальне значення, що міститься у другому байті команди та значення біта CF. Записує результат у Акумулятор.
2-й байт - буквальне значення, яке потрібно додати до вмісту Акумулятора.
Якщо в результаті операції в Акумуляторі отримуємо 00h, то прапор ZF = 1, інакше прапор ZF = 0.
Якщо отримуємо переповнення в Акумуляторі (значення, що більше за FFh), прапор переносу CF=1, інакше CF=0.

ADDRACF | 89h | 10001001b | 2 bytes | ZF, CF
Додає до вмісту Акумулятора значення з адресованого елемента пам'яті та значення біта CF. Записує результат в Акумулятор.
2-й байт - адреса елемента пам'яті, вміст якого потрібно додати до вмісту Акумулятора.
Якщо в результаті операції в Акумуляторі отримуємо 00h, то прапор ZF = 1, інакше прапор ZF = 0.
Якщо отримуємо переповнення в Акумуляторі (значення, що більше за FFh), прапор переносу CF=1, інакше CF=0.

SUBLACF | 8Ah | 10001010b | 2 bytes | ZF, CF
Відняти від вмісту Акумулятора буквальне значення, та значення біта CF. Результат залишити в Акумуляторі.
2-й байт - буквальне значення, яке потрібно відняти від вмісту Акумулятора.
Якщо в результаті операції в Акумуляторі отримуємо 00h, то прапор ZF = 1, інакше прапор ZF = 0.
Якщо отримуємо переповнення в Акумуляторі (значення, що більше за FFh), прапор переносу CF=1, інакше CF=0.

SUBRACF | 8Bh | 10001011b | 2 bytes | ZF, CF
Відняти від вмісту Акумулятора значення з елемента пам'яті та біт CF. Результат залишити в Акумуляторі.
2-й байт - адреса елемента пам'яті, вміст якого потрібно відняти від вмісту Акумулятора.
Якщо в результаті операції в Акумуляторі отримуємо 00h, то прапор ZF = 1, інакше прапор ZF = 0.
Якщо отримуємо переповнення в Акумуляторі (значення, що більше за FFh), прапор переносу CF=1, інакше CF=0.
Команди умовних переходів
JALR | B7h | 10110111b | 3 bytes
Порівняти вміст Акумулятора зі вмістом елемента пам'яті. Якщо значення в Акумуляторі менше за значення в адресованому елементі пам'яті, то перейти за адресою, яку вказано у третьому байті команди.
2-й байт - адреса елемента пам'яті, в якому знаходиться число, що порівнюється.
3-й байт - адреса переходу.

JALL | B8h | 10111000b | 3 bytes
Порівняти вміст Акумулятора із буквальним значенням. Якщо значення в Акумуляторі менше за буквальне значення, то перейти за адресою, яку вказано у третьому байті команди.
2-й байт - буквальне значення, що порівнюється.
3-й байт - адреса переходу.

JAER | B9h | 10111001b | 3 bytes
Порівняти вміст Акумулятора зі вмістом елемента пам'яті. Якщо значення в Акумуляторі дорівнює значенню в елементі пам'яті, то перейти за адресою, яку вказано у третьому байті команди.
2-й байт - адреса елемента пам'яті, у якому знаходиться число, що порівнюється.
3-й байт - адреса переходу.

JAEL | BAh | 10111010b | 3 bytes
Порівняти вміст Акумулятора із буквальним значенням. Якщо значення в Акумуляторі дорівнює буквальному значенню, то перейти за адресою, яку вказано у третьому байті команди.
2-й байт - буквальне значення, що порівнюється.
3-й байт - адреса переходу.

JAGR | BBh | 10111011b | 3 bytes
Порівняти вміст Акумулятора із вмістом адресованого елемента пам'яті. Якщо значення в Акумуляторі більше ніж значення у елементі пам'яті, то перейти за адресою, яку вказано в третьому байті команди.
2-й байт - адреса елемента пам'яті, у якому знаходиться число, що порівнюється.
3-й байт - адреса переходу.

JAGL | BCh | 10111100b | 3 bytes
Порівняти вміст Акумулятора із буквальним значенням. Якщо значення в Акумуляторі більше за буквальне значення, то перейти за адресою, яку вказано у третьому байті команди.
2-й байт - буквальне значення, що порівнюється.
3-й байт - адреса переходу.

JRLR | BDh | 10111101b | 3 bytes
Порівняти вміст одного елемента пам'яті зі вмістом другого елемента пам'яті. Якщо значення в першому елементі менше ніж значення в другому елементі пам'яті, то перейти за адресою, яку вказано в четвертому байті команди.
2-й байт - адреса елемента пам'яті, у якому знаходиться перше число, що порівнюється.
3-й байт - адреса елемента пам'яті, у якому знаходиться друге число, що порівнюється.
4-й байт - адреса переходу.

JRER | BEh | 10111110b | 4 bytes
Порівняти вміст одного елемента пам'яті зі вмістом другого елемента пам'яті. Якщо значення в першому елементі дорівнює значенню в другому елементі пам'яті, то перейти за адресою, яку вказано в четвертому байті команди.
2-й байт - адреса елемента пам'яті, у якому знаходиться перше число, що порівнюється.
3-й байт - адреса елемента пам'яті, у якому знаходиться друге число, що порівнюється.
4-й байт - адреса переходу.

JRGER | BFh | 10111111b | 4 bytes
Порівняти вміст одного елемента пам'яті зі вмістом другого елемента пам'яті. Якщо значення в першому елементі дорівнює або більше ніж значення в другому елементі пам'яті, то перейти за адресою, яку вказано в четвертому байті команди.
2-й байт - адреса елемента пам'яті, у якому знаходиться перше число, що порівнюється.
3-й байт - адреса елемента пам'яті, у якому знаходиться друге число, що порівнюється.
4-й байт - адреса переходу.
Команди введення / виведення
OUTCLRKBD | D4h | 11010100b | 1 bytes
Вимикає підсвічування всіх клавіш (цифри + алфавіт), крім функціональних.

INCOLKBD | D5h | 11010101b | 1 bytes
Повертає в Акумулятор колір клавіші. Перед викликом команди код клавіші записується в 6 молодших біт Акумулятора. Після виконання команди код кольору повертається в два старших біти Акумулятора.
Розширені команди (ланцюгові операції і множення)
RETAD | E3h | 11100011b | 2 bytes | TF
Мається на увазі, що за цією командою завжди йде двобайтова команда JMP. Запам'ятовує в елементі пам'яті так звану "адресу повернення". Для обчислення "адреси повернення" команда "дізнається" адресу свого першого байта та додає до нього 4.
2-й байт - адреса елементу пам'яті, до якого буде записана "адреса повернення".
Якщо при виконанні цієї команди адреса повернення більше за FFh, то прапор TF=1, інакше TF=0.

X | E6h | 11100110b | 2 bytes
Виконує одну команду, адресу якої задано другим байтом команди, після чого продовжує виконання програми.
2-й байт - адреса першого байту команди, що має бути виконана.
Увага! У разі виклика цією командою інструкцій умовних та безумовних переходів, а також самої себе, коректна робота команди не гарантується.