186 lines
3.3 KiB
Plaintext
186 lines
3.3 KiB
Plaintext
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=="}
|
|
|
|
|
|
|
|
|
|
|