gpt4 book ai didi

c++ - C++ 和汇编程序之间的 Scanf 函数

转载 作者:太空宇宙 更新时间:2023-11-04 13:15:33 24 4
gpt4 key购买 nike

我有这个代码:

void scan ()
{
char scanf_fmt[] = "%c";
char printf_fmt[] = "%c\n";
char character[30];

_asm
{
push 1 // Buffer size, you can also write `push size character`

lea eax, character
push eax // Pointer to character

lea eax, scanf_fmt
push eax // Pointer to format string
call scanf_s


add esp, 12 // Clean up three pushes

movzx eax, byte ptr[character] // MOVZX: Load one unsigned byte into a 32-bit-register
push eax// Character as value


lea eax, printf_fmt
push eax // Pointer to format string

call printf

add esp, 8 // Clean up two pushes era 8
}

//return 0;
}

此函数打印单词的第一个字符,但我复制了此函数并更改了名称,例如:scan() 改为 scan2();

当我使用新函数时,程序采用函数 scan 的先前单词。

我该怎么做才能读出不同的单词?

最佳答案

使用

lea eax, character
push eax // Pointer to character

你告诉 scanf 将扫描的数据放在哪里,在你的例子中

char character[30];

如果你有第二个函数,但使用相同的缓冲区,你将覆盖彼此的输入

如果你想保存内容,创建第二个缓冲区,例如

char character[30];
char character2[30];

并改用它:

        push 1 
lea eax, character2
push eax // Pointer to buffer
lea eax, scanf_fmt
push eax // Pointer to format string
call scanf_s
add esp, 12 // Clean up three pushes

movzx eax, byte ptr[character2]
push eax // Character as value
lea eax, printf_fmt
push eax // Pointer to format string
call printf
add esp, 8 // Clean up two pushes era 8

关于c++ - C++ 和汇编程序之间的 Scanf 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37557746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com