【发布时间】: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字符串终止符值预先填充缓冲区。