简单的组装过程(Hello world)

Posted

技术标签:

【中文标题】简单的组装过程(Hello world)【英文标题】:Simple Assembly procedure (Hello world) 【发布时间】:2016-03-02 21:37:05 【问题描述】:

我正在尝试编写我的第一个组装程序,但 NASM 在组装时给了我错误。我的代码是:

Hello PROC
segment .data
tekst db "Hello World!",0Dh,0Ah,"$"
segment stosik stack
resb 64
segment .text
mov ax, .data
mov ds, ax
mov ax, stosik
mov ss, ax
mov dx, tekst
mov ah, 9
int 21h
mov ax, 4C00h
int 21h
ENDP

这段代码会在第一行用 PROC 指令给我这个错误:

错误:解析器:预期指令

为什么我会收到这个错误,我该如何修复它以便我的代码能够正确组装?

【问题讨论】:

好吧,NASM 会告诉你到底是什么问题。那么你的问题是什么? 您可能想快速浏览一下 this answer,部分原因是它包含一个 nasm 风格的 hello world 程序,您可以使用它来调试自己的程序。 你应该检查how to ask页面。 tekst 是一个标签(在这种情况下,NASM 后面不需要冒号)。我认为用户在代码中使用的不是英语(荷兰语?)。 那些因为拼写错误而关闭它的人并没有真正看代码。如果您正在编写代码并且有名称不是英文的变量,那么tekst 不是错字。 【参考方案1】:
Hello PROC
...
ENDP

在 masm/tasm 中是正确的,但在使用 nasm 时不起作用。正确的语法是:

Hello:
...

在 nasm 中使用 masm/tasm 语法会使其抱怨 error: parser: instruction expectedwarning: label alone on a line without a colon might be in error 的第一行和最后一行。

【讨论】:

以上是关于简单的组装过程(Hello world)的主要内容,如果未能解决你的问题,请参考以下文章

如何制作“Hello world”内核

RabbitMQ:简单模式(Hello World)

TDD测试驱动开发:Hello, YOU -- 通过简单的 hello_test.go 程序学会编写测试,学习使用常量来优化并根据需要重构(谁说hello world就只是 hello world?)

C语言必须写main函数?最简单的 Hello world 你其实一点都不懂!

csharp 简单的Hello World C#

c++入门题(NOI)~太简单啦——输出“Hello World!”