Comment faire un sleep en assembleur ?

Yakurena Messages postés 47 Statut Membre -  
BugMaker Messages postés 34 Statut Membre -
Bonsoir,
J'aimerais faire un programme en assembleur MIPS permettant de synchroniser la saisie de caractères au clavier par l'utilisateur et leur affichage à l'écran. Le problème est que le processeur est tellement rapide qu'il affiche toujours instantanément les caractères à l'écran, dès qu'ils sont saisis au clavier.
J'ai donc pensé que le seul moyen de permettre à l'utilisateur de "prendre de l'avance" est d'endormir le processeur pendant un temps donné. Le problème pour cela est que je n'arrive pas à trouver l'instruction en assembleur pour faire cela (l'équivalent de "sleep" dans les langages de programmation). J'ai essayé de generer un programme en assembleur à partir de la compilation d'un programme en C contenant juste l'instruction "sleep", mais ça me donne un code avec des instruction très bizarres et qui ne marchent pas à l'execution.
J'aimerais donc savoir si quelqu'un connaîtrait un code en assembleur permettant de le faire.
Merci d'avance.
A voir également:

3 réponses

iamyan38
 
Tempo en assembleur (HC12) :

Une tempo = des boucles qui font rien ;)

Voici en théorie une tempo d'une seconde (appel : TMP) :

TMP LDX #$38E ; tempo 1s = 1000($38E) x 1ms
AT NOP
LDAB #$32
AT1 LDAA #$77
AT2 DECA
BNE AT2
NOP
DECB
BNE AT1
DEX
BNE AT
RTS

Sinon j'ai bricolé une tempo d'environ 0.6 de sec pour HC12. Il faut donc adapter le nombre de fois où l'on appelle cette fonction.

tempo PSHY
PSHB
LDY #$FFFF
bcl2 LDAB #$10
bcl1 DECB
BNE bcl1
DEY
BNE bcl2
PULB
PULY
RTS
1
blux Messages postés 4928 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Salut,

Une boucle avec NOP, ça irait ?
0
blux Messages postés 4928 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Pour compléter :

NOP = No OPeration.

Assembly mnemonic for the instruction with opcode 0x90 (in Intel and compatible CPUs).

Intel Arch. Software Dev's Manual wrote:
Description

Performs no operation. This instruction is a one-byte instruction that takes up space in the
instruction stream but does not affect the machine context, except the EIP register.
The NOP instruction is an alias mnemonic for the XCHG (E)AX, (E)AX instruction.

Flags Affected
None.

Exceptions (All Operating Modes)
None.

Et en MIPS, l'instruction est NOOP...
0
BugMaker Messages postés 34 Statut Membre 7
 
Salut,
En assembleur 8080 (intel compatible Z80, un vieux truc ;-)
c'était 0x00 le NOP
A+
phil
0