This tool allows to execute pseudo assembly code and it is meant for teaching purposes.
python -m pip install pyssembly
python -m pyssembly <code.pys>
Lots of examples are available in the examples
folder.
- create file
multiplication.pys
containing:
mov a 137
mul a 2322
out a "\n"
- run it with:
python -m pyssembly multiplication.pys
- result:
318114
- create file
average.pys
containing:
in a "First number: "
in b "Second number: "
int a a
int b b
mov avg a
add avg b
div avg 2
out "The average between " a
out " and " b
out " is: " avg
out "\n" null
- run it with:
python -m pyssembly average.pys
- result:
First number: 26
Second number: 17
The average between 26 and 17 is: 21.5
The language that pyssembly is able to execute is a pseudo assembly. All instructions have the form:
<instruction> <operand a> <operand b>
All instructions that return a result, store such result in the first operand (a).
To comment a line write ';' at the beginning. For example:
;this is a comment
To label a line, to use it as destination in a jmp statement, simply write a single word in the line. For example:
this-is-a-label
The null value is simply the keyword null
. Like so:
out "Hello world" null
Arrays are accessed using the []
sintax. For example:
mov arr[0] 6
Arrays are actually dictionaries and anything can be a key.
mov a b
: store b into ajmp a b
: if a, jump to b (b can be a label or a line number)in a b
: print b to stdout, read string from stdin, store it into aout a b
: print a and b to stdout
bool a b
: boolean(b)int a b
: integer(b)flt a b
: float(b)str a b
: string(b)
add a b
: a + bsub a b
: a - bmul a b
: a * bdiv a b
: a / bpow a b
: ablog a b
: logbaroot a b
: a1/bidiv a b
: a // bmod a b
: a % b
rnd a b
: generate random float, a<=rf<=birnd a b
: generate random integer, a<=ri<=b
sin a b
: sin(b)cos a b
: cos(b)tan a b
: tan(b)asin a b
: asin(b)acos a b
: acos(b)atan a b
: atan(b)atan2 a b
: atan2(a, b)
eq a b
: a == bneq a b
: a != bles a b
: a < bleq a b
: a <= bgrt a b
: a > bgeq a b
: a >= bnot a b
: not band a b
: a and bor a b
: a or bxor a b
: a xor bnand a b
: a nand bnor a b
: a nor bnxor a b
: a nxor b