Question

Je suis en train de faire un réel 16 bits du système d'exploitation en mode et je veux passer des commandes que l'utilisateur tape dans.Je peux le faire mais je ne suis pas sûr de la façon de stocker la chaîne résultante de sorte qu'il peut être ensuite analysées.Est-il une meilleure façon que de remettre chaque personnage sur la pile puis de la pop et inverser quand ils veulent être utilisés?

Ma boucle principale:

mainLoop:
    mov bx, s_PROMPT
    call printStr           ; print the 'MOOS> ' prompt

    inputLoop:
        call getKeyPress    ; wait for the user to press a key

        call printChar      ; print the pressed key so the user can
                            ; see what they've typed

        push bl???

        cmp bl, 0xD         ; 0xD = 13 = ASCII code for enter
        jne inputLoop       ; go to inputLoop if does not equal enter

    call newLine

    jmp mainLoop

Le système d'exploitation est appelé MOOS par la voie.

Merci à tous ceux qui peuvent aider.

Était-ce utile?

La solution

Votre pile ressemble à ceci aftereach push:

 00:  's'  - Assume that here starts your string by pusing each char
 01:  't'
 02:  'r'
 03:  'i'
 04:  'n'
 05:  'g'
 06:      - Here is your stackpointer after the string has been completed.

Donc, il vous suffit de mémoriser la stackpointer quelque part (ici 0).Soit à compter de la longueur que vous pusing caractères, ou soustraire le courant de la pile de votre valeur enregistrée pour obtenir la longueur, et le copier quelque part.Vous pourriez avoir besoin d'ajouter un 0 octet ou de stocker la longueur le long de la chaîne, en fonction de vos chaînes sont organisées.Bien sûr, vous pouvez également utiliser la chaîne de caractères directement, sans besoin de le copier.

Après vous avez terminé, il suffit de réinitialiser le pointeur de pile à la valeur d'origine 0 et vous avez terminé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top