DB     : vvvv vvvv
CALL   : 0000 0000   aaaa aaaa
RET    : 1000 0000
JMP    : 0100 0000   aaaa aaaa
JLT    : 1100 0000   aaaa aaaa
JEQ    : 0010 0000   aaaa aaaa
PUSH   : 1010 00xx
POP    : 0110 00xx
MOV v  : 1110 00xx   vvvv vvvv
SUB v  : 0001 00xx   vvvv vvvv
CMP v  : 1001 00xx   vvvv vvvv
MOV r  : 0101 xxyy
SUB r  : 1101 xxyy
CMP r  : 0011 xxyy
LDR    : 1011 xxyy   aaaa aaaa
STR    : 0111 xxyy   aaaa aaaa
OUT    : 1111 00xx
TIM    : 1111 1000   mvvv vvvv



a = 0
b = 1
c = ?

print a

loop
    print b
    c = a + b
    a = b
    b = c
loop si b < c




a    b    
R0   R1   R2   R3
233  121  -233   121


OUT
0
1
1
2

233





a + b = a - -b

SUB R0 R1
R0 - R1

R0 = 0
R1 = b
R2 = a
0 - b
R0 = -b


R0 = a
R1 = b
R2 = 0, -b
R3 = ?



_data:
_add:
    PUSH R2
    MOV R2 0
    SUB R2 R1  ; 0 - b
    SUB R0 R2  ; a - (0 - b) = a - -b = a + b
    POP R2
    RET
_main:
    MOV R0 0
    MOV R1 1

    ...

    R2 = 7
    CALL _add
    R2

SUB R0 R1
SUB R2 R0
a - -b























LDR Rx Ry _label	;génération binaire 1011xxyy aaaaaaaa  avec xx et
			;yy = R0,R1,R2,R3
			;load dans le registre xx la valeur à l'adresse aaaaaaaa+Ry


CMP Rx Ry		;génération binaire 0011xxyy  avec xx et yy = R0,R1,R2,R3
			;compare le registre xx à la valeur du registre yy, modifie
			;les flags LT et EQ
			;LT= (Rx<Ry), EQ=(Rx==Ry)

JLT _label		;génération binaire 11000000 aaaaaaaa
			;saut conditionnel (flag LT=1) à l'adresse aaaaaaaa


MOV Rx valeur	;génération binaire 111000xx vvvvvvvv  avec xx = R0,R1,R2,R3
			;met dans le registre xx la valeur  vvvvvvvv


OUT Rx      ;génération binaire 111100xx avec xx = R0, R1,R2,R3 
			;met la valeur du registre Rx dans le périphérique de sortie
            ;dans le cas du robot, le périphérique de sortie est connecté aux
			; Moteurs les valeurs sont les vitesses svvvsvvv pour moteur
			; gauche et moteur droit
            ;svvv vitesse -8..7, gauche et droite
            ;svvv 4-bits signé en complément à deux




TIM valeur	;génération binaire 11111000 mvvvvvvv 
			;met dans le registre de Timer la valeur  mvvvvvvv
            ;le processeur se met en pause pendant multiplicateur*(vvvvvvv+1)
			; en millisecondes
            ;vvvvvvv valeur de 0x0 (représente 1) à 0x7F (represente 128)
            ;m=0 (multiplicateur = 1) ou m=1 (multiplicateur = 100)




Connexion
{"type": "connect", "name": "Nogard"}

Commandes annexes
{"type": "msg", "format": "str", "string": "#LED ON"}
{"type": "msg", "format": "str", "string": "#LED OFF"}
{"type": "msg", "format": "str", "string": "#MOTOR ON"}
{"type": "msg", "format": "str", "string": "#MOTOR OFF"}

Fibbo 8bits
{"type": "msg", "format": "base64", "string": "4ADhAfDx4gBc2d5RVzTAEkAF4EGA"}

Fibbo 16bits
{"type": "msg", "format": "base64", "string": "4AHV2t/y8/LzoKGh1dbRYTLAFUAXE/+g0NPUYDfAIUAjQCdjYkAHY2KA"}

LED
{"type": "msg", "format": "base64", "string": "0NXa3xD1+AGQ3MAEEfX4AZHcwAwS9fgBktzAFBP1+AGT3MAcgA=="}

Demi tour + fuite
{"type": "msg", "format": "base64", "string": "4Dvw+ID4MuAA8Phk4Mzw+KXgAPDgAPD4ZIA="}

Parcours
{"type": "msg", "format": "base64", "string": "4BHw+ILgIvD4guAz8Pil4DHw+ILgM/D4mOAT8PiC4DPw+IjgAPCA4ADw+GSA"}
{"type": "msg", "format": "base64", "string": "4BHw+ILgIvD4guAz8Pik4DHw+IPgM/D4k+AT8PiD4DPw+IrgAPD4oOCi8PiH4ADw+IzgKvD4h+AA8Pig4Pfw+ILgf/D4guD38Pi04ADwgOAA8PhkgA=="}





