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.pyscontaining:
mov a 137
mul a 2322
out a "\n"
- run it with:
python -m pyssembly multiplication.pys - result:
318114
- create file
average.pyscontaining:
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