使用Windows 8.1 64位的NASM问题

时间:2014-11-20 14:26:05

标签: windows cmd compatibility nasm

我现在遇到麻烦让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

当我在as prog1.asm中输入cmd时,它会编译而不会出错,但是只要我输入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.

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

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:1)

同样的练习也有同样的问题。 我有Windows 7 64位。 我的解决方案是:

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

    mount c c:\ nasm16

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

      C:\

      1. 跑命令:
      2.   

        as prog1

        它起作用了! :)