gpt4 book ai didi

assembly - ASM 8086 : How is coding with multiple code segments different from coding with one code segment?

转载 作者:行者123 更新时间:2023-12-03 06:33:38 32 4
gpt4 key购买 nike

我是一名高中生,今年开始学习汇编。

我目前正在制作 Pacman 克隆作为我的最终项目。
我遇到的唯一问题是我的代码很大,*.exe 文件几乎有 64KB。

所以我的问题是,如果我转向模型介质,我需要做什么才能使我的代码与额外的代码段一起工作?

我认为我需要使用 Icall 而不是 call,并更新程序,因为现在每次我调用它们时,段和 ip 都会被推送,但是我还需要做什么吗?

最佳答案

如果您在具有多个代码段的模型中工作,则每个代码指针都会变成一个 32 位指针。这意味着:

  • 您需要使用call farret far而不是callret(这是汇编器可能会为你做)
  • call far 将四字节返回地址压入堆栈,因此您需要调整获取参数的偏移量
  • 函数指针需要是 32 位,因为它们还需要包含代码段

就您的目的而言,仅使用小型模型可能就足够了,即一段用于代码,一段用于数据和堆栈。这样,您的可执行文件的大小最多可达 128 kB。小模型与微型模型非常相似,因为您基本上可以忽略分段,除非您需要从文本段读取/写入数据。

关于assembly - ASM 8086 : How is coding with multiple code segments different from coding with one code segment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43666413/

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