Как взять строковый ввод в сборку - PullRequest
0 голосов
/ 02 июля 2018

Я пытался найти ответ на форуме, но все, что я получал, это входные данные в 16-битном или насм. Я пытался использовать

push ecx
push edx
mov edx, offset myVar
mov ecx, sizeof myVar
call readstring

но это не работает, как я ожидал. Я пытаюсь взять строку / символ в качестве ввода и увеличить его (например, от A до B) и распечатать его на экране. Мой код:

include irvine32.inc
.data
myVar BYTE ?
myVar2 BYTE ?
shifts DWORD 3
.code
main proc
    push ecx
    push edx
    mov edx, offset myVar
    mov ecx, sizeof myVar
    call readstring
    mov esi, offset [myVar]
    mov al,[esi]
    mov myVar2, al
    mov eax, DWORD PTR myVar2
    add eax, shifts
    mov DWORD PTR myVar2,eax
    mov edx, offset myVar2
    call writestring
    exit
main endp
end main

Код работает нормально, если я инициализирую myVar символом и увеличиваю его, но (добавляем символ ascii мусора, чтобы получить результат, я не знаю почему) Так что я знаю, что проблема заключается в получении ввода.

1 Ответ

0 голосов
/ 02 июля 2018

Извините, у книги был ответ.

.data
buffer BYTE 21 DUP(0)          ; input buffer
byteCount DWORD ?              ; holds counter
.code
mov   edx,OFFSET buffer         ; point to the buffer
mov   ecx,SIZEOF buffer         ; specify max characters
call  ReadString                ; input the string
mov   byteCount,eax             ; number of characters
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...