gpt4 book ai didi

assembly - 基本 assembly 程序

转载 作者:行者123 更新时间:2023-12-04 18:22:28 26 4
gpt4 key购买 nike

我想编写我的第一个汇编程序。我在论文上做了一些程序,但这是我第一次使用编译器。我正在使用 ideone .我的程序很简单,
翻译 A = 5 - A到 assembly

NEG A
ADD A, 5

现在我想运行这个程序并检查它。我如何用编译器做到这一点?请帮帮我。谢谢

最佳答案

这不是很有效的 8086 汇编语言。至少,它不是我所知道的任何汇编语法。

  • 一方面,8086 寄存器的名称有两个字母(它们被命名为 AX、BX、CX、DX、BP、SP、SI 和 DI..加上一些不能用于数学)。
  • 如果是 A是一个内存位置,您需要在某处为它贴上标签。而且你需要让汇编器知道它应该是一个字指针,因为你没有把它放在寄存器中。 (寄存器大小可以使指针语义明显,但您在这里没有使用寄存器。:P)

  • 相应的 8086 代码(非常相似)将是
    neg ax
    add ax, 5

    或者,为了内存:
    neg  word [A]
    add word [A], 5

    ... other stuff here ...
    A: resw 1 ; some assemblers say this; others say `dw ?`

    (MASM 有时可以不用括号。我不知道 MASM 语法,所以希望其他人可以清除这部分。哦,这不是几乎所有其他汇编程序做事的方式。:P)

    现在,有了它,您需要一个汇编程序(如 Yasm )将该代码转换为可执行文件。 (不过,您需要更多代码。您在这里所拥有的将无法按原样正确运行。至少,您需要一个 ret 在最后,这样 CPU 就不会偏离轨道。)您可以想象使用编译器并将所有内容嵌入到 __asm 中。 block (或您的编译器的等效项),但如果您使用纯汇编语言编写,您通常不会这样做。这有点像用大锤敲钉子。

    关于assembly - 基本 assembly 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10390081/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com