Assembly 我从哪里开始制作自己的汇编程序?

Assembly 我从哪里开始制作自己的汇编程序?,assembly,x86,Assembly,X86,我正在尝试制作自己的汇编程序,如NASM、MASM等,但我不知道从哪里开始。我了解x86汇编,但我不太了解汇编程序是如何工作的。我应该从哪里开始?谷歌在这件事上帮不了我的忙。有什么网站对学习这一点有用吗?不要将汇编程序与链接器混淆,它是一个做两件事的程序: 它用实际地址替换标签 它将技术名称转换为操作码,并将其存储在所谓的对象文件中。 您只需要一个查找表,将名称映射到操作码。要做到这一点应该非常简单。不要将汇编程序与链接器混淆,它是一个可以做两件事的程序: 它用实际地址替换标签 它将技术名称转换

我正在尝试制作自己的汇编程序,如NASM、MASM等,但我不知道从哪里开始。我了解x86汇编,但我不太了解汇编程序是如何工作的。我应该从哪里开始?谷歌在这件事上帮不了我的忙。有什么网站对学习这一点有用吗?

不要将汇编程序与链接器混淆,它是一个做两件事的程序:

它用实际地址替换标签 它将技术名称转换为操作码,并将其存储在所谓的对象文件中。
您只需要一个查找表,将名称映射到操作码。要做到这一点应该非常简单。

不要将汇编程序与链接器混淆,它是一个可以做两件事的程序:

它用实际地址替换标签 它将技术名称转换为操作码,并将其存储在所谓的对象文件中。
您只需要一个查找表,将名称映射到操作码。这样做应该很简单。

您需要将汇编程序指令转换为机器代码,计算地址,并将所有内容放入目标文件中。你不需要一次完成所有的事情

如果您正在寻找一个操作码表,一个好的起点是or。当然,也可以使用英特尔和amd的官方文档


对于对象文件格式,它取决于您希望对代码执行的操作。正如Alex指出的那样,纯二进制只能用于引导扇区、内核或DOS*.com程序。对于其他所有内容,您需要在目标文件中提供重新定位信息。

您需要将汇编指令转换为机器代码,计算地址,并将所有内容放入目标文件中。你不需要一次完成所有的事情

如果您正在寻找一个操作码表,一个好的起点是or。当然,也可以使用英特尔和amd的官方文档


对于对象文件格式,它取决于您希望对代码执行的操作。正如Alex指出的那样,纯二进制只能用于引导扇区、内核或DOS*.com程序。对于其他所有内容,您都需要在对象文件中提供重新定位信息。

您是否可以发布一条评论,而不是无声地投票关闭?另外,为什么不让我将其标记为“汇编程序”?您中的一位是否会说为什么要投票关闭?您正在构建的体系结构是什么,或者完全是自定义的?我不是那个想关上它的人,BTW@JoeCoderx86,我将添加该标记。您是否可以发布一条评论,而不是无声地投票关闭?另外,为什么不让我将其标记为“汇编程序”?你们中的一位不会说为什么要投票关闭吗?您正在构建的体系结构是什么,还是完全自定义的?我不是那个想关上它的人,BTW@JoeCoderx86,我会加上那个标签。是的,但我在找一张桌子。谷歌帮不上忙。这就是我需要的。编辑:但这不是我所需要的全部。是的,但我在找一张桌子。谷歌帮不上忙。这就是我需要的。编辑:这不是我所需要的全部,尽管.DOS.COM程序没有重新定位信息,因为它们占用了一个段,并且开始时所有段寄存器都指向它。通过虚拟到物理地址转换,您同样可以避免每个进程的主模块在其自己的虚拟地址空间中重新定位,就像.COM段一样。@Alex:谢谢,我忘记了.DOS.COM程序没有重新定位信息,因为它们占用了一个段,并且开始时所有段寄存器都指向它。通过虚拟到物理地址转换,您同样可以避免每个进程的主模块在其自己的虚拟地址空间中重新定位,就像.COM段一样。@Alex:谢谢,我忘了这一点。