【问题标题】:How to declare integer expression constant in x86 Assembly MASM如何在 x86 程序集 MASM 中声明整数表达式常量
【发布时间】:2015-10-02 04:15:59
【问题描述】:

尝试声明整数表达式常量时遇到语法问题。

我有一个常量,一个名为MAXDWORD,其值为30。我想声明另一个名为MINDWORD,它是30 的15%、MAX*0.154。我试过MIN DWORD MAX*0.15;但这没有奏效。

我需要使用DWORD,因为我必须将值移动到eax 寄存器。感谢您的帮助!

【问题讨论】:

  • 如果您使用来自数据地址的加载,而不是 mov eax, imm32,如果您的常量适合 8 位,则可以使用 movzx eax, byte ptr [max]。 (movsx 改为符号扩展)。同样对于向量常量,pmovzx 如果不需要直接用作内存操作数,可以节省空间。

标签: assembly x86 masm


【解决方案1】:

您可以乘以 15 再除以 100,而不是乘以 0.15。但是,这样的方法行不通:

foo DWORD 50
bar DWORD (foo*15)/100

因为汇编器需要这个值是常数。所以你必须这样做:

FOO_VALUE equ 50
foo DWORD FOO_VALUE
bar DWORD (FOO_VALUE*15)/100

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多