【问题标题】:Print values of variables on a line (without new line) [duplicate]在一行上打印变量的值(没有新行)[重复]
【发布时间】:2021-02-02 19:22:14
【问题描述】:

所以,我遇到了一个问题,即在新行上打印变量的每个值,但打印格式是一行。我真的花了很多时间寻找解决方案。但是这个解决方案不起作用。我认为那是因为我是汇编程序的菜鸟。所以,我删除了我所有的失败......这是我的代码:

global main
extern printf
section .data
str: db "%i", 10, 0
count: dw 1

section .text
main:
start:
push dword [count]
push dword str
call printf
push dword [count]
push dword str
call printf

所以,现在在终端打印这个:

1
1

这样打印需要做什么:

1 1

请举例我的代码,我理解.... 请不要在互联网上给我发送类似问题的第一个链接,因为我试过这个。我真的不明白... 我如何插入具有不同字符的打印字符串,例如':','空格','/'和其他......? 谢谢你:)

【问题讨论】:

  • str定义中的10充当U+000A换行符,用作换行符。
  • @ecm 我知道。我尝试删除它,但在此 str 之后不打印
  • 您可能需要刷新 C 库的缓冲区。
  • 我更新了@ecm链接的问题的一些答案; Printf without newline in assembly 具有适用于 Linux 的 NASM 代码,因此即使在从格式字符串中删除换行符后,您也可以刷新缓冲区以查看 printf 输出。

标签: linux assembly nasm


【解决方案1】:

改变

str: db "%i", 10, 0

str: db "%i ", 0

10 是换行符。这会将其替换为空格。

【讨论】:

  • 文件编译但不输出任何东西。也就是如果10, 0,则显示ifnomation,如果去掉10,则什么都不显示
  • 确保在程序结束时调用exit(),以便刷新缓冲区。
猜你喜欢
  • 2017-05-30
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 2012-08-15
相关资源
最近更新 更多