装配:将某些内容打印到屏幕(到命令行)的最佳方式是啥

Posted

技术标签:

【中文标题】装配:将某些内容打印到屏幕(到命令行)的最佳方式是啥【英文标题】:Assembly: What is the best way to print something to screen (to command line)装配:将某些内容打印到屏幕(到命令行)的最佳方式是什么 【发布时间】:2013-04-03 00:02:09 【问题描述】:

我一直在做一些研究,但我发现越来越多的方法可以做我想做的事,而我一个都不理解。

我需要将什么代码汇编成 .exe 以将5 返回到命令行?

我想要一个在调用时打印 5 的 exe。

研究:

printf "5", 0

它需要链接2个库,我想保持简单。

move ebx, 5 ; or move ax, 5
ret

为什么会打印 5 ?这会加载一个带有值5 的寄存器并返回。没有别的了。

谁能解释一下这些返回5的方式之间的区别?

什么最适合非常简单的 Windows EXE 可执行文件?

我无法得到 *** 中已提出的问题的答案。

注意,我使用:Win 7、WinAsam、MASM

谢谢!

【问题讨论】:

Printing a character to standard output in Assembly x86 的可能重复项 【参考方案1】:

为什么不使用 printf?在 Windows 上,它是 MS C 运行时的一部分,现在是 Windows 的一部分。

使用 Windows API,您将使用:

GetStdHandle

以及以下之一:

WriteConsole

WriteConsoleOutput

WriteConsoleOutputAttribute

WriteConsoleOutputCharacter

WriteFile

一切都取决于你想怎么做。

moving 一些东西到一个寄存器不会打印任何东西,你必须告诉操作系统来打印它。

如果你发现一些你不理解的东西,做一些研究,阅读文档,代码 cmets,玩弄代码改变的东西,看看它是如何工作的。

【讨论】:

以上是关于装配:将某些内容打印到屏幕(到命令行)的最佳方式是啥的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令sed

QtCreator:将字符串打印到终端的最佳方式是啥?

Linux命令之保存命令结果到文件并且输出到屏幕tee

在 Python 脚本中采用命令行参数的最佳方式

Java或C#调用命令行批处理命令如何获得返回值

bat常用命令详解