24H_du_code_2026/notes.txt
2026-03-21 13:59:01 +01:00

127 lines
1.5 KiB
Plaintext

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