Assembly 程序集x86 MASM,读取字符串问题
输出: 欢迎来到克里斯的整数累加器 你的名字叫什么?克里斯 你好,你好 由于readstring出现问题,它正在打印第二个“Hello here”,而不是“Chris”。我已经把我的课本读了好几遍了,但它对我来说并不合适 如果您能提供任何解释,我们将不胜感激,谢谢Assembly 程序集x86 MASM,读取字符串问题,assembly,masm,irvine32,Assembly,Masm,Irvine32,输出: 欢迎来到克里斯的整数累加器 你的名字叫什么?克里斯 你好,你好 由于readstring出现问题,它正在打印第二个“Hello here”,而不是“Chris”。我已经把我的课本读了好几遍了,但它对我来说并不合适 如果您能提供任何解释,我们将不胜感激,谢谢 .data buffer DWORD 30 DUP (0) greetingTitle BYTE "Welcome to the Integer Accumulator by
.data
buffer DWORD 30 DUP (0)
greetingTitle BYTE "Welcome to the Integer Accumulator by chris",0
greetingName BYTE "What is your name? ",0
userName DWORD ?
userGreeting BYTE "Hello there, ",0
.code
main PROC
; introduction
;prints title and asks for user name
mov EDX, OFFSET greetingTitle
call WriteString
call CrLf
mov EDX, OFFSET greetingName
call WriteString
mov EDX, OFFSET buffer
mov ECX, SIZEOF buffer
call ReadString
mov userName, EAX
mov EDX, OFFSET userGreeting
call WriteString
mov EAX, OFFSET userName
call WriteString
call CrLf
如果要访问,数据将保存在缓冲区中
mov EDX, OFFSET buffer
mov ECX, SIZEOF buffer
call ReadString
如果您想在eax寄存器中使用它,您应该使用一个循环,并使用rol在每个循环中传递4个字符。
ReadString
可能会将名称放入缓冲区,因为这就是您传递的。您应该打印它,而不是可能包含长度的userName
(假设ReadString
在eax
中返回该长度)。
mov edx, offset buffer
call writestring