Как временно хранить значения в ряд в сборке?

StackOverflow https://stackoverflow.com//questions/23027970

  •  21-12-2019
  •  | 
  •  

Вопрос

Я делаю 16-битный операционную систему реального режима, и я хочу пропустить команды, которые пользователь вписываются. Я могу сделать вход, но я не уверен, как хранить полученную строку, чтобы она была позжеОтказЕсть ли лучший способ, чем просто положить каждый персонаж на стек, а затем попнуть и переоценить их, когда они хотят использовать?

Моя основная петля:

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
.

Операционная система называется moos кстати.

Благодаря всем, кто может помочь.

Это было полезно?

Решение

Ваш стек выглядит так, как этот дочерний толчок:

 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.
.

Так что вы просто храните текущий штаб-поиск где-то (здесь это 0).Либо подсчитайте длину, в то время как вы используются паспорясовые символы, или вычтете текущий стек из сохраненного значения, чтобы получить длину и скопировать его где-нибудь.Вам может потребоваться добавить 0 байт или хранить длину вместе со строкой, в зависимости от того, как организованы ваши строки.Конечно, вы также можете использовать строку непосредственно без необходимости скопировать ее.

После того, как вы закончите с этим, просто сбросьте указатель стека на исходное значение RENACODICODCODE, и вы закончите.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top