【问题标题】:emu8086 complains about "Unterminated string" with a long string in a DBemu8086 抱怨数据库中带有长字符串的“未终止字符串”
【发布时间】:2018-03-04 12:49:27
【问题描述】:

我是 8086 汇编编程的新手,我有一个问题。

我有一个大小约为 1400 个字符的字符串。当我试图将其定义为:

.data
mystring DB '(string with 1400 characters)'

我遇到了一个错误

“未终止的字符串”。

我正在使用emu8086 模拟器。我认为我的字符串不适合DB。有什么办法可以将大字符串保存在字节中?

【问题讨论】:

  • 我没用过emu8086。可能是字符串实际上太长或者您没有转义某些内容(假设单引号对 emu8086 来说是可以的)。如果真的是长度问题,只需将字符串拆分成多个db 声明即可。
  • emu8086 汇编器可能有行长限制。正如玛格丽特布鲁姆已经说过的,你需要拆分你的字符串。
  • @MargaretBloom 我想我需要拆分字符串谢谢
  • @fuz 我认为这是最坏的情况,但我认为我应该这样做
  • 请注意,您需要的唯一更改是拆分。它将在内存中完全相同,因此无需更改代码。

标签: assembly x86-16 emu8086


【解决方案1】:

我已经手动检查过了,看起来最大长度是 1010。

也可以在有关 emu8086 的链接之一上找到:

DUP 操作数的扩展不能超过 1020 个字符! (上一个例子的扩展是 13 个字符),如果你需要声明巨大的数组,将它分成两行(你将在内存中得到一个巨大的数组)。 - source

但正如 cmets 中建议的那样,您可以将两条或多条彼此相邻的线放在内存中,它们将是连续的,布局与使用一根大线一样。

mystring      DB '<1010>*A'
mystring_cont DB 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAA'

【讨论】:

    猜你喜欢
    • 2012-01-29
    • 2019-10-17
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 2020-09-02
    相关资源
    最近更新 更多