2026-03-22 09:36:59 +01:00

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=="}