【发布时间】:2026-01-26 23:50:01
【问题描述】:
我正在编写一个同时使用 Assembly 和 c++ 的程序来收集用户输入的数据。在我的 c++ 文件中,我使用 cin 循环读取用户编号:
while (cin >> input)
{
myArray.push_back(input);
}
cin.clear();
用户还被告知在完成后输入CTRL-D。在我链接的程序集文件中,我询问用户 Are these numbers correct (y/n)?
在更新到 Ubuntu 19.04 之前,我会在读入输入后执行上述cin.clear(),因此当我在我的程序集文件中执行call getchar 时,我实际上可以接收来自用户的输入。但是,在更新 Ubuntu 后,我的程序仅在数字正确且未读入 ’y/n‘ 时才输出问题。
在我的 cin 循环之后,我也尝试过 cin.ignore(),但这似乎无法解决我的问题。我只能假设我的程序集文件中的 call getchar 正在读取一些换行符而不是接受用户输入,但无论我在网上找到什么修复程序,似乎都没有接受它。
为了进一步说明,我正在终端中使用 g++ 进行编译/链接,并使用 nasm 进行组装。如果需要,我可以提供更多代码。在组装中,我只是在做:
mov rax, 0
mov rdi, correctnumbersprompt ;This holds the string asking y/n
call printf
call getchar
【问题讨论】:
标签: nasm ubuntu-19.04