【发布时间】:2020-07-30 07:56:11
【问题描述】:
我是汇编语言的新手,我看不懂这段代码。
mov byte [esp + 0x1], al
我不确定,但是这一行将 al 值设置在 esp+0x1 字节位置对吗?在我的例子中,al 从不用于:
'mov al, <value>'
如果al没有值,第一行设置的值是多少?
【问题讨论】:
我是汇编语言的新手,我看不懂这段代码。
mov byte [esp + 0x1], al
我不确定,但是这一行将 al 值设置在 esp+0x1 字节位置对吗?在我的例子中,al 从不用于:
'mov al, <value>'
如果al没有值,第一行设置的值是多少?
【问题讨论】:
我不确定,但这行将 al 值设置在 esp+0x1 字节位置对吗?
没错。就像[esp + 1] = al
al 是一个寄存器,一个寄存器总是有一个值。可能你没有设置它,但可能其他功能之前使用过它。
【讨论】:
al 的值
movzx eax, byte [mem] 的操作来有效地加载一个字节,而没有部分寄存器写入问题?因为 movzx 加载/字节存储是 GCC 通常复制字节的方式。