汇编:从标准输入中读取整数,将其递增并打印到标准输出

汇编:从标准输入中读取整数,将其递增并打印到标准输出,第1张

汇编:从标准输入中读取整数,将其递增并打印到标准输出
movl %edi, %ecx    # store input in register %edimovl , %edx       # read one byte

这部分都是错误的。您无法将读取结果存储在寄存器中。这实际上是在将结果存储在%edi中包含的地址中,由于您没有设置它,所以可能是您没有业务存储任何内容的地方。您首先需要在内存中腾出空间来存储字符串。您还将读取四个字节而不是一个字节。

我会用这样的东西代替

subl , %espmovl %esp, %ecxmovl , %edx

这将为堆栈上的4个字节腾出空间,然后将堆栈的顶部用作存储字符串的地址。您还必须修改write syscall的参数才能使用此地址。

您还必须处理的另一个问题是stdin和stdout通常处理文本,因此您正在阅读的内容可能是字符串而不是数字,要将其用作数字,则必须将其转换为然后将其转换回原先的状态。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5019246.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存