Запрос на ввод данных пользователем, подсчет длины строки и повторный ввод - PullRequest
0 голосов
/ 30 сентября 2018

Я работаю над заданием и застрял.Мне нужно предложить пользователю ввести предложение, используя WriteString, и сохранить ввод, используя ReadString.Кроме того, мне нужно посчитать длину строки, а затем перепечатать ввод пользователя.Я не хочу код, просто толчок в правильном направлении.У меня нет проблем с тем, чтобы моя программа запрашивала и принимала пользовательский ввод, но мне нужна помощь в подсчете длины строки в десятичном формате.

.data
String1 BYTE "Enter a sentence", 0
String2 BYTE 50 DUP (?)
String3 BYTE "Decimal length: ", 0
String4 BYTE "Hexidecimal length: ", 0
String5 BYTE "You entered: ", 0

.code
main proc
Exercise1 PROC

mov edx, OFFSET String1 ; move String1 to edx
call WriteString ;prompt user to enter their sentence
mov edx, OFFSET String2 ;array to store input
call ReadString ;store input to edx

;mov ecx, 20
;mov dl, 0 ;use to count length
;how do I loop through String2 to determine its length? 

Exercise1 ENDP

1 Ответ

0 голосов
/ 30 сентября 2018

Вам не нужно считать длину, ReadString возвращает количество байтов, прочитанных в EAX.http://programming.msjc.edu/asm/help/source/irvinelib/readstring.htm

(Кроме того, вы должны передать ему максимальный размер чтения в ECX, например, mov ecx, 50-1 перед вызовом. ReadString необходимо знать, насколько велик ваш буфер, чтобы он не переполнялся.)


Если вы хотите самостоятельно найти первый 0 байт в строке, Google x86 assembly strlen и совершите любой из миллиардов попаданий.Или поиск здесь на SO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...