【问题标题】:Assembly al used in mov [esp], al [duplicate]用于 mov [esp]、al [重复] 的汇编 al
【发布时间】:2020-07-30 07:56:11
【问题描述】:

我是汇编语言的新手,我看不懂这段代码。

mov byte [esp + 0x1], al

我不确定,但是这一行将 al 值设置在 esp+0x1 字节位置对吗?在我的例子中,al 从不用于:

'mov al, <value>'

如果al没有值,第一行设置的值是多少?

【问题讨论】:

    标签: assembly x86


    【解决方案1】:

    我不确定,但这行将 al 值设置在 esp+0x1 字节位置对吗?

    没错。就像[esp + 1] = al

    al 是一个寄存器,一个寄存器总是有一个值。可能你没有设置它,但可能其他功能之前使用过它。

    【讨论】:

    • 感谢您的精确!如果我没有设置它,它的值是 0x0 ?
    • 没有。当您将其或任何其他功能设置为 0x0 时,其值为 0x0。当你没有设置时,你永远不能依赖al 的值
    • @dl11:你知道 AL 是 EAX 的低字节,对吧?较早的指令是否执行了类似movzx eax, byte [mem] 的操作来有效地加载一个字节,而没有部分寄存器写入问题?因为 movzx 加载/字节存储是 GCC 通常复制字节的方式。
    • @PeterCordes 好评。忘记提了
    • @PeterCordes 是的,我之前就收到过这条指令!我忘记了这个细节:) 谢谢你们的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多