Log In  


Just a fun or education tool in Pico-8.
It is meant to mimic assembly (no particular version) and has by default 16 registers and 18 commands.
Registers aren't labelled, but they are 1-16.
It is easy to expand or reduce if you want to.
I think it is turing complete, although I am not sure.
To type use the keyboard (no support for mobile), enter to make a new line and right arrow to run.

Cart #assemblo8-1 | 2023-11-18 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

List of commands:


mov [reg_num] [dest_reg] - copies from [reg_num] to [dest_reg];

push [reg_num] [num] - copies [num] onto [reg_num]. If [reg_num]==NR, then modifies number of registers. If [num] is smaller then the current number of registers, the last ones will be deleted. Otherwise, registers will be appended to the end;

and [reg_num_1] [reg_num_2] [dest_reg] - performs logical AND on [reg_num_1] and [reg_num_2] and saves the value onto [dest_reg];

add [reg_num_1] [reg_num_2] [dest_reg] - adds [reg_num_1] and [reg_num_2] and saves the value onto [dest_reg];

sub [reg_num_1] [reg_num_2] [dest_reg] - subtracts [reg_num_2] from [reg_num_1] and saves the value onto [dest_reg];

mul [reg_num_1] [reg_num_2] [dest_reg] - multiplies [reg_num_1] and [reg_num_2] and saves the value onto [dest_reg];

div [reg_num_1] [reg_num_2] [dest_reg] - divides [reg_num_1] by [reg_num_2] and saves the value onto [dest_reg];

neg [reg_num] [dest_reg] - negates [reg_num] and saves it onto [dest_reg];

dec [reg_num] - decrements [reg_num] by 1;

inc [reg_num] - increments [reg_num] by 1;

or [reg_num_1] [reg_num_2] [dest_reg] - performs logical OR on [reg_num_1] and [reg_num_2] and saves the value onto [dest_reg];

xor [reg_num_1] [reg_num_2] [dest_reg] - performs logical XOR on [reg_num_1] and [reg_num_2] and saves the value onto [dest_reg];

shl [reg_num] [num] [dest_reg] - performs logical LEFT SHIFT on [reg_num] by [num] places and saves the value onto [dest_reg];

shr [reg_num] [num] [dest_reg] - performs logical RIGHT SHIFT on [reg_num] by [num] places and saves the value onto [dest_reg];

cmp [sign] [reg_num] [num]- compares [reg_num] to [num] using [sign]. If true, skips the following line. List of values for [sign]: 1-greater than; 2-equal to; 3-less than; 4-greater than or equal to; 5-less than or equal to; 6-not equal to;

cmpsb [sign] [reg_num_1] [reg_num_2] - compares [reg_num] to [reg_num_2] using [sign]. If true, skips the following line. List of values for [sign]: 1-greater than; 2-equal to; 3-less than; 4-greater than or equal to; 5-less than or equal to; 6-not equal to;

jmp [line_num] - jumps to [line_num] before or after this one, without triggering lines in between;

halt - stops the program. Required at the end of any program, or else, an error will appear.



NICE!



[Please log in to post a comment]