You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MASM中如何将数值常量嵌入字符串而非运行时嵌入?

在MASM中编译时将数值常量嵌入字符串的实现方法

可以实现,但你当前的写法有问题——直接把数值常量放在BYTE定义里,会把常量的ASCII码值而非数字字符嵌入字符串。比如LOWER_BOUND=50对应的ASCII字符是冒号(:),UPPER_BOUND=100对应的是小写字母d,输出的提示会完全不符合预期。

要在编译时把数值常量转换成字符串嵌入,需要用到MASM预处理器的字符串化功能,具体有两种常用方式:

方法1:使用%STR宏展开常量为字符串

.data

LOWER_BOUND = 50
UPPER_BOUND = 100

promptMessage  BYTE  "Please enter a number between ", 
                     %STR(LOWER_BOUND), " and ", 
                     %STR(UPPER_BOUND), ".",10,13,0

方法2:用CATSTR宏拼接整个字符串

.data

LOWER_BOUND = 50
UPPER_BOUND = 100

promptMessage  BYTE  CATSTR(
                     "Please enter a number between ",
                     %STR(LOWER_BOUND),
                     " and ",
                     %STR(UPPER_BOUND),
                     ".",10,13,0
                     )

这两种方式都会在编译阶段由MASM预处理器完成数值到字符串的转换和拼接,生成最终的字节数组,完全不需要运行时额外处理。

内容的提问来源于stack exchange,提问作者Iain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 06:45:33