Assembly 程序集是否从下到上组装代码?

Assembly 程序集是否从下到上组装代码?,assembly,Assembly,我很困惑,我有一个简单的hello world程序,经过编译和测试。 即使命令msg db'Hello,world!',汇编程序如何知道要将什么写入ecx,是否在底部执行0xa?汇编程序是从下到上读取代码的,还是这是如何工作的 还有一个问题。为什么0xa在msg db'你好,世界 mov edx, len ;message length mov ecx, msg ;message to write mov ebx, 1 ;file descriptor (stdout) m

我很困惑,我有一个简单的hello world程序,经过编译和测试。 即使命令msg db'Hello,world!',汇编程序如何知道要将什么写入
ecx
,是否在底部执行0xa?汇编程序是从下到上读取代码的,还是这是如何工作的

还有一个问题。为什么
0xa
msg db'你好,世界

mov edx, len    ;message length
mov ecx, msg    ;message to write
mov ebx, 1      ;file descriptor (stdout)
mov eax, 4      ;system call number (sys_write)
int 0x80        ;call kernel
mov eax, 1      ;system call number (sys_exit)
int 0x80        ;call kernel

msg db  'Hello, world!',0xa     ;our dear string
len equ $ - msg         ;length of our dear string

汇编程序只是从汇编代码中产生机器代码。然后机器代码运行。

汇编程序只是从汇编代码中生成机器代码。然后运行机器代码。

汇编程序可以发出一个占位符,并在以后计算出地址时填充它。一些汇编程序也使用多个过程
0xa
只是换行的ascii码。谢谢,现在我明白了!你可以组装然后拆开这个物体,然后把它和一些东西连接起来,然后把它们拆开,你就可以看到这些工具在做什么。有时它们会留下一个占位符来填充,有时它们会用另一个/其他指令替换指令。修改当然是特定于链接的,链接在另一个地方或其他项目。链接器可以选择其他解决方案(特别是近外部与远外部)。汇编程序可以发出占位符,并在以后计算出地址时填充它。一些汇编程序也使用多个过程
0xa
只是换行的ascii码。谢谢,现在我明白了!你可以组装然后拆开这个物体,然后把它和一些东西连接起来,然后把它们拆开,你就可以看到这些工具在做什么。有时它们会留下一个占位符来填充,有时它们会用另一个/其他指令替换指令。修改当然是链接特定的,链接在另一个地方或其他项目中。链接器可能会选择其他解决方案(尤其是近外部与远外部)