【问题标题】:what does '$' sign represent in x86 assembly?'$' 符号在 x86 程序集中代表什么?
【发布时间】:2017-04-24 05:34:43
【问题描述】:
STR1 DB "ENTER YOUR STRING : $"
STR2 DB "YOUR STRING IS : $"
INSTR1 DB 30 DUP("$")  

谁能告诉我上面例子中的“$”符号是什么意思?我知道 DUP 运算符会导致值重复多次。例如,

DELTA DB 212 DUP (?)

创建了一个包含 212 个未初始化字节的数组。同样,

GAMMA DW 100 DUP (0)

设置一个包含 100 个单词的数组,每个条目都初始化为 O。但我很困惑 INSTR1 DB 30 DUP("$") 是什么意思?

【问题讨论】:

  • 美元符号表示美元符号的 ASCII 值。它们是字符串或重复的一部分,就像任何字符或值一样。
  • 在 DOS 中,$ 是字符串 IIRC 的结尾,就像 C 和更新的 Microsoft 操作系统中的 ASCII 0。
  • INSTR1 DB 30 DUP("$") 的含义与前面的示例相同,即。括号中表达式值的 30 倍。对于 x86 masm,"$" 将被解码为 ASCII 字符,即字节值 36。所以它相当于INSTR1 DB 30 DUP(36),但是source中的字符$给了源代码的读者一个提示,那行的目的是用DOS字符串终止符值预先填充缓冲区。

标签: assembly x86 masm


【解决方案1】:

'$' 在 MS-DOS int 21h call AH = 09, print string 中标记 ASCII 流的结束;它在 C 中的替代品是 ASCII 零。

如果没有更多上下文,我希望用户输入会覆盖INSTR1,在这种情况下,输入(长度在 0 到 29 之间)将自动由美元符号终止(因此可以使用 @ 打印987654323@).

【讨论】:

    猜你喜欢
    • 2018-03-25
    • 2018-03-27
    • 2015-02-01
    • 2013-09-10
    • 2012-03-01
    • 1970-01-01
    • 2011-07-25
    • 2017-04-17
    相关资源
    最近更新 更多