
Lesson 2: Pico Numeration System
Pico Data Types
The assembler for the SX28, the processor of the Pico system, is able to understand four data types: decimal, binary, hexadecimal, and ASCII.
The recommended notations to differentiate between the data types are shown in Fig 1.1. Additional methods for data type notation in Fig 1.2
are also usable but it is not recommended as their usage may generate warnings during compilation. Variables are only allowed to take up
32bits of memory and numbers which exceed this will generate an error during assembly of the code.
Data Type 
Syntax 
Example 
Max Value 
Decimal 
#xxxx 
#4500 
#4_294_967_295 
Binary 
%xxxx 
%11011011 
%1111_1111_1111_1111_1111_1111_1111_1111 
Hex 
$xxxx 
$42EF 
$FFFF_FFFF 
ASCII 
'x' 
'Z' 

Data Type 
Syntax 
Example 
Decimal 
xxxx 
4500 
Binary 
xxxxb 
11011011b 
Hex 
xxxxh 
42EFh 
Operators
The SX28 assembly provides support for expressions which are evaluated during assembly of programs. They may be linked together in
expressions much like in mathematics but with several differences that should be considered. Operators that the SX28 assembler has in
common with algebra are shown below in Fig 13. Watch out when dealing with exponentiation as there is no exponentiation operator and
the symbol that commonly depicts exponentiation is used as the operator for XOR.
Symbol 
Usage 
Operation 
 
a 
Absolute Value 
 
a 
Negative 
+ 
a + b 
Addition 
 
a  b 
Subtraction 
* 
a * b 
Multiplication 
/ 
a / b 
Division 
// 
a // b 
Modulus 
Expressions
Expressions are not evaluated by the SX28 assembler the same that you may be used to in a mathematics course. PEMDAS, which stands
for “parentheses, exponentiation, multiplication, division, addition, subtraction”, is a common term used to describe order of
operations in mathematics. The SX28 assembler interprets them much differently as expressions are evaluated strictly from left
to right after parentheses are considered. For example, the expression 2+3*5 which would normally evaluate to 17 would evaluate
to 25 on the Pico. To get the correct answer of 17, the expression would have to be written 2+(3*5).
Expression usage is very simple. You can insert them directly into the assembly code and they will evaluate as described previously.
Be aware that expressions are only evaluated during assembly and not during runtime so variables unknown to the assembler during
assembly should not be included in any expressions.
mov result0, 2+(3*5); 17 is moved into result
mov result1, 2+3*5; 25 is moved into result
mov result2, (2+3)*5; 25 is moved into result
