佛山网站建设价格多少,推销网站建设,宁波三盛网络网站建设,重庆企业展厅设计本文记录的是之前四篇文章所对应的汇编代码。四篇文章分别是#xff1a;
【OS学习笔记】十二 现代处理器的结构和特点【OS学习笔记】十三 保护模式一#xff1a;全局描述符表#xff08;GDT#xff09;【OS学习笔记】十四 保护模式二#xff1a;段描述符【OS学习笔记】十…本文记录的是之前四篇文章所对应的汇编代码。四篇文章分别是
【OS学习笔记】十二 现代处理器的结构和特点【OS学习笔记】十三 保护模式一全局描述符表GDT【OS学习笔记】十四 保护模式二段描述符【OS学习笔记】十五 保护模式三保护模式下的内存访问机制
按照顺序将上述四篇文章对应的内容学完方能看懂本篇文章的汇编代码。
更加详细的介绍请参考数据《X86汇编语言-从实模式到保护模式》第11章内容。
代码如下 ;代码清单11-1;文件名c11_mbr.asm;文件说明硬盘主引导扇区代码 ;;设置堆栈段和栈指针 mov ax,cs mov ss,axmov sp,0x7c00;计算GDT所在的逻辑段地址 mov ax,[cs:gdt_base0x7c00] ;低16位 mov dx,[cs:gdt_base0x7c000x02] ;高16位 mov bx,16 div bx mov ds,ax ;令DS指向该段以进行操作mov bx,dx ;段内起始偏移地址 ;创建0#描述符描述符是8字节的它是空描述符这是处理器的要求mov dword [bx0x00],0x00mov dword [bx0x04],0x00 ;创建#1描述符保护模式下的代码段描述符mov dword [bx0x08],0x7c0001ff mov dword [bx0x0c],0x00409800 ;创建#2描述符保护模式下的数据段描述符文本模式下的显示缓冲区 mov dword [bx0x10],0x8000ffff mov dword [bx0x14],0x0040920b ;创建#3描述符保护模式下的堆栈段描述符mov dword [bx0x18],0x00007a00mov dword [bx0x1c],0x00409600;初始化描述符表寄存器GDTRmov word [cs: gdt_size0x7c00],31 ;描述符表的界限总字节数减一 因为一共4个段代码段数据段栈段与空段 lgdt [cs: gdt_size0x7c00] ;从gdt_size读取6字节的话就包括了4字节的段线性地址和2字节的偏移地址in al,0x92 ;南桥芯片内的端口 or al,0000_0010Bout 0x92,al ;打开A20cli ;保护模式下中断机制尚未建立应 ;先禁止中断 mov eax,cr0or eax,1mov cr0,eax ;设置PE位直接导致处理器的运行进入保护模式;以下进入保护模式... ...jmp dword 0x0008:flush ;16位的描述符选择子32位偏移;清流水线并串行化处理器 [bits 32] flush:mov cx,00000000000_10_000B ;加载数据段选择子(0x10)mov ds,cx;以下在屏幕上显示Protect mode OK. mov byte [0x00],P mov byte [0x02],rmov byte [0x04],omov byte [0x06],tmov byte [0x08],emov byte [0x0a],cmov byte [0x0c],tmov byte [0x0e], mov byte [0x10],mmov byte [0x12],omov byte [0x14],dmov byte [0x16],emov byte [0x18], mov byte [0x1a],Omov byte [0x1c],K;以下用简单的示例来帮助阐述32位保护模式下的堆栈操作 mov cx,00000000000_11_000B ;加载堆栈段选择子mov ss,cxmov esp,0x7c00mov ebp,esp ;保存堆栈指针 push byte . ;压入立即数字节sub ebp,4cmp ebp,esp ;判断压入立即数时ESP是否减4 jnz ghalt pop eaxmov [0x1e],al ;显示句点 ghalt: hlt ;已经禁止中断将不会被唤醒 ;-------------------------------------------------------------------------------gdt_size dw 0gdt_base dd 0x00007e00 ;GDT的物理地址 在主引导扇区之后times 510-($-$$) db 0db 0x55,0xaa笔记记得不是很全如果有不懂的可以加我联系方式一起交流。
学习探讨加个人 qq1126137994 微信liu1126137994