如何使用 MASM 或 FASM 编译 DOS 程序

发布于 2024-12-09 11:37:03 字数 303 浏览 0 评论 0原文

我想使用 MASM 或 FASM 等汇编器编译简单的程序。

Ideal
model small
Stack 256

Dataseg

    str1 db 'hello','$'

Codeseg
Startupcode

   lea dx, [str1]
   mov ah, 09h
   int 21h

   lea dx, [ent]
   mov ah, 09h 
   int 21h

exitcode
END

这个源码是在我大学的 TASM 上编译的,但是如何使用 MASM 或 FASM 来编译呢?

I want to compile simple program using assemblers such as MASM or FASM.

Ideal
model small
Stack 256

Dataseg

    str1 db 'hello','

This source is compiled on TASM in my college, but how to do it using MASM or FASM ?

Codeseg Startupcode lea dx, [str1] mov ah, 09h int 21h lea dx, [ent] mov ah, 09h int 21h exitcode END

This source is compiled on TASM in my college, but how to do it using MASM or FASM ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

峩卟喜欢 2024-12-16 11:37:03

中断只能在 16 位版本的 Windows 中使用。这些 int 21h 调用必须替换为等效的 Win32 函数调用。另外变量 ent 是在哪里定义的?如果您想使用 Visual Studio 进行编译,则将自定义构建规则设置为 MASM,转到链接器设置并将子系统设置为 windows,并将入口点设置为 main。构建并享受。看
为 MASM32 设置 Visual Studio 2010编程

这是相关的 MASM 代码清单:

.386
.model small
.stack 256

.data
  str1 db 'hello','


.code
main:
  lea dx, [str1]
  mov ah, 09h
  int 21h

  lea dx, [ent]
  mov ah, 09h 
  int 21h
end main

Interrupts can only be used in 16 bit versions of Windows. Those int 21h calls must be replaced by the equivalent Win32 Function calls. Also where is the variable ent defined? If you want to compile with Visual studio then set the custom build rules to MASM, go to linker settings and set the sub-system to windows and the entry point to main. Build and enjoy. See
Setting Up Visual Studio 2010 For MASM32 Programming.

This is the relevant MASM code listing:

.386
.model small
.stack 256

.data
  str1 db 'hello','


.code
main:
  lea dx, [str1]
  mov ah, 09h
  int 21h

  lea dx, [ent]
  mov ah, 09h 
  int 21h
end main
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文