当前位置: 代码迷 >> 汇编语言 >> 这段汇编代码是什么意义
  详细解决方案

这段汇编代码是什么意义

热度:418   发布时间:2016-05-02 04:43:15.0
这段汇编代码是什么意思?

_asm
{
cli
move eax,cr0
and eax,not 10000h
mov cr0,eax

cli是清中断允许位
not 10000h是什么意思啊?非10000H吗?
------解决方案--------------------
not在这里表示按位取反,和~10000h一个意思,and eax,not 10000h就是把eax的第16位清零。
整段代码是把cr0寄存器的第16位清零。cr0的第16为是写保护位,清零则允许处理器向标记为只读属性的内存页写入数据。
------解决方案--------------------
10000h是十六进制数,第16位为1,其它为0,位取反后第16为就是0,其它位为1,与操作后(and指令),和0与的位为0,和1与的位不变,因此eax的16位会被清零。
引用:
Quote: 引用:

not在这里表示按位取反,和~10000h一个意思,and eax,not 10000h就是把eax的第16位清零。
整段代码是把cr0寄存器的第16位清零。cr0的第16为是写保护位,清零则允许处理器向标记为只读属性的内存页写入数据。

感谢解答。
再请教下and eax,not 10000h就是把eax的第16位清零。
我知道 h是16位数,为什么1000h是把第16位清零呢?
  相关解决方案