我正在学习x86
语法。
我偶然发现了这个命令,我似乎不确定它的作用:
cmpl $0x0,%cs:0x6574
我知道cmp
只是比较差异并设置标志。而l
表示正在比较无符号值。
我的问题是:
我们在比较什么?
0x0
中的值与%cs:0x6574
的值是什么?
cs寄存器包含一个地址,我应该向它添加0x6574并提取值吗?类似的东西:
mem[cs+0x6575]
提前致谢!
答案 0 :(得分:1)
假设这是来自实模式代码,则它是默认的段覆盖。因此,而不是隐式DS使用CS段。 在实模式下,地址计算有点不同。段的值首先乘以16,然后加上偏移量。
所以在你的记谱中它将是
mem[16*cs+0x6575]