récap des temps :
en BASIC : 121s
en C : 182s
en LM : 82s
il est à noter le C plus lent que le basic.
le code
j'avais commencé à commenter ... je peux continuer mais pas motivé
j'ai pas le cordon, j'ai donc recopié le code à la mimine.
Si il y a des erreurs de recopie dites le moi
Code : Tout sélectionner
ORG 2000H
JMP START
SC DB 0,0,0,0
SCO DB 0
x DB 0
Y DB 0
OX DB 0
OY DB 0
RX DB 0
RY DB 0
TX DB 'SCORE:'
DB 0
START:
CALL CLS 'Effacement de l'écran
MOV DI,OFFSET TX
CALL PRINT 'Affichage de SCORE:
MOV BL,59
MOV BH,0
MOV CL,135
MOV CH,30
MOV DL,0
CALL BOX 'BOX(59,0)-(135,30)
MOV BL,60
MOV BH,0
MOV CL,134
MOV CH,0
B1: CALL LINE 'LINE(60,0)-(134,0)
ADD BH,1
ADD CH,1
CMP CH,4
JNE B1 'Répétition 4 fois avec incrémentation de Y
MOV BH,6
MOV CH,6
B2: CALL LINE 'LINE(60,6)-(134,6)
ADD BH,1
ADD CH,1
CMP CH,10
JNE B2 'Répétition 4 fois avec incrémentation de Y
MOV WORD PTR SC,3030H
MOV BX,OFFSET SC
ADD BX,2
MOV BYTE PTR [BX],30H
MOV BYTE PTR X,99
MOV BYTE PTR OX,99
MOV BYTE PTR Y,10
MOV BYTE PTR OY,10
MOV AL,3
NEG AL
MOV BYTE PTR RX,AL 'RX=-3
MOV BYTE PTR RY,2
REPEAT:
MOV AL,RY
ADD AL,Y
MOV BYTE PTR Y,AL 'Y=Y+RY
MOV AL,RX
ADD AL,X
MOV BYTE PTR X,AL 'X=X+RX
CMP AL,60
JC OK1
CMP AL,133
JC SU1
OK1:
MOV AL,RX
NEG AL
MOV BYTE PTR RX,AL 'RX=-RX
ADD AL,AL
ADD AL,X
MOV BYTE PTR X,AL 'X=RX+RX+X
SU1:
MOV AL,Y
CMP AL,30
JNC OK2 'Si Y>=30 alors OK2
MOV AH,2
NEG AH
CMP AL,AH
JNZ SU2
OK2:
MOV AL,RY
NEG AL
MOV BYTE PTR RY,AL 'RY=-RY
ADD AL,OY
MOV BYTE PTR Y,AL Y=OY+RY
SU2:
MOV BL,X
MOV BH,Y
CALL POINT
CMP DL,1
JNZ SU3
MOV AL,SCO
ADD AL,5
MOV BYTE PTR SCO,AL
CALL SCOR
MOV BL,6
MOV BH,0
CALL LOCATE
MOV DI,OFFSET SC
CALL PRINT
MOV BL,X
MOV BH,Y
MOV CL,X
ADD CL,2
MOV CH,Y
ADD CH,1
MOV DL,1
CALL BOX
MOV AL,Y
SUB AL,RY
MOV BYTE PTR Y,AL
MOV AL,RY
NEG AL
MOV BYTE PTR RY,AL
SU3:
MOV BL,X
MOV BH,Y
MOV CL,X
ADD CL,2
MOV CH,Y
ADD CH,1
MOV DL,0
CALL BOX
MOV BL,OX
MOV BH,OY
MOV CL,OX
ADD CL,2
MOV CH,OY
ADD CH,1
MOV DL,1
CALL BOX
MOV AL,X
MOV BYTE PTR OX,AL
MOV AL,Y
MOV BYTE PTR OY,AL
MOV AL,SCO
CMP AL,205
JNC FIN
JMP REPEAT
FIN:
IRET
CLS:
MOV AH,10H
INT 41H
RET
LINE:
MOV AH,13H
INT 41H
RET
BOX:
MOV AH,14H
INT 41H
RET
PRINT:
MOV AH,20H
INT 41H
RET
LOCATE:
MOV AH,OFH
INT 41H
RET
SCOR:
MOV BX,OFFSET SC
ADD BX,2
MOV AL,BYTE PTR [BX]
CMP AL,48
JZ SCO1
MOV BX,OFFSET SC
ADD BX,1
MOV AL,BYTE PTR [BX]
CMP AL,57
JZ SCO2
INC AL
MOV BX,OFFSET SC
ADD BX,1
MOV BYTE PTR [BX],AL
ADD BX,1
MOV BYTE PTR [BX],48
RET
SCO1:
MOV BX,OFFSET SC
ADD BX,2
MOV BYTE PTR [BX],53
RET
SCO2:
MOV BX,OFFSET SC
ADD BX,1
MOV BYTE PTR [BX],48
ADD BX,1
MOV BYTE PTR [BX],48
MOV BX,OFFSET SC
MOV AL,BYTE PTR [BX]
INC AL
MOV BYTE PTR [BX],AL
RET
POINT:
MOV DX,BX
MOV AH,17H
INT 41H
MOV AL,DL
MOV AH,0
MOV CL,6
DIV CL
MOV CH,AH
MOV CL,3
SAL AL,CL
MOV AH,0
ADD BX,AX
MOV AL,DH
AND AX,00F8H
MOV CL,5
SAL AX,CL
ADD BX,AX
MOV AL,DH
AND AX,0007H
ADD BX,AX
MOV AL,20H
MOV CL,CH
OR CL,CL
JZ POINT1
SHR AL,CL
POINT1:
AND AL,[BX]
MOV DX,0000H
JZ POINT2
MOV DL,1
POINT2:
RET
RET






