Visual Studio 2017 上的简单装配程序

2024-05-05

        .386
        .model flat, c
        .stack 100h
printf  PROTO arg1:Ptr Byte

        .data
msg1    byte "Hello World!", 0Ah, 0

        .code
main    proc
        INVOKE printf, ADDR msg1
        ret

main    endp
        end main

您好,我收到以下错误:

我搜索了一下,发现有人说可以通过链接microsoft运行时库来修复

谁能教我如何才能准确地解决它?

Thanks

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2019 unresolved external symbol _printf referenced in function _main testing C:\Users\Kin\Desktop\assembly\testing\testing\Source.obj    1   
Error   LNK1120 1 unresolved externals  testing C:\Users\Kin\Desktop\assembly\testing\Debug\testing.exe 1   

我没有安装 VS 2017 来尝试这个。重要的:确保您创建了一个Console Application而不是一个Windows Application。创建此项目后请确保MASM添加到构建自定义中。添加一个.ASM文件到您的项目。

获取您的代码并在顶部插入以下行:

includelib libcmt.lib
includelib libvcruntime.lib
includelib libucrt.lib
includelib legacy_stdio_definitions.lib

关于为什么 2013 年之后的 Visual Studio 中需要这些行的解释可以在此处找到堆栈溢出答案 https://stackoverflow.com/a/33724617/3857942.

你想要的C运行时作为控制台应用程序的入口点(反过来会调用您的main)。因为这个你MUST remove main从最后一行说end main。当你这样做时end main它绕过了C运行时启动启动。未能正确初始化C当您进行如下调用时,运行时可能会导致程序崩溃printf。它应该简单地是end并不是end main.

您应该测试的最终代码是:

includelib libcmt.lib
includelib libvcruntime.lib
includelib libucrt.lib
includelib legacy_stdio_definitions.lib

        .386
        .model flat, c
        .stack 100h
printf  PROTO arg1:Ptr Byte

        .data
msg1    byte "Hello World!", 0Ah, 0

        .code
main    proc
        INVOKE printf, ADDR msg1
        ret

main    endp
        end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Visual Studio 2017 上的简单装配程序 的相关文章

  • 如何让 C/C++ 编译器在用户指定的路径中查找头文件

    我正在使用其他人编写的一个库 它有点基于 C 用于 C 使用 我认为 标头或源文件中使用的所有包含内容均采用 形式 而不是 即使它们不是标准库文件 我的编译器无法识别它们并返回错误 找不到文件 问题的示例位于以下标头中 ifndef ga
  • 从共享点下载文件

    我正在尝试从共享点下载文件 我有此代码并抛出错误代码 500 static void DownloadFile string serverFilePath Here goes my URL that open the file from a
  • 调用可以是 cdecl 或 stdcall 的函数

    我需要编写调用外部函数的代码 该函数可以是 32 位 Windows 应用程序中的 stdcall 调用或 cdecl 我的代码 调用者 无法提前知道其中的哪一个 现在 如果我尝试从定义为 stdcall 的调用站点调用 cdecl 函数
  • 将对话框项分组到单个“组”(Visual Studio)

    我想创建一个对话框窗口来更改应用程序的设置 下面是 Adob e Reader 的屏幕截图 使用 Spy 后 我猜想 在右侧 所有控件 按钮 组合框 等 都属于 GroupBox 对于左侧TreeView控件中的每个类别 都有一个相应的Gr
  • 链接 .Net 程序集

    这都是假设 所以请耐心等待 假设我正在用 C 编写一个名为 Foo 的工具 输出是 foo exe 我发现了一些我喜欢使用的非常棒的库 称为 Bar 我可以在我的项目中将其引用为 bar dll 当我构建项目时 我的输出目录中有 foo e
  • 防止控制台应用程序中的内存工作集最小化?

    我想防止控制台应用程序中的内存工作集最小化 在Windows应用程序中 我可以这样做覆盖 SC MINIMIZE 消息 http support microsoft com kb 293215 en us fr 1 但是 如何在控制台应用程
  • 构建 C# MVC 5 站点时项目之间的处理器架构不匹配

    我收到的错误如下 2017 年 4 月 20 日构建 13 23 38 C Windows Microsoft NET Framework v4 0 30319 Microsoft Common targets 1605 5 警告 MSB3
  • 无法单步执行远程 SQL Server 2008 上的存储过程

    我在虚拟上安装了一个域控制器Windows Server 2008 x64 SQL Server 2008 Express x64正在运行Windows Server 2008 x64和客户端Windows 7 RTM x86 两者都已加入
  • 为什么我会收到未找到分析器的警告?

    我创建了一个玩具项目来检查最新的 NET 7 预览版 5 和正则表达式代码生成 它效果很好 所以我对现有项目应用了相同的更改 不是为了生产 而是为了个人生产力 由于某种原因 我收到这些警告 CS8032 An instance of ana
  • 在 x86 程序集中打印寄存器值的简单方法

    我需要在 8086 Assembly 中编写一个程序 接收来自用户的数据 进行一些数学计算并在屏幕上打印答案 我已经编写了程序的所有部分并且一切正常 但我不知道如何打印号码显示到屏幕上 在我所有计算结束时 答案是 AX 它被视为无符号 16
  • ICC 中的 -O3 会扰乱内在函数,使用 -O1 或 -O2 或相应的手动汇编即可

    这是后续这个问题 http stackoverflow com questions 49791664 o2 in icc messes up assembler fine with o1 in icc and all optimizatio
  • 设备的临时协同设计在 Studio 中成功,但在 Jenkins 中失败

    我有一个支持 Android 和 iOS 的 Xamarin Forms 应用程序 我已经生成了 Jenkins 版本来编译它们 所有 Android 构建都可以工作 iOS 调试版本编译良好 然而 Ad Hoc 构建无法完全针对 iPho
  • 在 C# 中异步发送电子邮件?

    我正在开发一个应用程序 用户在窗口中的某个按钮上单击 按 Enter 键 该应用程序会执行一些检查并确定是否发送几封电子邮件 然后显示另一个带有消息的窗口 我的问题是 发送 2 封电子邮件会明显减慢进程 并且在发送过程中的一些 8 秒内 第
  • 比“add esp, 4”更小的指令

    又是我 我的程序中有很多 add esp 4 我正在尝试减小它的大小 是否有任何更小的指令可以替代 add esp 4 pop edx 或者您不介意破坏的任何其他整数寄存器 这就是现代编译器实际上所做的 https stackoverflo
  • 使用 SpreadsheetLight 进行行计数

    我正在寻找一个类似于 DataTable Rows Count 的函数 它可以与 SLDocument 一起使用来找出有多少行中有数据 SpreadsheetLight 中有可用的东西吗 还有其他方法可以实现这一目标吗 Brendan SL
  • Bot 在本地计算机上的 Bot Framework Emulator 中运行,但在部署到 Microsoft Azure 后无法运行 - HTTP 状态代码 NotFound

    现在 我正在测试启动机器人项目所需的步骤2019 年虚拟演播室社区 测试机器人机器人框架模拟器 V4 然后将该机器人部署到 Microsoft Azure 现在 我正在测试 Virtual Studio Community 2019 中提供
  • 在 Windows 上从源代码构建 PhantomJS-2

    我正在尝试基于这些在 Windows 8 1 x64 上从源代码构建 PhantomJS 2 的开发版本指示 https github com ariya phantomjs wiki PhantomJS 2 但是我收到以下错误 mingw
  • 通过开源 PCL 使用 API 查看 3D 点云

    我使用 ToF 飞行时间 相机来获取 XYZ 格式的深度数据 为了实现 3D 点云的可视化目的 我想使用开源 PCL 提供的 API 网址为http pointclouds org documentation tutorials pcl v
  • intfmt: db "%d", 10, 0 在汇编中的含义

    我最近在我的一个汇编文件的顶部看到了这个 并意识到我在打印整数的过程中花了很长时间使用它 而没有真正意识到它最初来自哪里 在我的基本汇编模板中使用 或 10 0 是什么结尾的意思是 section data intfmt db d 10 0
  • Visual Studio 2019 在哪里可以找到 .net core 3.1 的 WebAssembly 模板

    我正在使用最新的 16 4 2 日期为 2020 年 1 月 8 日 Visual Studio 2019 当我尝试创建 Blazor WebAssembly 解决方案时 尽管 blazor 应用程序 的描述包含 服务器或 WebAssem

随机推荐

  • 无法在IntelliJ IDEA中编译和运行java代码

    使用 IntelliJ IDEA 版本 12 1 6 我想运行 Horstmann Core Java 书中的示例 public class Welcome public static void main String args Strin
  • 为 Mercurial 执行 hgweb.cgi 时,指定的 CGI 应用程序行为不当...

    我有 IIS 6 我将 Mercurial 安装在 c program files mercurial 中 我在 c program files python 中安装了 Python 2 6 I added extension handli
  • antisamy 解析器强制关闭标签

    我使用 Antisamy 来验证 HTML 我的政策允许 iframe 例如 YouTube 视频 问题是 如果标签为空 像这样 清洗后会是这样的 但它应该有正常的结束标签 这会破坏之后页面上的所有内容 我已经将指令设置为使用大部分 HTM
  • 为什么多表连接会产生重复行?

    假设我有三个表 A B 和 C 每个表都有两列 一个主键和一些其他数据 它们每个都有相同的行数 如果我JOIN主键上的 A 和 B 我最终应该得到与其中任何一个相同的行数 而不是 A rows B rows 现在 如果我JOIN A JOI
  • 如何从 OnChange 事件捕获文本框的值

    在我的 C MVC 应用程序中 我有一系列这样生成的文本框 foreach object item in items Html TextBox 渲染的结果是一系列看起来像这样的文本框
  • 如何使用 Material UI 制作一个圆形复选框?

    我尝试匹配的设计要求复选框为圆形 我正在使用 Material UI 和 React 边框半径不起作用 因为实际图标的边框不是可见复选框的边框 我不能只使用像 Font Awesome 这样的东西 因为它需要实际检查和取消检查 Curren
  • C# 中的 DateTime.Parse 抛出异常

    我不知道为什么抛出异常 这是工作代码 DateTime Parse 1 12 2012 12 00 00 AM 这是抛出异常的一个 DateTime Parse 1 13 2012 12 00 00 AM 抛出的异常是 格式异常 包括此消息
  • iPad SplitViewController 具有纵向模式菜单,如设置应用程序

    我想在我的 iPad 应用程序上获得 SplitView 其中左侧菜单处于纵向 例如 iPad 设置 现在 在纵向方向上 我有一个全屏内容视图 并且导航栏上有一个按钮 其中包含一个带有左侧菜单的弹出窗口 这就是你需要的魔法 该方法位于 UI
  • NASM 轮班操作员

    您将如何在寄存器上进行 NASM 中的位移位 我读了手册 它似乎只提到了这些操作员 gt gt lt lt 当我尝试使用它们时 NASM 抱怨移位运算符处理标量值 您能解释什么是标量值并举例说明如何使用 gt gt and lt lt 另外
  • 使用 Android Intent 发送基于 HTML 的电子邮件正文

    我需要使用 android Intent extra 将基于 HTML 的内容发送到电子邮件应用程序 它接受一些标签 例如 br 但它没有显示任何锚链接或 h1 其显示像简单的文本 EDITED I have tried with gmai
  • 如何使用生成器遍历文件系统?

    我正在尝试创建一个实用程序类来遍历目录中的所有文件 包括子目录和子子目录中的文件 我尝试使用发电机 因为发电机很酷 然而 我遇到了困难 def grab files directory for name in os listdir dire
  • Pymacs 助手在 30 秒后未启动

    我见过其他关于此的问题 但没有一个得到真正的回答 而且没有一个是我的问题 我有一个新系统 emacs 23 1 Centos 6 2 我认为 我下载了最新的 pymacs 并安装了它 但是 我得到 error Pymacs helper d
  • 发布到 Firebase 时,单元格会重复多次

    我正在制作一个可以发布消息的应用程序 我将数据存储在 Firebase 中 当我发布新消息时 该特定单元格会重复多次 因此我会看到该帖子 2 3 4 次或更多次 但这只是 Firebase 中的一篇文章 当我刷新屏幕 例如对数据进行排序 时
  • 通过 API Gateway 使用表单数据将图像发布到 Lambda 函数会导致文件无效

    I ve a 用 Go 编写的 Lambda 函数 https github com mhausenblas imgn blob master functions app uploadimg main go应该允许图像文件上传 通过 HTM
  • 仅使用 1 行 C++ 初始化 2d 向量

    我需要能够初始化一个 2D 向量 int同一条线我在其中创建它 更具体地说 我必须创建一个3x2大小 2D 向量并将其所有值设置为 0 仅使用1行代码 有没有一种方法可以在不使用 for 循环和几行代码的情况下完成此操作 尝试这个 std
  • clang-tidy - 忽略第三方标头代码

    我正在为我的项目使用 CMake 并且我想向项目引入 clang tidy 检查 我用于此目的CMAKE CXX CLANG TIDY and clang tidy用于检查设置的文件 我想在 CI 中使用警告作为错误来可靠地检查提交是否引入
  • Swing 是否支持 Windows 7 风格的文件选择器?

    我刚刚添加了一个标准 打开文件 与我正在编写的一个小型桌面应用程序的对话 基于JFileChooserSwing 教程的入口 http download oracle com javase tutorial uiswing componen
  • IOS:使用@property释放变量(非原子,保留)

    带有 property 非原子和保留的变量是否应该显式释放 interface MyScreenViewController UIViewController
  • 循环遍历字符串中的 html 标签并将内部文本添加到数组中

    我有一些 HTML 内容保存为字符串 我想循环遍历该字符串中的每个标题标签并获取其内部文本 let str h1 topic 1 h1 p desc of topic 1 p h1 topic 2 h1 p desc of topic 2
  • Visual Studio 2017 上的简单装配程序

    386 model flat c stack 100h printf PROTO arg1 Ptr Byte data msg1 byte Hello World 0Ah 0 code main proc INVOKE printf ADD