ASTRA-256 Assembler

ASTRA-256 Assembler

评价数不足
Список новых команд
由 Screamster 制作
27 новых команд позволяют эффективнее использовать память. Меньше кода, больше возможностей.
   
奖励
收藏
已收藏
取消收藏
Команды копирования в/из аккумулятора
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, иначе СF = 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
Складывает содержимое Аккумулятора со значением в адресуемой ячейке памяти и значением бита СF. Помещает результат в Аккумулятор.
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
Если в результате операции в Аккумуляторе получаем отрицательное число, то флаг CF = 1, иначе CF = 0.

SUBRACF | 8Bh | 10001011b | 2 bytes | ZF, CF
Вычесть из Аккумулятора значение из указанной ячейки памяти и бит CF, оставить результат в Аккумуляторе.
2-й байт - адрес ячейки памяти, значение из которой нужно вычесть из содержимого Аккумулятора.
Если в результате операции в Аккумуляторе получаем 00h, тогда флаг ZF = 1, иначе ZF = 0
Если в результате операции в Аккумуляторе получаем отрицательное число, то флаг 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-й байт - адрес первого байта инструкции, которая должна быть вызвана.
Внимание! При вызове этой командой инструкций условных и безусловных переходов, а также самой себя, корректная работа этих команд не гарантируется.