Как временно хранить значения в ряд в сборке?
Вопрос
Я делаю 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, и вы закончите.