注册 登录
编程论坛 汇编论坛

[求助]请问这段程序中NOP指令的作用

linhua86 发布于 2006-11-09 15:09, 1126 次点击

; 启动分页机制 --------------------------------------------------------------
SetupPaging:
; 为简化处理, 所有线性地址对应相等的物理地址.

; 首先初始化页目录
mov ax, SelectorPageDir ; 此段首地址为 PageDirBase
mov es, ax
mov ecx, 1024 ; 共 1K 个表项
xor edi, edi
xor eax, eax
mov eax, PageTblBase | PG_P | PG_USU | PG_RWW
.1:
stosd
add eax, 4096 ; 为了简化, 所有页表在内存中是连续的.
loop .1

; 再初始化所有页表 (1K 个, 4M 内存空间)
mov ax, SelectorPageTbl ; 此段首地址为 PageTblBase
mov es, ax
mov ecx, 1024 * 1024 ; 共 1M 个页表项, 也即有 1M 个页
xor edi, edi
xor eax, eax
mov eax, PG_P | PG_USU | PG_RWW
.2:
stosd
add eax, 4096 ; 每一页指向 4K 的空间
loop .2

mov eax, PageDirBase
mov cr3, eax
mov eax, cr0
or eax, 80000000h
mov cr0, eax
jmp short .3
.3:
nop

ret
; 分页机制启动完毕 ----------------------------------------------------------

请问倒数第二行的这个nop在这里起什么作用,在网上查了很久都查不到,请大家帮帮忙,谢谢

2 回复
#2
菜鸟上路2006-11-09 17:45

nop是空指令,也就是让CPU空转

#3
hu9jj2006-11-09 20:06
使用nop的另一个作用就是在特殊情况下占用内存位置。
1