我无法使用此声明,因为selectedWords可以是任何字符串。使字符串---以0结尾
.DATA
guessWords BYTE SIZEOF selectedWords DUP ('-'), 0
所以我尝试这样做:
;Wordls what we select by rundom code
selectedWords BYTE ?
lengthSelectedWorld DWORD ?
;Letter what we guess, input from keyboard
guessLetter BYTE ?
guessWords BYTE ?
;Letter what are unknows, change with -
letterUnknown BYTE "-", 0
而且我写这个功能
make_array1 PROC
mov edx,OFFSET selectedWords
call StrLength
mov lengthSelectedWorld,eax
mov lengthSelectedWorld1 ,eax
inc lengthSelectedWorld
loop_add_more:
cmp lengthSelectedWorld, 1
je done
dec lengthSelectedWorld
mov eax, '-'
mov ecx, lengthSelectedWorld1
mov edi, offset guessWords
rep stosw
mov edx, offset guessWords
call WriteString
call Crlf ;stampamo enter novi red
jmp loop_add_more
done:
mov eax, '0'
mov ecx, lengthSelectedWorld1
mov edi, offset guessWords
rep stosw
mov edx, offset guessWords
call WriteString
call Crlf ;stampamo enter novi red
ret
make_array1 ENDP
但这funcion后,我得到guessWords什么是字符串----- - 并且没有0和。那么如何让字串guessWords = ------- 0?
它非常重要,我对字符串的,因为在代码中的一些其他比较学结束0 ..
只要自己把0放在那里?还要注意'stosw'是单词,而不是字节。 – Jester
如果我把stosb我得到这样的http://prntscr.com/ffqvdf然后我不知道我如何得到更多的信..然后我想.. :( – SakaSerbia
关于缓冲区...是的,这是故事汇编语言,你必须自己处理动态大小,这种语言几乎没有任何帮助。对于hangman游戏,假设某些最大长度的单词/句子被猜测是合理的,例如200 ...然后简单地分配200B对于数据段中的被选择和猜测的字,仅使用该缓冲区的第一部分用于较短的单词/句子(确保将其正确地清除)。对于不同的任务,其中动态数据可能以千克或兆字节或千兆字节为单位,你必须处理动态内存分配,这里有200个就足够了 – Ped7g