简单的组装过程(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 expected
和 warning: label alone on a line without a colon might be in error
的第一行和最后一行。
【讨论】:
以上是关于简单的组装过程(Hello world)的主要内容,如果未能解决你的问题,请参考以下文章
TDD测试驱动开发:Hello, YOU -- 通过简单的 hello_test.go 程序学会编写测试,学习使用常量来优化并根据需要重构(谁说hello world就只是 hello world?)