您现在的位置是:主页 > news > 在百度做个卷闸门网站怎么做/淘宝店铺转让价格表
在百度做个卷闸门网站怎么做/淘宝店铺转让价格表
admin2025/4/29 3:54:26【news】
简介在百度做个卷闸门网站怎么做,淘宝店铺转让价格表,重庆牌联盟官网网站,佛山做公司网站段基地址 32位的地址,如果没开启分页,指的是当前段所在的物理地址,否则是分页前的虚拟地址 G(Granurality) 值为1表示段界限以4K为单位,否则以字节为单位 段界限 描述段的大小size-1,单位由G决定。 D/B 对于代码段…
在百度做个卷闸门网站怎么做,淘宝店铺转让价格表,重庆牌联盟官网网站,佛山做公司网站段基地址
32位的地址,如果没开启分页,指的是当前段所在的物理地址,否则是分页前的虚拟地址
G(Granurality)
值为1表示段界限以4K为单位,否则以字节为单位
段界限
描述段的大小size-1,单位由G决定。
D/B
对于代码段…
段基地址
32位的地址,如果没开启分页,指的是当前段所在的物理地址,否则是分页前的虚拟地址
G(Granurality)
值为1表示段界限以4K为单位,否则以字节为单位
段界限
描述段的大小size-1,单位由G决定。
D/B
- 对于代码段,1表示32位的偏移或操作数,0表示16位的偏移或操作数
- 对于栈段,1表示使用esp,0表示使用sp
L
表示64位,32位下置0
AVL
留给操作系统自己使用的,意义自定义
P
1表示当前段有效,0表示当前段无效
DPL(descriptor priority level)
表示当前段的优先级
S
1表示数据段或代码段,0表示系统段
type
数据段
- 可执行
- 扩展方向
- 可写
- 最近是否访问
代码段
- 可执行
- 是否依从
- 可读
- 最近是否访问
安装GDT
使用指令lgdt m48
,m48为内存地址,在16位下为16位,32位下为32位,其地址里面存有如下数据
4字节addr|2字节size
,size是GDT的大小减去1,addr为GDT所在的内存地址。
小端序
由于小端序有点违反直觉,要注意一下
段选择子
16位的段选择指,高13位表示该段在GDT表中是第一个段描述符,共有213−12^{13}-1213−1个有效的段描述符,开始的第一个是NULL空描述符。
TI
表示是从全局描述符表找,还是从局部描述符表找
RPL
与DPL相关,请求特权级,暂时为0
本代码用到的4个有效段描述符
DPL=0,G=0,S=1,D=1,P=1
- 空描述符,intel要求的,留个非法NULL地址访问用
- 代码段,地址0x00007c00,type=0x8;limit=0x1ff
- 数据段,地址0x00b8000,type=0x2,limit=0xffff
- 栈段, 地址0x00000000, type=0x6,limit=0x7a00,数据向下扩展,栈的特性。有效地址从0x00007c00-0x00007a00,注意,当段属性向下扩展时,处理器检查的是下界,而向上扩展时,检查的是上界,这也就是说,其实地址从0xffffffff-0x00007a00,处理器均不会报错。
times 8 db 0dd 0x7c0001ff,0x00409800dd 0x8000ffff,0x0040920bdd 0x00007a00,0x00409600
[bits 16]mov ax,cs mov ss,axmov sp,0x7c00mov dword [cs:gdt+0x7c02],gdt+0x7c06lgdt [cs:gdt+0x7c00]in al,0x92 ;南桥芯片内的端口 or al,0000_0010Bout 0x92,al ;打开A20climov eax,cr0or eax,1mov cr0,eax ;设置PE位jmp dword 0x0008:flush
[bits 32]
flush:mov cx,0x10 ;加载数据段选择子(0x10)mov ds,cxmov byte [0x00],'P' mov byte [0x02],'r'mov byte [0x04],'o'mov byte [0x06],'t'mov byte [0x08],'e'mov byte [0x0a],'c'mov byte [0x0c],'t'mov byte [0x0e],' 'mov byte [0x10],'m'mov byte [0x12],'o'mov byte [0x14],'d'mov byte [0x16],'e'mov byte [0x18],' 'mov byte [0x1a],'O'mov byte [0x1c],'K'mov cx,0x18 ;加载堆栈段选择子mov ss,cxmov esp,0x7c00mov ebp,esp ;保存堆栈指针 push byte '.' ;压入立即数(字节)sub ebp,4cmp ebp,esp ;判断压入立即数时,ESP是否减4 jnz loop pop eaxmov [0x1e],al ;显示句点
loop:jmp loopgdt:dw 31dd 0times 8 db 0dd 0x7c0001ff,0x00409800dd 0x8000ffff,0x0040920bdd 0x00007a00,0x00409600times 510-($-$$) db 0db 0x55,0xaa