提示用户输入,计算字符串长度并重新打印输入

时间:2018-09-30 18:19:14

标签: assembly x86 irvine32

我正在做作业,被卡住了。我需要提示用户使用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 :(得分:1)

您无需计算长度,ReadString返回EAX中读取的字节数。 http://programming.msjc.edu/asm/help/source/irvinelib/readstring.htm

(此外,您必须在调用之前在ECX中将其最大读取大小传递给它,例如mov ecx, 50-1。ReadString需要知道您的缓冲区有多大,因此不会溢出。)


如果您想自己搜索字符串的第一个0字节,请搜索Google x86 assembly strlen并获取不计其数的点击量。或在此处搜索。