【问题标题】:NASM trouble with Windows 8.1 64-BitWindows 8.1 64 位的 NASM 问题
【发布时间】:2015-01-18 10:54:30
【问题描述】:

我目前无法让 NASM 正常工作。我必须为我在大学做的一个主题安装它。我安装了 Windows 8.1 Pro 64 位。我设法通过下载最新版本来安装 NASM。

我们的第一个任务是将代码复制到 Hello World 程序并使其运行。下面是代码:

            bits 16
            org 0x100       ; Start the program at offset 100h
            jmp main        ; Jump to main program
message:    db 'Hello World', 0ah, 0dh, '$'
main:       mov dx, message ; Start address of message
            mov ah, 09      ; Prepare for screen display
            int 21h         ; DOS interrupt 21h
            int 20h         ; Terminate program

所以我将它保存为 prog1.asm 并使用我们的讲师给我们的批处理脚本来编译它。批处理脚本是这样的:

nasm -f bin %1.asm -o %1.com -l %1.lst

当我在 cmd 中输入 as prog1.asm 时,它编译时没有错误,尽管我在输入 prog1 以运行程序时,我在 cmd 窗口中收到以下错误:

This version of C:\Users\########\AppData\Local\nasm\prog1.com is not compatible with the version of Windows you're running. Check your computer's system information and then contact the software publisher.

我真的不知道该怎么做,无论我尝试什么或谷歌,似乎都没有给我一个直接的答案或适当的解决方案。

【问题讨论】:

标签: windows cmd compatibility nasm


【解决方案1】:

您构建的程序是 DOS 程序 - 它不会直接在 Windows 中运行(您可能能够在 Windows XP/9x 中以兼容模式运行它,但肯定不能在 64 位版本的 Windows 中运行8.1)。

您需要在某种可以处理 DOS 程序的模拟器中运行您的程序。可能最受欢迎的是 DOSBox。

如果您选择 DOSBox,您可以使用第 3 方前端进行配置。或者你可以直接启动 DOSBox,然后在 DOSBox 的提示符下输入:

mount c: <the directory where prog1.com is located>
c:
prog1

【讨论】:

  • 感谢您的信息!著名的!我现在安装了 DOSBox 并运行了您发布的命令,尽管没有任何反应。它只有一个空行,然后返回等待命令。如果我尝试在 DOSBox 中重新编译代码,它会告诉我 This program cannot be run in DOS mode.
  • 如果你不是在最后一步运行prog1 而是运行dir prog1,你的COM 文件会被列出吗?只是想确保您最终进入了 DOSBox 中的正确目录。
  • 是的,确实如此。列出了三个文件:ASM、COM、LST。
  • 当我尝试同样的事情时,我得到了Hello World。我用nasm -f bin -o prog1.com prog1.asm 组装(我在Windows 提示符下组装,然后在DOSBox 中运行COM 文件)。
  • 您使用的是什么版本的 NASM?还有你有什么操作系统?
【解决方案2】:

我在同一个练习中遇到了同样的问题。 我有 Windows 7 64 位。 我的解决方案是这样的:

  1. 已下载并安装 DosBox
  2. 从以下位置下载 NASM 的 16 位版本: http://prdownloads.sourceforge.net/nasm/nsm09838.zip?download (其他版本的 NASM 给了我奇怪的错误)
  3. 将 NASM 解压缩到 c:\nasm16
  4. 使用记事本,在 c:\nasm16\ 中创建 prog1.asm 文件(包含代码)
  5. 将“as.bat”文件复制到 c:\nasm16\
  6. 运行 DosBox,并在 Dosbox 中运行命令:

mount c c:\nasm16

  1. 使用命令打开已安装的驱动器:

c:\

  1. 运行命令:

作为 prog1

而且效果很好! :)

【讨论】:

    猜你喜欢
    • 2015-08-29
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 2013-06-06
    相关资源
    最近更新 更多